[Survey]Deep3D: Fully Automatic 2D-to-3D Video Conversion with Deep Convolutional Neural Networks

7225 단어 DeepLearning
Deep3D: Fully Automatic 2D-to-3D Video Conversion with Deep Convolutional Neural Networks
본고는 2차원 이미지에서 3차원 이미지를 생성한다.여기 결과와 코드를 볼 수 있습니다.
3차원 이미지는 3차원 영화와 VR 등에서 필요하다.3차원 이미지를 생성하는 두 가지 방법은 "Stereo Camera"와 "2차원 이미지에서 3차원 이미지를 생성하는 것"이다.Stereo Camera를 사용하는 방법에는 비용 문제와 특수 촬영 시 Multi View의 Camera를 사용할 수 없다는 문제가 존재하는데 이런 상황에서 2차원 이미지에서 3차원 이미지를 생성하는 기술을 대체 방안으로 삼아야 한다.전문 영상의 2D, 3D 변환은 depth artist가 수작업으로 만든 지도에 의존한다.2차원, 3차원 전환은 인공영사에 의존하여 3차원 영상 산업 발전의 장애가 된다.
2차원과 3차원 변환 문제는'미완성'문제에서 해결할 때 조건이 없기 때문에 깊이가 모호해진다.또 숨겨진 부분도 인페인팅 알고리즘으로 Hullucination을 해야 하는 문제가 있다.
학습을 통해 심도 있는 스티커를 만들 때 정확한 데이터가 필요하지만 실내나 일반적이지 않은 실외 장면 등이 적으면 문제가 생길 수 있다.
본고는 이미 존재하는 3차원 Stereo movie를 이용하여 학습을 진행하여 확률 Disparity Map을 추정하고자 한다.
전통적인 2차원, 3차원 변환은 두 단계로 구성된다.
1. 왼쪽 눈 이미지에 따라 깊이 매핑 추정
2. 깊이 이미지 기반 렌더링으로 오른쪽 눈 이미지 렌더링
Pixel 단위로 오른쪽 눈 이미지를 추정하면 정밀도가 좋지 않기 때문에 논문에서 오른쪽 눈 이미지는shift 왼쪽 눈 이미지copy로 DIBR 처리를 이용한다.전통적인 방법과 달리 정확한 깊이 스티커를 만드는 메커니즘이 필요하지 않고 학습을 위한 정확한 깊이 스티커도 필요하지 않다.대신 확률적인 Disparity like 맵을 추정하고 DIBR 처리를 사용하여 왼쪽 눈 이미지와 결합하여 오른쪽 눈 이미지를 생성합니다.
학습 기간 동안 모델이 생성한 Disparity like Map은 실제 Disparity Map과 직접 비교하지 않고 수평 Disparity와 inpainting 처리에 사용됩니다.

Model Architecture


다음 그림은 아키텍처입니다.폴링 레이어 다음에 두 부분으로 나누어 "Convolution transpose"를 통해 입력 이미지와 크기를 같게 합니다.그런 다음 모든 피쳐를 매핑합니다.이를 진일보한 Convolution 처리를 하고 얻은 Feature Map의 채널 방향에 Softmax를 출력하여 확률로 만든다.이 Softmax 값은 무작위 DisparityMap입니다.그리고 왼쪽 눈 이미지와 무작위 DisparityMap에서 오른쪽 눈 이미지를 생성합니다.

Deconvolution은 Convolution의 forward와 backward의 교환입니다.그들은 Deconvolutional layer를 초기화하여bilinear interpolation과 같게 하면 학습을 쉽게 할 수 있다는 것을 발견했다.초기화 공식은 다음과 같다.

Reconstruction with Selection Layer


2D-to-3D 변환의 일반 공식은 다음과 같습니다.

B ... 두 카메라 간 거리
I ... 왼쪽 눈 이미지
O ... 오른쪽 눈 이미지
Y ... 오른쪽 눈 이미지(정확한 데이터)
Z ... Depth Map
D ... 물체는 음수에서 Focus Plane보다 가깝고, 정수에서는 Focus Plane보다 가깝다
f ... 카메라에서 포커스면까지의 거리

이 논문에서 오른쪽 눈 이미지는 왼쪽 눈 이미지가 수평 방향에서 엇갈리는 조건을 사용했다.그래서 관계식은 다음과 같다.
여기, O는 오른쪽 눈 이미지의 $D_{i, j}$는 위치 $(i, j) $의 편차입니다.

그러나 이것은 $D$에 대한 미분 가능성이 아니기 때문에 deep neural 네트워크에서 배울 수 없습니다.네트워크에서 각 픽셀 위치의 Disparity 값이 d일 확률값 $D^d_예상 {i, j}$.왼쪽 눈 이미지 오프셋 d의 값을 $I^d_로 설정합니다.{i,j}$.

