지난 7월 28일, AMD 베테랑 엔지니어 해경춘(解庆春)은 CGDC에서 'VR 파노라마 수요에 기반한 실시간 파노라마 접합 기술과 솔루션'이라는 주제로 키노트 강연을 진행했다.


7월 27일-30일, 2017년 차이나조이(중국국제디지털호동오락전람회)가 상해신국제박람중심에서 개최됐다. 그 일환으로 CGDC(중국 게임 개발자 컨퍼런스)가 인근에 위치한 캘리 호텔에서 동시 진행됐다.

7월 28일 오후, AMD 베테랑 엔지니어 해경춘은 CGDC에서 <파노라마 수요에 기반한 실시간 파노라마 접합 기술과 솔루션>이라는 주제의 강연을 펼쳤다. 현장에 참석한 수많은 관계자들은 AMD의 파노라마 접합 솔루션 Loom과 백그라운드 기술에 대해 경청했다.

아래는 AMD 엔지니어의 강연 내용을 정리한 글이다. 많은 개발자들에게 도움이 되길 희망한다.





■ VR의 바람을 타고... 파노라마 영상 다시 주목을 받다

최근 2년간 VR은 업계에서 가장 핫한 이슈였습니다. 투자업계는 그에 걸맞은 신뢰를 보여줬고, 시장에는 역시나 수많은 VR 업체가 생겨났습니다. 그들은 모두 VR이 이 광활한 시장에서 하나의 바람길이 될 것이라 생각한 거죠.

실제로 시장에는 수많은 VR 하드웨어가 쏟아져 나왔습니다. 그러나 VR의 가장 근본적이고 고질적인 문제는 여전히 남아있었습니다. 바로 즐길만한 콘텐츠가 부족하다는 거죠.

제가 오늘 말씀드릴 파노라마 카메라로 찍은 360도 전방위 영상은 VR에 매우 적합한 콘텐츠입니다. 사용자들은 헤드기어 하나를 쓰는 것만으로 360도의 파노라마 영상을 즐길 수 있습니다. 신석기시대의 동굴 벽화부터 IMAX와 VR/AR까지, 인류는 어쩌면 꽤나 오랜 시간 360도의 예술을 즐겨왔는지도 모르겠습니다.

VR의 급격한 발전에 힘입어, 360도 파노라마 영상이 다시금 주목을 받았습니다. 개발자들은 생각했죠. "오프라인 동영상, 오프라인에서 합성/접합한 파노라마 영상 파일을 스트리밍에 활용할 수는 없을까?"

이러한 요구는 아주 옛날부터 있어왔습니다. 그러나 이러한 영상 접합 기술은 당시 컴퓨터 계산 능력의 부족으로 실현되지 못했죠. 하지만 오늘날, 강력한 컴퓨터 계산 능력(CPU, FPGA, GPU 등) 덕에 영상의 실시간 접합이 가능해졌습니다. 그래서 오늘 저는 여러분에게 360도 전방위 파노라마 접합 기술에 대해 알려드리려고 합니다.

먼저, 기술적인 측면에서 과연 파노라마 이미지란 무엇인지부터 알아보도록 합시다. 파노라마 이미지란 하나의 고정된 관찰점으로부터 수평방향의 360도, 수직방향의 180도의 자유관측으로 이루어지며 간략화된 파노라마는 수평방향 360도 관측만을 제공합니다.

파노라마 영상 접합 기술에 관해 설명하자면, 파노라마 이미지 접합(Image Stitching)이란 실제 영상 이미지를 이용하여 파노라마 공간을 구성하는 기술입니다.

최근 몇 년간, 파노라마 카메라는 격동의 시기를 겪었습니다. 시장에는 각양각색의 360도 파노라마 카메라가 출시되었고, 각기 다른 성능과 타겟층을 가지고 있었습니다. 또한, 각각 렌즈의 수도 달랐죠. 듀얼 렌즈 리코 카메라, 4중 렌즈 DETU 카메라, 17중 렌즈를 지원하는 surround360, 그리고 최대 31중 렌즈를 지원하는 AMD Loom 솔루션 등등...


