3.5기(200104~)

Stereo R-CNN, 3D Box Estimation (가제)

KAU-Deeperent 2020. 4. 19. 05:05

- 3D Box Estimation

Stereo R-CNN를 통해 얻을 수 있는 정보는 다음과 같다. 왼쪽 카메라로 부터는 bbox의 상하좌우 테두리 픽셀의 좌표와, 바라봐지는 대상의 원근감을 표현하는 한점 까지 5개이며, 오른쪽 카메라 부터는 단순히 bbox의 좌우 테두리 픽셀 좌표, 2데이터를 얻게된다. 필자의 생각엔 오른쪽 카메라는 단순히 왼쪽카메라로부터 x축만 오프셋 되어있고, 동일한 yz평만상에 위치한다. 따라서 두 카메라에서 바라볼때 유의미하게 달라지는 데이터는 bbox의 x좌표일 것이므로, 나머지 데이터는 사용하지 않는 것으로 사려된다.  [ 이전 스텝으로 부터 얻은 데이터들 : Z = {ul,vt,ur,vb,u0_l,u0_r,up} ] 그러나 이 데이터들은 2D 이미지 상에서 원근감을 잘 표현해낸 값을 특정하여 추출한 것이다. 이 데이터를 사용하기 위해선 실제 물체가 3D 공간상에선 '어느 좌표'에서 '어느 방향'으로 '어떤 크기'를 가지고 있는지 추측해야만 한다. 해당 논문에선 다음 논문으로부터 영감을 받아 3D-2D관계식을 찾아냈다고 표현하였다. 필자는 이 부분을 해석하기 위하여 수 시간을 구글링을 하였으나, 별다른 성과는 얻지 못하여 어쩔 수 없이 해당 논문의 이름을 밝히는 것으로 대체할 것이다. 이 논문의 주제는 3D와 2D 사이의 projection transformation (투영 변환) 에 관한 것이다.

 

"Inspired from [17], we formulate the 3D-2D relations by projection transformations."

 

해당 논문  : [17] P. Li, T. Qin, and S. Shen. Stereo vision-based semantic 3d object and ego-motion tracking for autonomous driving. In European Conference on Computer Vision, pages 664–679. Springer, 2018.

 

논문에서 사용한 관계식은 위와 같다. 각 수식의 변수들을 하나씩 살펴보자. x, y, z 는 각각 왼쪽 카메라를 원점으로 한 3D BBOX의 중점좌표이다. 화면을 기준으로 오른쪽 방향은 양의 x 좌표, 아랫 방향은 양의 y좌표, 전방은 양의 z좌표이다. 그리고 w, h, l 의 각각 BBOX의 너비, 높이, 길이 이다. 마지막으로 theta는 카메라가 바라보고있는 방향을 기준으로 오브젝트의 전방 축이 몇 도 회전되어 있는지를 말한다. 따라서 수식은 7개의 variance가 존재한다. 그리고 나머지 문자는 8개로 이 값들에 대해서는 이미 알려져 있는 값들을 사용 할 수있다. 위 식에서 좌항의 경우는 stereo R CNN 을 통해 특정한 7개의 좌표 데이터이고, b의 경우는 오른쪽 카메라가 왼쪽카메라를 기준으로 얼마나 offset되어 있는지를 나타내는 상수이다.

결과적으로, 우리는 7개의 변수와 7개의 방정식을 가지고 있다. 그러나 안타깝게도 위 식들은 비선형방정식으로서 해석적인 7개의 해를 구하는 것은 매우 어려운 일이다. 따라서 논문에선 수치해석 방법중 하나인 가우스-뉴턴 메소드를 제시하였다. ( Gauss - Newton method ) 이 방법은 일반적으로 변수의 개수보다 방정식 개수보다 많아, 해가 무수히 많이 존재하는 경우에도 초기값 설정으로부터 초기값과 가장 가까운 범위에서 특정해를 계산할 수 있다. 우리의 방정식의 경우엔 해당하지 않는 이야기이지만, 더 일반 적인 설명을 위해 방정식의 개수가 더 많다고 가정하고 설명하도록 하겠다. 우선 가우스 뉴턴 메소드로 가기전 더 쉬운 형태인 뉴턴 랩슨 메소드를 이해해야만 한다.

 

