HAYEUP

Deep Cuboid Detection : Beyond 2D Bounding Boxes 본문

논문

Deep Cuboid Detection : Beyond 2D Bounding Boxes

hayup 2020. 6. 19. 17:22

이번 포스팅에서는 Object Detection의 Bounding Box와 관련된 논문을 리뷰하겠습니다.

제목은 Deep Cuboid Detection : Beyond 2D Bounding Boxes 입니다. 아주 간략하게 직육면체 형태의 Object를 Detection하고 그에 맞게 직육면체 형태의 Bounding Box를 추정하는 방법으로 요약할수 있습니다.

 

이직을 준비하면서 면접 과제로 주어졌던 주제를 해결하는 과정에서 읽은 논문으로 파이프 라인을 통해서 논문에서 제안하는 모델의 구조와 학습이 이뤄지는 방법 그리고 결과만 살펴보겠습니다.

 

 

왼쪽 그림은 Object Detection에서 흔히 볼수있는 2D Bounding Box 입니다. Object의 종류에 무관하게 직사각형으로 이루어집니다. 오른쪽 그림은 논문에서 제안하는 Cuboid Bounding Box 입니다. 사진상의 Object가 직육면체 형태의 Object이기 때문에 8개의 Vertex가 존재하고 이를 빨간점 그리고 정면의 사각형을 구성하는 선은 초록색 옆면은 파란색 뒷면은 노란색 선으로 나타내었습니다.

 

 

 그림은 논문에서 제안하는 모델의 파이프 라인입니다. 주요 키워드로는 Conv Layers, Region Proposal Network, Region of Interesting Pooling, RCNN Regressor, Iteration을 뽑을수 있겠습니다. RGB 이미지를 입력으로 Conv Layers에서 이미지의 Feature Map을 생성한뒤 RPN을 통해서 관심영역을 추출하고 관심영역 내에서 Cuboid Object의 정확한 2D Bounding Box와 Cuboid Bounding Box를 생성합니다.

 

각각의 키 포인트를 살펴보겠습니다. 먼저 Conv Layers입니다.

Conv Layers는 Fully Convolutional Network으로 구성되어 있습니다. 널리 알려진 이미지 기반 딥러닝 모델인 ResNet혹은 VGGNet를 미리 학습시킨 후 Convolution Layer만을 추출해서 사용합니다. 논문에서는 VGGNet의 Conv5를 예로 설명했습니다.

 

 

Region Proposal Network (RPN)

그림은 RPN의 연산을 도식화 한것입니다. Faster R-CNN 이라는 제목의 논문에서 소개된 개념으로 다양한 크기와 비율의 박스들을 미리 정의한뒤 그것들을 CNN에 이용해 Object가 있을법한 위치, 관심영역을 추출하자는 아이디어에서 시작됐습니다. 이미지의 Feature Map을 입력으로 하여 정의된 박스의 x,y 좌표로 나타낸 위치와 추정한 박스의 위치에 Object의 유무에 대한 점수를 학습합니다. 이미지에서 Object를 정확하게 Detection하고 Classification하기전에 Object인지 Background인지의 유무를 먼저 확인하고 Object라고 판단되는 영역을 선별하는 과정으로 이해하면 쉽습니다.

Faster R-CNN에 관해 자세히 설명해주신 블로그가 있어 링크를 첨부합니다.

 

[분석] Faster R-CNN

Paper study of Faster R-CNN published in Jan. 2016

curt-park.github.io

Deep Cuboid Detection에서의 RPN은 Detection하고자 하는 Object가 Cuboid만 해당되므로 Cuboid 유무에 따른 점수와 관심영역을 출력하는 역할을 합니다.

 

RoI Pooling 입니다. 그림으로 예시를 들어 확인 해보겠습니다.

RoI Pooling

 

보통의 Pooling방법은 고정된 크기의 Kernel을 사용하기 때문에 출력 Feature Map의 크기가 입력 Feature Map의 크기에 따라 달라지지만 RoI Pooling은 입력 Feature Map의 크기가 다양할때 고정된 크기의 Feature Map을 출력하기 위해 Kernel의 크기가 유동적입니다. 그림에서 볼수 있듯이 2 x 2 크기의 출력 Feature Map을 생성하기 위해  Kernel의 크기가 좌상부터 6, 8, 9, 12임을 볼수있습니다.

 