위의 상품들을 사용해보고 고해상도의 360도 파노라마 영상을 경험해본 분이라면 360도 접합 기술은 이미 기본적으로 해결된 상태라고 느꼈을지도 모르겠습니다. 하지만 실제론 그렇지 않습니다.

물론 지난 십수 년간 선구자들이 만들어온 수많은 성과들은 충분히 의미가 있었습니다. 파노라마 접합 기술에 관한 많은 문제들을 해결하고 긍정적인 성적을 창출해냈죠. 다만, 소프트/하드웨어 전반에 아직 해결해야 할 문제들이 산재해있는 게 사실입니다.

하드웨어 측면에서 살펴보자면, 많은 문제들이 아직도 해결되지 못한 상태입니다. 예를 들어, 파노라마 카메라의 에너지 효율성 문제, 발열 문제, 셔터 동기화 문제, 카메라 렌즈 왜곡 문제, 카메라 덜컥거림 문제, 많은 카메라를 사용하려면 고대역폭이 필요한 문제, 끊임없이 발생하는 틈과 그 틈을 봉합하기 위해 발생하는 계산 지연 등의 문제 등등

소프트웨어는 그나마 형편이 나은 편이죠. 파노라마 카메라의 소프트웨어 접합에 관한 이론과 프레임은 비교적 발전한 상태입니다. 프레임은 기본적으로 2007의 프레임인 autostitch를 사용합니다. 문제는 데이터 수집과 전송 과정에서 지연이 발생하는 문제, 접합 프로세스의 처리과정에 비교적 긴 시간이 걸리는 문제 등이 해결되지 않은 상태라는 거죠.

하드웨어 측면에서의 문제는 가공과 재질 상의 협조가 있어야 비로소 그 오차를 감소시킬 수 있습니다. 예를 들어, 렌즈 왜곡 문제가 그런 경우죠. 촬영 시의 카메라 동기화 문제 역시 타 하드웨어와의 연동을 통해 해결할 수 있는 문제입니다. 발열과 에너지 소모량 이슈는 보다 더 잘 설계된 IC를 통해 해결할 수 있고요.

소프트웨어 접합에 대해 자세히 이야기해보자면, 저희는 이미 대부분의 이미지 처리 방식을 알고 있습니다. 자연적인 데이터 병렬성을 지닌 이기종 액셀러레이팅 기능으로 처리를 완성하는 방식이죠.

GPU가 직접 통합한 수천 개의 스트림 프로세서(Stream processor)로 이미지 처리 프로세스의 속도를 극적으로 끌어올리고, 매 프레임 처리에 걸리는 시간을 대폭 줄였습니다. 이로 인해 수많은 카메라 촬영 영상 역시 실시간으로 합성 및 출력이 가능해졌습니다. 이외에도, 만약 GPU의 전송 채널과 대역폭을 빌려 사용할 수 있으면, 통합이 완료된 데이터는 GPU로 직접 전송할 수 있게 됐습니다.


■ 실시간 이미지 접합은 분명 어렵다... AMD Loom의 도움이 있다면

AMD는 자체적인 GPU 하드웨어와 OpenCL 이기종 컴퓨팅(heterogeneous computing)에서 우위를 보이고 있습니다. 그리고 실시간 이미지 접합 부분에서도 자체적인 360도 영상 접합 솔루션 Loom을 선보였습니다. Loom은 영화급의 VR 영상작업을 가능케 하며 창조성을 강조합니다. 영상 접합 시간을 크게 줄여주고, 대용량의 파노라마 스트리밍을 가능케 하며, 대용량 파노라마 영상 제작 과정을 간단하게 해주죠. 또한, 영상 예술가들에게 독특한 콘텐츠를 생산할 수 있는 원동력을 불어넣어줍니다.

