2020년 4월 10일(금) 구글 AI 리서치 블로그
심도 감지(depth sensing)라고 하는 장면에 대한 3D 정보를 결정하는 기능은 개발자와 사용자 모두에게 유용한 도구입니다. 심도 감지는 세로 모드 및 AR(ARCore Depth API)과 같은 응용 분야에서 투명한 물체 감지와 같은 기본 감지 혁신에 이르기까지 최근의 혁신을 통해 매우 활발한 컴퓨터 비전 연구 분야입니다. 일반적인 RGB 기반 스테레오 심도 감지 기술은 계산 비용이 많이 들고, 텍스처가 낮은 영역에서 어려움을 겪고, 매우 낮은 조명 조건에서는 완전히 실패할 수 있습니다.
Pixel 4의 Face Unlock 기능은 빠른 속도로 어둠 속에서 작동해야 하므로 다른 접근 방식이 필요했습니다. 이를 위해 Pixel 4의 전면에는 uDepth라는 실시간 적외선 (IR) 활성 스테레오 깊이 센서가 포함되어 있습니다. Pixel 4의 주요 컴퓨터 비전 기능인이 기술은 인증 시스템이 사용자를 식별하는 동시에 위장 공격으로부터 보호하는 데 도움이 됩니다. 또한 사후 사진 수정, 장면의 깊이 기반 분할, 배경 흐림, 인물 효과 및 3D 사진과 같은 여러 가지 새로운 기능도 지원합니다.
최근에 우리는 Pixel Neural Core, 두 개의 IR 카메라 및 IR 패턴 프로젝터를 사용하여 Camera 2에서 API로 uDepth에 대한 액세스를 제공하여 30Hz에서 시간 동기화된 심도 프레임 (DEPTH16)을 제공했습니다. Google 카메라 앱은 이 API를 사용하여 Pixel 4에서 셀피를 찍을 때 향상된 심도 기능을 제공합니다. 이 게시물에서는 uDepth의 작동 방식을 광범위하게 설명하고 기본 알고리즘을 자세히 설명하고 Pixel 4의 예제 결과를 통해 응용 프로그램에 대해 논의합니다.
스테레오 심도 감지 개요
모든 스테레오 카메라 시스템은 패럴렉스(parallax)를 사용하여 깊이를 재구성합니다. 이 효과를 관찰하려면 물체를 보고 한쪽 눈을 감은 다음 닫힌 눈을 전환하십시오. 가까이 있는 물체가 더 많이 움직이는 것처럼 물체의 겉보기 위치가 이동합니다. uDepth는 각 픽셀에 대해 시차를 계산하여 추정하는 고밀도 로컬 스테레오 매칭 기술 제품군의 일부입니다. 이들 기술은 하나의 카메라에 의해 형성된 이미지에서 각 픽셀을 둘러싸는 영역을 평가하고, 제2 카메라로부터 대응하는 이미지에서 유사한 영역을 찾으려고 시도합니다. 올바르게 보정되면 생성된 재구성은 미터법(metric)으로 실제 거리를 나타냅니다.
텍스처가 없는 영역을 처리하고 저조도 조건에 대처하기 위해 "액티브 스테레오(active stereo)" 설정을 사용합니다. 이 설정은 스테레오 IR 카메라가 감지하는 장면에 IR 패턴을 투사합니다. 이 방법을 사용하면 텍스처가 적은 영역을 보다 쉽게 식별할 수 있으므로 결과가 향상되고 시스템의 계산 요구 사항이 줄어듭니다.
그렇다면, uDepth의 차이점은 어떻게 만듭니까?
스테레오 센싱 시스템은 계산 집약적 일 수 있으므로 30Hz로 작동하는 센서는 저전력이지만 고품질을 유지하는 것이 중요합니다. uDepth는 이를 달성하기 위해 많은 주요 통찰력들을 활용합니다.
이러한 통찰력 중 하나는 서로 비슷한 한 쌍의 영역이 주어지면 해당 영역의 대부분의 해당 하위 집합도 비슷하다는 것입니다. 예를 들어, 유사한 두 개의 8x8 패치의 픽셀이 주어지면, 그 쌍의 각 멤버의 왼쪽 상단 4x4 하위 영역도 비슷할 가능성이 높습니다. 이는 uDepth 파이프라인의 초기화 절차를 알려줍니다. 이 절차는 각 이미지에서 겹치지 않는 타일을 비교하고 가장 유사한 타일을 선택하여 심도 제안 피라미드를 만듭니다. 이 프로세스는 1x1 타일로 시작하여 초기 저해상도 심도 맵이 생성될 때까지 계층적으로 지원을 누적합니다.
초기화 후, 우리는 픽셀 4에서 규칙적인 그리드 패턴 조명기를 지원하기 위해 뉴럴 심도 개선(neural depth refinement)을 위한 새로운 기술을 적용합니다. 일반적인 액티브 스테레오 시스템은 장면에서 의사 랜덤 그리드 패턴을 투사(reflection)하여 장면에서 일치하는 부분을 명확하게 하지만 uDepth는 반복 그리드 패턴을 지원할 수 있습니다. 이러한 패턴에서 반복 구조는 스테레오 쌍에서 비슷하게 보이는 영역을 생성하여 일치하지 않을 수 있습니다. 프레임 당 1.5ms 미만으로 잘못된 밝기를 조정하기 위해 IR 밝기 및 인접 정보를 사용하는 경량 (75k 매개 변수) 컨벌루션 아키텍처를 사용하여 이 문제를 완화합니다.
신경 심도 개선화 후, 양호한 심도 추정치가 이웃 타일로부터 반복적으로 전파됩니다. 이 파이프라인 단계와 후속 파이프라인 단계는 uDepth의 성공을 위한 또 다른 통찰력 키를 활용합니다. 자연 장면은 일반적으로 작은 비평면 편차만으로 로컬로 평면입니다. 이를 통해 장면을 덮는 평면 타일을 찾은 다음 나중에 타일의 각 픽셀에 대한 개별 심도를 개선하여 계산 부하를 크게 줄일 수 있습니다.
마지막으로, 인접 평면 가설(neighboring plane hypothesis) 중에서 가장 일치하는 항목이 선택되며, 일치하는 항목이 없으면 하위 픽셀 세분화 및 무효화가 적용됩니다.
휴대전화가 심하게 떨어지면 스테레오 카메라의 공장 교정이 카메라의 실제 위치에서 벗어날 수 있습니다. 실제 사용 중 고품질 결과를 보장하기 위해 uDepth 시스템은 자체 보정(self-calibrating)됩니다. 스코어링 루틴은 모든 이미지의 심도를 보정 오류의 징후에 대해 평가하고 장치 상태에 대한 신뢰를 구축합니다. 보정이 잘못되면 현재 장면에서 보정 파라미터가 재생성됩니다. 이는 피처 감지 및 대응, 서브 픽셀 세분화(도트 프로파일 활용) 및 번들 조정으로 구성된 파이프라인을 따릅니다.
자세한 내용은 uDepth의 기반이 되는 Slanted O(1) Stereo를 참조하십시오.
계산된 사진의 심도
uDepth 센서의 원시 데이터는 정확하고 미터법으로 설계되어 Face Unlock의 기본 요구 사항입니다. 세로 모드 및 3D 사진과 같은 계산된 사진 응용 프로그램의 요구는 매우 다릅니다. 이러한 사용 사례에서는 비디오 프레임 속도를 달성하는 것이 중요하지 않지만, 심도는 컬러 카메라의 전체 시야에서 매끄럽고 가장자리에 정렬되며 완벽해야 합니다.
이를 달성하기 위해 원시 uDepth 데이터를 향상시켜 완벽한 고밀도 3D 심도 맵을 유추하는 엔드 투 엔드 딥러닝 아키텍처를 훈련했습니다. 우리는 RGB 이미지, 사람 분할 및 원시 심도의 조합을 사용하며 각 입력에 대한 정보 사용을 강요하는 드롭아웃(drop-out) 스키마를 사용합니다.
실제(ground-truth)를 파악하기 위해 331개의 맞춤형 컬러 LED 조명, 고해상도 카메라 배열 및 맞춤형 고해상도 심도 센서 세트가 장착된 측지구(두 원 사이의 최단 거리)를 사용하여 거의 극사실적인(photorealistic) 모델을 제작할 수 있는 체적 캡처 시스템(volumetric capture system)을 활용했습니다. 우리는 셋업에 픽셀 4 폰을 추가하고 나머지 하드웨어 (조명 및 카메라)와 동기화했습니다. 생성된 훈련 데이터는 실제 이미지와 Pixel 4 카메라 관점의 합성 렌더링으로 구성됩니다.
종합해서
uDepth는 이러한 모든 구성 요소를 갖추고 30Hz의 심도 스트림(Camera2를 통해 노출됨)과 사진을 위한 매끄럽고 사후 처리된 심도 맵(심도 지원 셀카를 촬영할 때 Google 카메라 앱을 통해 노출됨)을 생성합니다. Google 시스템에서 생성하는 매끄럽고 밀도가 높은 픽셀 당 심도는 소셜 미디어의 심도 기능이 활성화된 모든 Pixel 4 셀피에서 사용할 수 있으며 소셜 미디어의 보케 및 3D 사진과 같은 캡처 후 효과에 사용할 수 있습니다.
마지막으로 uDepth에서 실시간 포인트 클라우드를 시각화하는 데모 애플리케이션을 제공하게 되어 기쁘게 생각합니다. 여기에서 다운로드하십시오 (이 앱은 데모 및 연구 목적으로만 사용되며 상업적 용도로는 사용되지 않습니다. Google은 어떠한 지원 및 업데이트를 제공하지 않습니다) 모든 지원 또는 업데이트). 이 데모 앱은 Pixel 4 기기에서 3D 포인트 클라우드를 시각화합니다. 심도 맵은 시간 동기화되어 RGB 이미지와 동일한 좌표계에 있으므로 아래의 시각화 예와 같이 3D 장면의 질감 보기(textured view)를 표시할 수 있습니다.
감사의 말
이 작업은 Peter Barnum, Cheng Wang, Matthias Kramm, Jack Arendt, Scott Chung, Vaibhav Gupta, Clayton Kimber, Jeremy Swerdlow, Vladimir Tankovich, Christian Haene 등 많은 사람들의 기여 없이는 불가능했을 것입니다. Yinda Zhang, Sergio Orts Escolano, Sean Ryan Fanello, Anton Mikhailov, Philippe Bouchilloux, Mirko Schmidt, Ruofei Du, Karen Zhu, Charlie Wang, Jonathan Taylor, Katrina Passarella, Eric Meisner, Vitalii Dziuba, Ed Chang, Phil Davidson, Rohit Pandey , Pavel Podlipensky, David Kim, Jay Busch, Cynthia Socorro Herrera, Matt Whalen, Peter Lincoln, Geoff Harvey, Christoph Rhemann, Zhijie Deng, Daniel Finchelstein, Jing Pu, Chih-Chung Chang, Eddy Hsu, Tian-yi Lin, Sam Chang , Isaac Christensen, Donghui Han, Speth Chang, Zhijun He, Gabriel Nava, Jana Ehmann, Yichang Shih, Chia-Kai Liang, Isaac Reynolds, Dillon Sharlet, Steven Johnson, Zalman Stern, Jiawen Chen, Ricardo Martin Brualla, Supreeth Achar, 마이크 브랜든 바벨로, Chris Breithaupt, Michael Rosenfield, Gopal Parupudi, Steve Goldberg, Tim Knight, Raj Singh, Shahram Izadi 및 기타 기기 및 서비스, Google Research, Android 및 X의 많은 동료들에게 대단히 감사드립니다.
원본 제목: uDepth: 픽셀 4에서 실시간 3D 심도 감지(uDepth: Real-time 3D Depth Sensing on the Pixel 4)
게시자 : Michael Schoenberg, uDepth 소프트웨어 책임자 및 Adarsh Kowdle, uDepth 하드웨어 / 시스템 책임자, Google Research
원본 링크: https://ai.googleblog.com/2020/04/udepth-real-time-3d-depth-sensing-on.html
SOS: Stereo Matching in O(1) with Slanted Support Windows 논문: https://ieeexplore.ieee.org/abstract/document/8593800
The Relightables: Volumetric Performance Capture of Humans with Realistic Relighting 논문: https://augmentedperception.github.io/therelightables/
uDepth 앱: https://storage.googleapis.com/gresearch/pixel4-udepth/udepth.zip
연관된 논문 또는 블로그에서 더 읽어 볼거리들
이 블로그는 2020년 4월 10일(금), Google AI Research Blog 기사를 한영 번역한 것입니다. 또한 이 번역 글은 정보 공유 목적으로만 작성했으므로 어떠한 상업용으로 사용할 수 없으며, 원본 저작물 모두 구글에게 저작권이 있음을 알려 드립니다. (First Draft Version)