기글 하드웨어 뉴스 리포트
출처: : | http://pc.watch.impress.co.jp/docs/colum...76852.html |
---|
2세대로 진입한 PS4의 SDK
PS4의 시스템 소프트웨어는 2.0으로 바뀌며 기능이 대폭 확장되었습니다. 여기에 맞춰 소프트웨어 개발자용 SDK도 2세대로 강화됐습니다. SDK 2.0부터는 시스템 소프트웨어 2.0에서 추가된 새 기능을 쓸 수 있습니다.
구체적으로는 네트워크를 통한 협동 플레이를 가능하게 하는 Share Play나, 시스템 소프트웨어의 배경 화면이나 아이콘을 커스터마이즈 할 수 있는 PlayStation 4 테마, 동영상 편집 프로그램인 SHAREfactory, 게임 플레이 동영상을 유튜브에 올릴 수 있는 YouTube Share 등의 기능을 SDK에서도 지원하게 됐습니다.
이러한 버전 2.x 세대의 SDK 기능은 9월에 개최된 게임 개발자 컨퍼런스 CEDEC에서 공개됐는데, 당시엔 PS4 SDK의 다른 흥미로운 라이브러리에 대해서도 설명했습니다. 특히 SCE-소니 컴퓨터 엔터테인먼트-만의 특징이 나오는 분야가 이미지 인식 계열의 라이브러리입니다.
다양한 이미지 인식 라이브러리를 제공
PS4는 옵션으로 2개의 카메라가 달린 PS4 카메라를 판매합니다. SCE는 이 카메라에 맞춘 이미지 인식 SDK를 제공하고 있습니다. 2개의 카메라에서 피사체의 위치의 심도(Depth)정보를 얻는 libDepth 라이브러리, 이미지를 인식계의 Vision Library 등이 있습니다. 이들 라이브러리에 따라 PS4에서는 카메라를 이용해 다양한 인식 처리를 쉽게 쓸 수 있게 됩니다.
libDepth 라이브러리는 PS4의 옵션 카메라를 사용한 위치 정보 생성 라이브러리입니다. 2개의 카메라로 촬영한 영상을 통해 카메라 간의 시차를 얻어 물체까지의 거리를 산출합니다. 거리(=심도/Depth) 데이터 생성은 소프트웨어 처리입니다. Xbox One의 키넥트처럼 하드웨어로 구현한 심도 탐지 장치나 로직 회로는 없기 때문입니다.
일반적으로 2개 카메라에서 데이터를 얻어 거리를 측정하는 과정을 CPU의 소프트웨어에서 처리하게 되면 딜레이가 늘어나 실시간 처리가 힘듭니다. 그래서 libDepth에서는 연산 능력이 높은 GPU 코어에 거리 계산을 맞겨 깊이 관련 데이터를 생성하는 지연 시간을 1.5ms에 정도로 억제했습니다. 60fps 화면 표시의 경우 1프레임당 시간은 16.7ms이니 libDepth에 의한 심도 탐지는 1프레임에 걸리는 시간의 약 1/10으로 실행됩니다.
데모 세션에서는 카메라에서 640×400의 이미지 데이터를 받는 것부터 160×100 해상도의 심도 데이터로 출력하는 데모를 공개해 탐지 시간이 1.5ms까지 줄어들었음을 시연했습니다.
PS4 APU를 활용하는 소프트웨어 처리의 장점은 유연하고 확장이 가능하다는 것입니다. 특수한 심도 탐지 하드웨어를 쓰지 않기에 가격도 저렴합니다. 하지만 단점도 있습니다.
PS4의 libDepth는 카메라의 이미지를 사용해 심도를 계산하기에 마이크로소프트 키넥트의 심도 측정과는 다르게 카메라 광원에서 따로 탐지를 하진 않습니다. 현재 키넥트는 카메라에서 쬐는 적외선을 반사시켜 심도 측정에 사용하기에 측정하는 장소의 밝기에 영향을 받지 않습니다. 그에 비해 PS4의 libDepth의 처리는 카메라의 이미지 정보만 사용하기에 어두운 곳에서는 심도 측정의 정확도가 떨어진다는 약점이 있습니다.
초기의 SDK에선 10lux 정도의 조명 가지고선 실용적인 깊이 데이터를 얻지 못했다고 합니다. 10lux는 매우 어두운 광량이긴 하나 유럽의 거실에선 이 정도 밝기에서 게임 플레이를 하는 경우도 많으니 문제가 됩니다. 그러나 현재의 SDK에선 알고리즘이 개선돼 충분한 심도를 계산할 수 있다네요.
알고리즘의 개선으로 어두운 곳에서도 성능이 대폭 업그레이드
UI에 사용하기 쉬운 피크 트래커
libDepth는 카메라 기반의 사용자 인터페이스에 응용이 가능합니다. 하나는 손을 검출하고 추적하는 것. 사용자가 내민 손의 심도 정보가 가장 절정에 달하는 순간이 언제인지를 추적해 탐지합니다. 즉 심도 데이터에서 가장 두드러지는 부분을 탐지해 추적합니다. 이 경우에는 최대 값만 찾아내면 되니까 탐지가 매우 쉽다는 장점이 있습니다.
최대 값을 탐지하는 건 단순하기에 어두워도 탐지가 가능합니다. CEDEC에서 강연한 토요 테이지(주식회사 소니 컴퓨터 엔터테인먼트)는 "최대 값만 추적한다면 방의 조명을 다 끄고 TV에서 나오는 조명만으로도 알아낼 수 있습니다. 높은 프레임 레이트로 안정적인 값을 낼 수 있으며 매우 부드러운 사용자 인터페이스가 될 것"이라고 설명했습니다. 손을 포인터로 사용해 제스처를 취하면 매우 쉽게 유저 인터페이스로 쓸 수 있습니다.
UI로 쓸 수 있는 또 다른 라이브러리 기능은 헤드 트래커입니다. 깊이 정보를 이용해 머리의 크기와 형태를 감지해 추적합니다. 얼굴을 인식하는 수준이 아니라 단순히 머리의 형태와 크기를 판단하는 것으로, 상당히 과격하게 머리를 움직여도 확실하게 추적 가능했다네요.
머리의 형태를 추적해 추적 성능이 높은 처리를 실현
AR에서도 응용할 수 있는 화상 인식 라이브러리
SCE이 제공하는 카메라 계열의 라이브러리에는 심도를 탐지하는 libDepth 만 있는 게 아닙니다. 이미지를 인식하는 Vision Library에 다양한 라이브러리가 제공됩니다.
얼굴을 인식하는 libFace는 사람의 얼굴 부분을 인식합니다. libDepth의 머리를 추적하는 라이브러리가 심도 데이터로 머리의 형태를 인식하는 데 비해 libFace는 머리의 각 요소를 이미지에서 인식합니다. 사용자 얼굴의 위치나 방향, 그리고 눈, 코, 입 등의 각 부분, 미소 같은 표정이나 연령, 성별 등의 속성도 인식합니다. SCE는 PS3 시절부터 꾸준히 얼굴을 인식하는 시연을 했지만 PS4의 비전 라이브러리에서 그 결신을 맺었습니다. 사용자 얼굴의 특징을 추출해 개인을 특정할 뿐 아니라, 인식한 데이터를 사용해서 사용자와 얼굴이 비슷한 게임 캐릭터를 자동 생성하는 등 게임에서 사용하는 것도 가능하고, 표정을 통해 사용자의 상태를 탐지하고 게임에 반영하는 걸 염두에 두고 있다네요.
libDepth의 추적 장치는 심도 데이터를 받아 손 끝을 탐지하지만 이미지를 받아 손의 형태를 인식하는 라이브러리도 libHand란 이름으로 제공됩니다. 주먹이나 손바닥 등의 형태까지 인식할 수 있다네요. 이로서 보다 정확하게 손을 인식할 수 있습니다.
재미있는 라이브러리로는 평면의 형태를 검지하는 libSmart가 있습니다. 카메라 영상에서 평면 물체를 인식하고 그 위치와 기울기 등의 자세의 데이터를 산출합니다. libSmart는 실제로 AR(증강 현실)계열의 라이브러리입니다. 예를 들면 실제 세계의 평면 바닥 위치를 탐지해 바닥 위에서 움직이는 가상 AR 캐릭터의 정확한 동작을 생성하고 카메라 영상에 표시할 수 있습니다.
이 라이브러리의 응용 분야로 소개한 건 AR 다이나믹 라이팅이라 불리는 기술입니다. 카메라에서 스캔한 실제 이미지에 AR의 CG를 겹쳐 리얼한 이미지를 만들어 내는 방법입니다. AR에 표시되는 오브젝트의 그림자가 실제 세계의 빛과 다르다면 AR 화면에 위화감이 생깁니다. CG가 붕 떠있는 것처럼 보이는 부자연스러운 영상입니다.
그래서 실제 세계의 이미지에서 실존하는 광원의 위치나 강도, 색깔 등을 추정해서 그것을 실제 세계의 이미지에 겹치는 AR의 CG에 반영합니다. 실제 세계에 맞춴 광원으로 쉐이딩해 실제 이미지와 위화감 없이 융화되는 AR이 가능합니다. 다만 이것도 처리가 무거우면 사용하기 어렵습니다. 그래서 매우 간단하고 효율적인 알고리즘을 고안했다고 합니다.
구체적으로는 현실 세계의 바닥을 기울기까지 포함해 탐지한 후, 바닥을 3x3으로 분할해 평균을 잡아 밝기가 높은 쪽에 광원이 있다고 판단합니다. 또 색상의 평균을 내서 광원의 색으로 간주합니다. 실제 환경에서는 조명을 쉽게 탐지하기 위해 손전등으로 바닥을 비추도록 사용자에게 요청하게 됩니다.
PS4의 APU
또 PS3에서는 CPU와 GPU의 메모리가 물리적으로 분리됐으나 PS4에선 통합 메모리를 사용하면서 CPU와 GPU가 자유롭게 메모리를 사용할 수 있음을 강조했습니다. "PS4에서는 메모리의 어떤 부분이건 모두 빠르게 쓸 수 있습니다. 이를 위해 비싸지만 GDDR5를 썼습니다. 이것이 PS4의 장점입니다"라고도 말했습니다.
그리고 APU 기반 아키텍처의 PS4는 CPU와 GPU가 가상 메모리 공간을 공유하고 있으며 CPU와 GPU사이의 데이터의 교환이 포인터에서 가능합니다. 그래서 CPU와 GPU의 두 물리 시뮬레이션을 연계시키기가 쉬워집니다. 또 AMD GPU 아키텍처에서는 물리 콤퓨트와 그래픽 렌더링의 혼합 실행이 가능하고 게임에서 쓰기 쉽다는 장점이 있습니다.
음성 인식 라이브러리도 제공
이 밖에 PS4는 음성 인식 라이브러리인 PSVR도 SDK로 제공합니다. 이것은 카메라를 지향성을 갖춘 마이크에 대응시키는 라이브러리입니다. 이것도 물리 시뮬레이션 엔진처럼 자체 개발한 라이브러리입니다.
음성 명령에 최적화되어 있으며 개발자는 인식시키고 싶은 단어를 미리 정의하게 됩니다. 즉 특정 음성을 무슨 단어로 인식해야 할지를 정의합니다. 마이크에서 입력된 음성 데이터를 받아 인식된 단어를 들려주는 구조입니다. 이를 위한 툴도 SDK로 제공합니다.
여기에 대응하는 언어는 일본어, 미국 영어, 영국 영어, 프랑스어, 이태리어, 독일어 스페인어가 있습니다. 서버에서 인식하는 게 아니라 로컬에서 100% 동작합니다. PS4 시스템 소프트웨어 자체의 음성 명령 인식에 사용되는 것이 이 라이브러리입니다.
PS의 발전사는 라이브러리 축적의 역사이기도 합니다. PS가 출범했던 당시에 소니는 라이브러리를 비롯한 소프트웨어 개발력이 매우 약했습니다. PS2에서도 라이브러리는 엉망이었습니다. PS3돠 Xbox 360에 비해 라이브러리가 부족하다는 지적이 많았습니다. 그러나 PS4가 되면서 라이브러리를 우선 개발할 수 있게 됐습니다.
안켠지 2달이 넘었는데... 오랜만에 한번 켜서 업데이트 좀 해줘야겠군요.