먼저, AMD Loom 솔루션의 전체적인 프레임워크를 살펴보겠습니다.


우선 컴퓨팅 부품을 살펴보자면, 이기종 컴퓨팅 플랫폼 OpenCL을 기반으로 DirectGMA 라이브러리와 멀티미디어 음성/동영상 디코딩 AMF 라이브러리를 지원합니다. OpenCL은 작업의 기본이 되는 개발용 라이브러리로 시각 정보 함수 처리 과정을 가속화시킵니다. DirectGMA의 기술은 캡처보드를 통해 실시간으로 GPU 접합 시스템에 접근 및 수집하는 데 적합하죠. 캡처보드가 그래픽 데이터 스트림을 직접 GPU의 그래픽 메모리에 전달하고, CPU와 내부 메모리를 우회하여 데이터 전송 지연과 대역폭 낭비를 감소시킵니다. AMF SDK는 동영상 접합 후의 업무를 담당하며 음성/영상의 융합, H.264 소프팅 코딩 등의 작업을 통해 저장공간과 전송 대역폭을 감소시키는 역할을 합니다.

세 번째 단계는 OpenCL을 기반으로 컴퓨팅 그래픽 엑설러레이팅 라이브러리 OpenVX입니다. OpenVX와 OpenCL 모두 오픈 소스 그룹 khronos가 내놓은 하나의 표준이죠.

네 번째 단계는 OpenVX 등의 그래픽 액셀러레이팅 라이브러리에 기초합니다. 동영상 접합 과정에서 발생하는 모든 알고리즘 프로세스는 OpenVX kernel을 필요로 하는데요, 실시간으로 그래픽 접합 프로세스를 거치면서 모든 알고리즘은 한 개 혹은 여러 개의 OpenVX kernel 함수를 통과하게 됩니다. 개발 라이브러리 형태로 상위 단계 사용자에게 테스트 기능을 제공하기도 하죠. CSC 컬러 스펙트럼 영역 전환 kernel, 렌즈 왜곡 교정 kernel, Blend 단계의 가우스 피라미드와 Laplacian 피라미드 kernel 등이 그 예입니다.

다섯 번째 단계는 접합 알고리즘 프로세스에 근거하여, 아래 단계의 kernel이 1단계에 묶일 수 있습니다. 예를 들어, CSC 접합구, Warp 접합구, Seam find 접합구 등이 있습니다.

최상위 단계는 바로 Loom이 제공하는 Stitch library를 이용하여 사용자로 하여금 동영상 접합 작업과 작업 후의 처리 과정을 완성하게끔 도웁니다. 이뿐만 아니라 Loom 스스로 테스트 기능을 갖추고 있으며 사용자에게 트레이닝을 제공하기도 합니다. 일종의 명령 행(command line) 해석기로 명령 행 형태의 여러 장의 이미지를 접합하는 임무를 수행합니다.


AMD Loom은 GPU 이기종 액셀러레이팅 솔루션과 AMD의 OpenVX 컴퓨팅 그래픽 액셀러레이터를 거쳐 실시간으로 360도의 고용량 영상 접합 작업을 가능케 합니다.

AMD Loom은 24개의 4k x 2k 렌즈를 실시간으로 접합할 수 있으며 비실시간으로는 최대 31개의 8k x 4k의 렌즈 촬영 화면을 접합할 수 있습니다. 만약 여기 360도 파노라마 영상 개발자 분이 계시다면, http://GPUOpen.com에서 Loom의 베타 버전을 만나보십시오. AMD 중국 지부는 현재 현지의 카메라 개발사와 합작을 진행 중이며 end-to-end 솔루션을 제공합니다.



※ 중국의 VR 전문 미디어 87870.com과의 제휴로, 인벤에서 독점으로 번역 제공하는 기사(원문 링크)입니다. 앞으로 중국의 VR 관련 주요 뉴스를 꾸준히 소개해드릴 예정이니, 많은 구독 바랍니다.