1) Newton - Rapson method

 

위 방법은 수치해석방법 으로서 미분가능한 함수에 대하여 f(x)=0 을 만들어주는 x를 근사적으로 찾는 방법이다. 즉 구하고 싶은 방정식은 모두 이항정리하여 한 쪽 항이 0인 함수꼴로 만들어 주어야하고, 그 함수는 원하는 구간내에서 미분가능해야 한다. 실제 계산은 함수의 테일러 일차 근사를 통해 이루어 진다. 

위 공식은 테일러 1차 근사로서 x_t+1을 대입한 함수 값이 0일 것이라 가정한것이다. 실제론 0이 아닐 수 있지만, 이런 가정을 적용하고 수차례 반복하면 언젠가는 f(x)=0인 x를 찾을 수 있다는 것이다. 위 공식의 꼴을 응용한 것이 앞으로 설명할 가우스-뉴턴 메소드이다.

 

2) Gauss - Newton method

 

위 방법은 앞서 언급한 뉴턴 랩슨 메소드를 확장시킨 버전이다. 여러 방정식들이 여러 변수들로 coupled 되어있을 때 사용 할 수 있다. 특징으로는 방정식의 개수가 변수보다 많을 때도 사용할 수 있다. 

위와 같이 n개의 변수로 이루어진 m개의 비선형 연립방정식을 살펴보자. 이 때 이 함수들 전체에 대하여 F(X)=0 을 만족하는 벡터 X를 찾는 방법이다. 이 경우에도 푸는 방법의 형태는 뉴턴 랩슨 메소드와 동일하다. 그러나 위 함수셋 전체에 대한 미분이 계산 과정에 포함되는데, 이 미분 값을 자코비안으로 사용한다.

자코비안의 정의는 위 식과 같으며, 그것은 각각 함수에 각각 변수의 편미분의 집합이다. 자코비안에 열벡터 X를 곱함으로써 행렬의 차원이 m X n 임을 쉽게 이해할 수 있다. 그럼 이 자코비안을 이용하여 가우스 뉴턴 메소드의 기본식을 정의 할 수 있다. 그러나 F(X)를 J(X)로 나눈 것을 계산해야하므로 우선 이 나눗셈 계산을 P라는 변수로 생각 해 보자.

계산 중간을 보면 JP=F인 부분을 통하여 P를 계산 해야 한다. 일반적으로 J는 정사각행렬이 아니라 역행렬 계산이 불가능 하여 선형대수학을 통한 약간의 변형이 필요하다. 이 계산의 바로 밑식을 보면 전치행렬을 이용하는데 전치행렬과 본래 행렬을 곱하면 정사각행렬이 되어 역행렬 계산이 가능해 진다. 만약 본인이 선형대수학을 잘 공부 했다면 전치행렬을 이용한 역행렬 계산이 왜 저렇게 되어 결국 역행렬 계산과 동일한가는 쉽게 알 수 있을 것이다. 따라서 위 식의 마지막 단을 반복적으로 계산하여 F(X)=0을 만족하는 벡터 X를 얻을 수 있다. 

 

우리는 이 가우스 뉴턴 메소드를 이용하여 3D-2D 관계식을 수치해석적으로 계산이 가능해 졌다. 그리고 우리가 얻는 값들은 3D바운딩 박스의 3차원 좌표, 카메라 앵글과 오브젝트의 사잇각, 바운딩 박스의 너비,높이, 길이를 알게 되었다. 각각의 오브젝트에 대하여 3차원 BBOX 데이터를 계산 하면, 우리는 2개의 카메라로 바라본 RGB 정보들로 부터 3차원 맵데이터를 추정할 수 있게 될 것이다.

또 해당 섹션 마지막엔 alpha = theta + arctan(-x/z) 인 식이 있는데, 각각의 바운딩 박스 데이터로 부터 얻은 x,z, theta로 쉽게 계산이 가능하다. 이 값은 뷰포인트 앵글로 정의 했는데, 이 값은 특정 물체들 사이에 가려진 오브젝트에 대하여 보상하기 위해 사용한다고 언급되어 있다.