논문에서 RoI Pooling을 사용하는 이유는 이전 단계의 RPN에 의해 출력되는 이미지 Feature Map의 관심영역 때문입니다. 말 그대로 전체 이미지 중에서 관심이 가는 영역을 다양한 크기와 비율의 사각형 형태로 추출한것이기 때문에 이를 수월하게 연산하고자 고정된 크기의 Feature Map으로 변환하는 역할을 합니다.

 

RPNN Regressor에서는 이렇게 변환된 Feature Map을 입력으로 Fully Connected Layer를 통해 2D Bounding Box와 Cuboid Bounding Box 그리고 Cuboidness Score를 출력합니다. 파이프라인을 보면 Iteration 1과 2로 나누어져있습니다. 이미지를 입력으로 Conv Layers에서 이미지 전체에 대한 Feature Map을 생성하고 RPN을 통해 얻은 관심영역을 고정된 크기의 Feature Map으로 변환하고 이를 통해서 2D Bounding Box를 추정합니다. 여기까지가 Iteration 1에 해당합니다. 그리고 Iteration 1을 통해 추정한 2D Bounding Box를 관심영역으로 취급하여 해당하는 부분의 Feature Map을 다시한번 RoI Pooling과 Fullcy Connected Layer를 통해 Cuboid Bounding Box를 추정합니다. 이 과정이 Iteration 2에 해당합니다. 이는 Training 과 Test 모두에 적용됩니다. 

 

즉 첫번째 Iteration에서 2D Bounding Box를 추정하고 추정된 2D Bounding Box를 기반으로 두번째 Iteration에서 Cuboid Bounding Box를 추정하는 Refinement Mechanisim이라고 볼수 있습니다.

 

 Iteration Result

다음 그림은 Iteration에 따른 Cuboid Bounding Box의 결과를 보여줍니다. iteration 2에서 훨씬 자연스러운 결과를 확인할수 있습니다. 이것은 이미지 전체에 대한 RPN의 관심영역만을 이용해서 Object의 정보를 추정하는것은 부정확하다는 것을 보여줍니다.

 

Loss function은 총 5개로 구성되어 있습니다. 위에서 살펴봤듯이 RPN의 출력 2가지 RCNN Regressor의 출력 3가지로 구성되어 있습니다. 

 

anchor classification loss : RPN의 관심영역에 해당하는 Object가 Cuboid인지 아닌지에 대한 loss입니다.

anchor regression loss : RPN의 관심영역의 위치에 해당하는 loss입니다.

RoI classification loss : RCNN regressor의 2D Bounding Box에 해당하는 Object가 Cuboid인지 아닌지에 대한 loss입니다.

RoI regression loss : RCNN regressor의 2D Bounding Box의 위치에 해당하는 loss입니다. 

RoI corner loss : RCNN regressor의 Cuboid Bounding Box의 위치에 해당하는 loss입니다. 8개의 vertex의 좌표를 통해 계산합니다.

 

여기까지 논문에서 제안하는 모델을 파이프라인을 통해 살펴봤고 이 모델을 학습하기 위해 사용한 loss의 구성을 간단하게 설명했습니다. 마지막으로 결과들을 살펴본뒤 포스팅을 마치겠습니다.

 

 

첫번째 줄은 Cuboid Bounding Box에 대한 loss만을 사용해 학습한 후 첫번째 iteration을 통해 계산한 결과입니다. 두번째 줄은 Cuboid Bounding Box에 대한 loss만을 사용해 학습한 후 여러 iteration을 거쳐 계산한 결과입니다. 세번째 줄은 2D Bounding Box와 Cuboid Bounding Box에 대한 loss를 같이 사용해 학습한 후 첫번째 iteration을 통해 계산한 결과입니다. 네번째 줄은 2D Bounding Box와 Cuboid Bounding Box에 대한 loss를 같이 사용해 학습한 후 여러 iteration을 거쳐 계산한 결과입니다.

 

2D Bounding Box와 Cuboid Bounding Box에 대한 loss를 같이 사용하고 iteration을 반복해 학습한 결과가 가장 뛰어난 성능을 보입니다.

 

 

Deep Cuboid Detection을 사용한 결과물들 입니다.

 

 

[참고자료]

[1] D.Dwibedi, T.Malisiewicz, V.Badrinarayanan and A.Rabinovich. Deep Cuboid Detection : Beyond 2D Bounding Boxes.

[2] S.Ren, K.He, R.Girshick and J.Sun. Faster R-CNN : Towards Real-Time Object Detection with Region Proposal Network

[3] [분석] Faster R-CNN

[4] Fast R-CNN Open Research

[5] IoU, Intersectino over Union 개념을 이해하자

Comments