오른쪽 눈 이미지 $O_{i, j}$는 왼쪽 눈 그림을 d로 엇갈려서 얻은 $I^d_{i, j}$및 그 확률 $D^d_{i, j}$에 각자의 $d$를 추가합니다.

이것은 $D^d_{i, j}$는 미분할 수 있기 때문에 Lossfunction이 L1norm이면 다음과 같습니다.여기 $Y$는 오른쪽 눈 이미지의 정확한 데이터입니다.

영상 데이터 $1920\times1080$를 1/4$432\times180$로 축소하고 추정 확률 DisparityMap을 원화 디자인으로 확대하여 오른쪽 눈 이미지 생성에 사용합니다.

Experiments


Implementation Details


구현 세부 정보
・ 네트워크 구조는 VGG16 기반
· 초기화 값으로 VGG16의 Parameter 사용
· VGG16 이외에 사용된 부분의 Parameter의 초기값은 normal distribution이고 표준 편차는 0.01을 사용한다
· Pooling Layer 이후 지점을 나누어 Batch 규격화, 3x3 Convolution, Deconvolution을 진행한다.
・Deconvolution의 초기 값은 bilinear upsampling의 값입니다.

・Convolution 이후 4096 유닛의 fully connected layer 두 개를 진행합니다.(논문은 4096이지만 마지막 fully connected layer는 1980unit인 것 같습니다. 그렇지 않으면 다음 Reshape에서 33channel 12x5 사이즈로 설정할 때 남습니다.)
· 마지막으로 Reshape에서 33channel의 12x5 사이즈를 설정합니다.
· 33channel의 12x5를 Deconvolution에서 입력한 것과 같은 크기로 설정합니다.
・Deconvolution 출력을 모두 추가합니다.
・Deconvolution에서 각 픽셀을 33 channel로 설정하고 Convolution
・Convolution에서 얻은 결과는 Softmax를 확률로 합니다.
· 선택 레이어는 -15에서 16 사이의 Disparity 및 무작위 DisparityMap을 사용하여 오른쪽 눈 이미지를 생성합니다.
※ - 15~16에 총 33채널이 적혀 있는데, 이렇게 되면 32채널밖에 없는 것 같은데, 어떻게 된 일입니까?
・mini batch size64
・ 학습횟수 100000회
· learning rate 초기값은 0.002로 20000/10당
• Weight decay 없음
・dropout rate0.5, fully connected layer 뒤에 위치

Result


다음은 성능 비교 결과입니다.
비교는 Mean Absolute Error 및 PSNR을 통해 수행됩니다.
전역 Disparity는 전체 화면에서 MAE의 최대 시간 값인 Disparity 값을 사용합니다.

다음은 주관적인 평가의 결과다.
주관적인 평가는 두 가지 알고리즘의 결과를 제시하고 어느 것이 좋을지 모르거나 평가를 하는 것이다.
값은 행 방향에서 Algorithm을 쓰는 것이 비교적 좋은 비율입니다.
예를 들어 Deep3D와 논문[10]의 알고리즘에서 총 질문 횟수 중 66.08%가 Deep3D가 좋다고 답했다.

Ablation Study


저전평feature와selectionlayer의 유무 성능을 비교한 결과입니다.

무lower level 기능은 5개의convolutional Layer와pooling, 2개의fullyconnected layer로 구성된feed forward 네트워크이며, 밑바닥 Convolutional Layer 지점이 없습니다.
레이어를 선택하지 않았습니다. 논문에 상세한 내용이 없었기 때문일 수도 있지만 Probability Disparity Map이 없습니다.
물론 모두 사용하면 성능이 좋아진다.(PSNR에만 selection layer가 없는 것이 좋지만 얼마나 다른지 모르겠다.)

Temporal Information


이것은 시간 방향 정보를 사용할 때의 성능 향상을 검사한 것이다.
시간 방법에 대한 정보는 두 가지 방법을 시도했다. (1) 입력을 5frame로 간단하게 설정하고, (2) 입력을 1frame로 설정하고, 5frame의opticalflow를 사용한다.다음은 결과지만 생각보다 성능이 좋지 않다.저자는 네트워크 구조를 조금만 더 바꾸고 파라미터를 조정하면 성능이 나올 것이라고 말했다.

감상


왼쪽 눈 이미지와 확률 Disparity Map을 추가한 후 오른쪽 눈 이미지를 만드는 방법이지만 숨겨진 부분을 추정할 수 있을지 모르겠다.
그러나 Dataset의 Depth 데이터는kinect가 얻을 수 있는 실내에만 있고 실외는 거의 없다.Stereo 이미지를 사용하는 것이 Dataset 문제를 해결하는 방법 중 하나라고 생각합니다.

좋은 웹페이지 즐겨찾기