Monocular 3D Object Detection for Autonomous Driving
논문에 대한 리뷰입니다. 이 논문은 2016 CVPR에 투고된 논문이며 약 669회 인용되었다고 합니다. 혼자 공부하기 위해 정리한 내용이니 이해가 안되는 부분이 많을 수 있습니다. 참고용으로만 봐주세요.
Abstract
본 논문은 자율주행에서 단안 이미지로부터 3D 객체 검출을 수행하는 것이 목표이다. 먼저 높은 퀄리티의 객체 검출을 얻기 위한 기본적인 CNN 파이프라인을 통해 돌아가는 클래스 객체 제안 후보 셋을 발생시키는 것을 목표로 한다. 이 논문의 중점은 제안 발생이다. 특히, 물체는 지면 위에 있어야만 한다는 사실을 이용하여 객체 후보를 3D로 배치하는 에너지 최소화 접근법을 제시한다. 그러고 나서 의미 분할, 문맥 정보, 이전의 크기 및 위치, 일반적인 객체 모양을 인코딩하는 몇가지 직관적인 잠재력을 통해 이미지 평면으로 투영된 각 후보 박스에 대해 점수를 매긴다. 우리의 실험 결과는 우리의 객체 제안 발생 접근법이 모든 단안 접근법을 엄청나게 능가하고, 단안 경쟁 모델 중 까다로운 KITTI benchmark 에서 최고의 검출 성능을 달성한다는 것을 볼 수 있다.
1. Introduction
최근에, 자율주행은 요즘 많이 주목받고 있다. 초기에는 벨로다인, 환경을 손으로 그린 맵과 같이 비싼 LIDAR 시스템에 의존한다. 그러나, 최근에는 LIDAR를 대부분 현대의 차들에 손쉽게 사용가능한 값싼 카메라로 바꾸려고 하고 있다.
또한 이 논문의 중점은 자율주행에서 단안 이미지로부터 높은 성능의 2D 와 3D 객체 검출이다. 대부분의 최근 객체 검출 파이프라인들은 전형적으로 상대적으로 빠른 계산과 높은 리콜을 가진 객체 제안의 다양한 셋을 발생시킨다. 이렇게 함으로서, CNN시리즈와 같이 계산이 강도 높은 분류기는 대량의 필요 없는 후보 세트에 대한 계산을 피할 수 있다.
다른 타입의 객체 제안 방법들 중, 일반적인 접근 방식은 이미지를 매우 작은 픽셀로 세분화하고, 몇 가지 유사성 측정을 사용하여 이들을 그룹화한다. 단순한 객체 특징 또는 외곽선 정보를 사용하여 전체 창들을 효율적으로 탐색하는 접근법도 제안되었다. 대부분의 최근 작업들은 이진 세분화 모델, 파라메트릭 에너지, CNN 특징 기반의 윈도우 분류기 중 하나를 사용하여 좋은 객체 후보를 제안하는 방법을 만드는 것을 목표로 한다.
이 제안 발생 접근 방식들은 다소 루즈한, 즉 검출이 GT와 0.5 IOU가 생기는 경우를 긍정으로 보는 경우로 하는 위치화 개념을 필요로 하는 PASCAL VOC 챌린지에 매우 효과적인 것으로 나타났다. 그러나 자율 주행에서는 자동차 스스로 잠재적 장애물까지의 거리를 정확하게 추정하기 위한 더 많은 엄격한 중복을 요구한다. 결과적으로, R-CNN과 같은 인기있는 KITTI와 같은 자율주행 벤치마크에서의 다른 경쟁자들보다 엄청나게 떨어진다. 그러나, 대부분의 차들은 단일 카메라가 장착되어 있고, 그래서 단안 객체 검출은 중요한 기술이다.
이러한 접근 방식에 영감을 받아, 이 논문은 의미론뿐만 아니라 상황별 모델을 활용하여 매우 높은 회수율로 클래스별 3D 객체 제안을 생성하는 방법을 제안한다. 이 제안들은 지면에 3D 경계 상자를 철저히 배치하고 단순하고 효율적으로 계산 가능한 이미지 기능을 통해 점수를 매김으로써 생성된다. 특히, semantic 과 instance 세그멘테이션, 컨텍트 뿐만 아니라 형상 특징들과, 박스들을 점수 매기기 위한 이전 위치 정보을 사용한다. 저자는 각각의 개별 객체 클래스에 적응되어 있는 S-SVM을 사용한 피쳐들에 대한 각 클래스마다의 가중치들을 학습한다. 그러고 나서 가장 높은 객체 후보들은 CNN을 통해 점수 매겨지고, 검출의 최종 셋의 결과로 추출된다. 이 논문의 실험은 우리의 접근 방식이 KITTI에서 모든 공개된 단안 객체 검출을 능가하고 스테레오 이미지를 이용하는 선두모델과 거의 동등하게 수행하고 있음을 보여준다.
2. Related Work
본 논문의 작업은 객체 제안 발생 뿐만 아니라 단안 3D 객체 검출에 대한 방법들과 관련이 있다. 자율주행에서 문학적 리뷰를 주로 집중할 것이다. 심층 신경망에서의 중요한 프로세스는 슬라이딩 윈도우 창을 계산적으로 만드는 심층망때문에 객체 제안 발생에 대한 방법에 사용된다. 제안 발생에 대한 대부분의 현존하는 작업은 RGB, RGB-D 또는 영상을 사용한다. RGB에서 대부분의 방법들은 색깔과 텍스쳐를 사용하는 것과 같이 여러 유사성 함수를 통해 슈퍼픽셀들과 큰 지역과 결합한다. 이러한 접근 방식은 PASCAL VOC에서 거의 완벽한 호출을 달성하면서 이미지당 약 2K개의 제안으로 전체 윈도우를 전환한다. BING 제안들은 객체성에 대한 프록시로서 객체 측정에 기반된 박스들을 점수매긴다. Edgeboxes는 각 창의 경계와 내부 윤곽 정보를 기반으로 전체 위도우 셋에 점수를 매긴다. 우리와 가장 관련있는 접근법들은 객체를 제안하는 방법을 배우는 것을 목표로 한다.
우리의 접근 방식은 후보들을 점수매기기 위해 통합 이미지를 활용하기도 하지만, 이전의 정보들을 사용하여 3D 경계 상자를 배치하고 의미론적 특징으로 점수매긴다. 저자는 grid CNN의 출력 계층에서 픽셀 단위의 클래스 점수와 상황별 및 모양 특징을 사용한다. 또한, 저자는 3D bounding box를 평가하지만, semantic 과 instance 세그멘테이션과 3D priors를 사용하여 지면에 제안들을 배치한다. 이 논문의 RGB 전위는 부분적으로 2D 객체 검출을 위해 효율적으로 계산된 세그멘테이션 전위를 활용하는 데 영감을 받았다.
3. Monocular 3D Ojbect Detection
본 논문에서 정확한 3D 객체 검출을 수행하기 위해 세그멘테이션(segmentation), 컨텍트(context), 이전 위치(location priors)들을 추출하는 객체 검출에 대한 접근법을 제시한다. 특히 먼저 지면 가까이에 있는 물체를 제안하기 위해 지면을 사용한다. 단안 이미지를 입력으로 하기 때문에, 지상 평면은 이미지 평면과 직각을 이루고, 카메라에서 멀리 떨어져 있다고 가정한다. 그 값은 보정을 통해 알 수 있다고 가정한다. 이 지면은 각각의 이미지에서 완벽한 현실을 반영하지 않을 수 있으므로, 물체를 지면에 놓지 않고 가까이 있도록 한다. 그러고 나서 클래스 세그멘테이션, 인스턴스 레벨 세그멘테이션, 형상이나 문맥적 특징과 이전 위치들을 활용하여 이미지 평면에서 3D 객체 후보들을 점수매긴다. 그러고 나서 결과로 나온 3D 후보들은 점수를 기준으로 정렬되고, NMS를 통해 추출된 가장 높은 확률의 것들은 CNN을 통해 또다시 점수매겨진다. 이 과정을 통해 3D 검출에 대해 빠르고 정확하게 된다.
3.1 Generating 3D Object Proposals
3D bounding box를 다음과 같이 정의한다.
1
y = (x,y,z,0,c,t), (x,y,z): 3D box의 중심 좌표, 0: 방위각, c: object class, t: 훈련 데이터로부터 학습된 대표 3D 템플릿 셋
t를 사용하여 bounding box의 사이즈를 정의한다. 각 클래스마다 3개의 템플릿과 두 개의 각도(0∈{0,90}) 를 사용한다. 그 후 semantic and instance segmentation과 location prior, context를 결합하여 정의된 스코어 함수는 다음과 같다.
이 함수를 좀 더 디테일하게 들여다 보자.
- Semantic segmentation
맨 앞부분부터 보자면, 이 부분은 픽셀 단위의 의미 분할(semantic segmentation)을 입력으로 받는다. 그 후 두 가지의 특징을 통합하여 의미 분할을 수행한다. 첫번째 특징은 관련 클래스로 분류된 픽셀들의 확률을 활용해서 객체의 bounding box를 구성한다. 사용하는 식은 다음과 같다.
이 때, Ω(y)는 이미지 평면으로 3D 박스인 y를 투영하여 생성된 2D 박스의 픽셀 집합이고, Sc는 클래스c의 세그멘테이션 마스크이다.
두번째 특징은 픽셀들이 해당 클래스 대비 다른 클래스로 속할 확률을 계산한다.
이는 크게 두 가지로 구성되어 있는데, 1개는 로드를 의미하고, 다른 1개는 다른 모든 클래스들을 합친 것을 의미한다. 이 식을 통해 bounding box안에 다른 객체를 뜻하는 픽셀의 비율을 최소화한다.
이 특징들은 클래스 수만큼의 통합 이미지만을 사용하여 매우 효율적으로 계산할 수 있다.
SegNet의 경우, fully convolutional 인코더-디코더를 통해 semantic 라벨링을 수행한다. 저자는 PASCAL VOC + COCO에서 차량 세그멘테이션에 대해 pretrained model을 사용한다. 그리고, 다른 클래스의 불일치를 줄이기 위해, 보행자와 자전거 이용자에 대한 pretrained SegNet model을 사용한다. KITTI에는 semantic 주석(annotation)이 거의 없으므로 모델을 fine-tune을 하지 않았다. 게다가 KITTI의 로드 benchmark에서 주석을 추출했고, 로드에 대해 네트워크를 fine-tune했다.
- Shape
여기서는 객체의 형상을 포착한다. 특히, 먼저 원래의 이미지가 아닌 세그멘테이션의 출력에서 윤곽을 계산한다. 그런 다음 2D 후보 상자에 대해 두 개의 그리드를 만든다. 하나는 단일 셀만 포함하고, 다른 하나는 K x K크기의 셀을 나타낸다. 각 셀에 대해 그 안에서 윤곽 픽셀의 수를 센다. 무엇보다, 이는 우리에게 모든 셀을 거쳐 (1+KxK)개의 특징 벡터를 준다. 이는 객체 주변에 타이트하게 bounding box를 두어 그리드 내에 윤곽의 공간적 분포가 특정 클래스의 예측한 형상과 일치하도록 유도한다. 이러한 특징은 윤곽 픽셀을 세어 매우 효율적으로 계산된다.
- Instance Segmentation
박스 내부와 외부의 세그멘트 양을 기록하는 인스턴스 레벨 세그멘테이션 특징을 활용한다. 그러나 간단하게 IOU 중첩을 기반으로 각 bounding box에 대해 최고의 세그먼트를 고른다. 이는 계산 속도를 올린다. 이 방식은 다른 인스턴스를 형성할 때 가려지는 개체를 검출하는 것을 돕는다. 이러한 기능은 세그멘테이션을 구성하는 인스턴스 수만큼의 통합 이미지를 사용하여 매우 효율적으로 계산할 수 있다. CNN을 사용하여 인스턴스 레벨의 픽셀 라벨링과 깊이에 대한 정렬을 모두 만드는 접근 방식을 이용하여 인스턴스 세그멘테이션을 계산한다. 이 방법은 자동차에 대해서만 적용 가능하다.
- Context
이 단락에서는 자동차는 도로 위에 있고 그래서 차 밑에 길을 볼 수 있는 것과 같이 맥락적 라벨을 인코딩한다. 3D bounding box의 2D 투영에 맥락적 영역으로서 직사각형을 그린다. 직사각형의 크기는 박스의 높이의 1/3, 같은 너비로 설정한다. 그런 다음 맥락적 영역에서 semantic segmentation 특징들을 계산한다.
- Location
이 단락에서는 이미지 평면과 조감도에서 객체의 이전 위치들을 인코딩한다. 본 논문에서는 3D prior에 대해 4m의 고정된 표준 편차를 갖는 커널 밀도 추정(Kernel Density Estimation)(=KDE)을 사용하여 prior을 학습하고, 이미지에 대해 2개의 픽셀을 학습한다. 3D GT bounding box를 사용하여 3D prior를 학습시킨다.
3.2 3D Proposal Learning and Inference
모든 특징들을 통합 이미지로 변환할 수 있기 때문에 효율적으로 추론이 가능하다. 특히, 단일 코어에서 추론에 걸리는 시간은 1.8s로, real-time이라 가정할 수 있다. SVM을 통해 모델의 가중치를 학습하고, 평행 절단면 구현을 사용한다. 또한, task loss로서 3D IOU를 사용한다.
3.3 CNN Scoring of Top Proposals
이번 섹션에서는 CNN을 통해 NMS를 거친 TOP후보들이 어떻게 더 많은 점수를 받는지 설명한다. 저자는 Fast R-CNN을 기반으로 네트워크를 구성했다. 이것은 전체 이미지로부터 컨볼루션 특징들을 계산하고, 마지막 컨볼루션 레이어인 conv5를 지나고 나면 그것은 2개의 브런치로 나뉘어진다. 1개는 제안 영역으로부터 특징들을 인코딩하고, 다른 하나는 제안 영역을 1.5배로 확대하여 얻은 컨텍스트 영역을 인코딩한다. 두 브런치는 ROI pooling layer와 2개의 FC layer로 구성되어 있다. 제안이나 컨텍스트 영역을 conv5 특징맵에 투영하여 ROI를 얻는다. 그러면 두 브런치를 출력 특징들에 연결하여 최종적인 특징 벡터를 얻을 수 있다.
이 논문에서는 multi-task loss를 사용하여 카테고리, bounding box offset, 객체 방향을 예측한다. 배경에 대한 박스의 loss는 범주 레이블 손실에만 사용된다. 각 loss는 동일한 가중치를 부여하고, smooth L1인 방향 loss와 2D bounding box의 4개 좌표에 대한 smooth L1인 boundinb box offset loss를 합친 cross entropy로 카테고리 loss를 정의한다.
3.4 Implementation Details
- Sampling Strategy
저자는 복셀 크기가 각 길이가 0.2m가 되도록 3D 공간을 구분한다. 제안 발생 모델에서 추론시에 조사 공간을 줄이기 위해, 3D 후보 박스를 지면에 배치한다. 입력으로 오직 단안 이미지를 사용하기 때문에 정확한 로드 평면을 추청할 수 없다. 대신에, KITTI 데이터에서 카메라 위치를 알 수 있기 때문에, 카메라의 Y축과 직교를 이루는 지면을 가진 모든 이미지에 대해 고정된 지면을 사용하고, 평면에서 카메라의 거리인 hcam = 1.65m라고 가정한다. 길이 경사면인 경우와 같이 지면 에러에 대해 강인해지기 위해 기본 평면을 여러 각도로 기울인 추가적인 평면들에 대한 후보 상자들도 샘플링한다. 그리고 이 평면들의 법선을 고정하고 hcam = (1.65 + δ)m라고 고정한다. 여기서 δ는 기본 지면과 객체의 거리의 가우시안 분포로 추정한 표준편차의 MLE 추정인 σ에 대해, 차의 경우 δ ∈ {0,±σ}를 만족하고, 보행자와 자전거 이용자의 경우 δ ∈ {0,±σ±2σ}를 만족하도록 설정한다. 작은 물체들이 오류에 더 민감하기에 보행자와 자전거 이용자에 더 많은 평면을 사용한다. 이 때, 모든 픽셀이 길로 라벨링되어 3D 평면에서 매우 낮은 prior 확률을 가진 박스들은 제거하여 샘플링되는 박스의 수를 더 줄인다. 이 결과, 지면, 템플릿, 이미지 당 약 14k개의 후보 상자가 된다. 이 샘플링 전략은 샘플링 박스 개수를 28%로 줄여 추론 속도를 엄청 올린다.
- Networks Setup
ImageNet으로 훈련된 VGG16모델을 사용하여 네트워크를 초기화했고, VGG16의 FC layer의 가중치를 통해 2개의 브런치를 초기화했다. KITTI 이미지들안의 매우 작은 객체들을 다루기 위해, 입력 이미지의 크기를 3.5배 키우는 방법을 사용했다. 그리고 훈련과 테스트시에 이미지에 대한 단일 스케일을 사용했다. 그리고 이미지에 대한 배치 사이즈는 N = 1, 제안에 대한 베치 사이즈는 R = 128로 설정하고, 30K 반복까지는 lr = 0.001의 SGD를, 그 후의 10K 반복은 lr = 0.0001을 사용했다.
4. Experimental Evaluation
까다로운 KITTI 데이터셋에서 평가헸다. KITTI 데이터셋은 자동차, 보행자, 자전거 이용자 총 3개의 클래스에 대한 7481개의 훈련 이미지와 7518개의 테스트 이미지로 구성되어 있다. 각 클래스에 대한 검출은 객체의 겹침이나 절단의 레벨에 따른 3개의 난이도로 평가되는데, 각 easy, moderate, hard이다.
- Metrics
가장 높은 리콜을 사용하여 제안들을 평가했다. 이 논문에서 가장 높은 리콜을 오라클 리콜(oracle recall)이라 부르는데, 이 오라클 리콜은 GT(ground truth)와의 IOU가 특정 threshold이상으로 중복되는 제안들의 퍼센트를 계산한다. 차에 대해서는 0.7 threshold, 보행자와 자전거 이용자에 대해서는 0.5 threshold를 적용한다. 또한 AR(average recall)도 정리했다. 3D 객체 검출 모델의 전체 파이프라인을 KITTI의 2가지 태스크에 대해 평가했다. 이는 객체 검출과 객체 검출 및 방향 추정이다. 표준 KITTI 세팅에 따라 객체 검출 태스크에서는 AP(average precision) 지표를 사용하고, 객체 검출 및 방향 추정 태스크에서는 AOS(Average Orientation Similarity) 지표를 사용했다.
- Baseline
validation set에서 이 논문에서의 제안 발생 방법과 몇몇의 가장 높은 성능의 접근법(3DOP, MCG-D, MCG, SS(Selective Search), BING, EB(Edges Boxes)과 비교했다. 3DOP과 MCG-D는 깊이 정보를 활용하는 반면, 나머지 방법과 이 논문에서의 방법은 오직 단일 RGB 이미지를 사용한다. 3DOP를 제외한 모든 방법들은 모든 전방 객체를 탐지하도록 훈련되는 클래스-독립적이지만, 이 논문의 방법은 클래스별 가중치와 semantic segmentation을 사용한다.
- Proposal Recall
이 실험에서는 validation 셋에서 발생되는 제안에 대한 오라클 리콜을 평가했다. 위의 그림은 제안의 수에 대한 모델들의 리콜을 보여준다. 이 논문의 접근이 차와 보행차에 대한 500개의 제안보다 작게 사용할 때 모든 베이스라인들보다 엄청 더 높은 리콜을 달성한다. 그리고, easy 난이도에서 오직 100개의 차량에 대한 제안과 300개의 보행자에 대한 제안을 통해 90%의 리콜을 달성한다. 이는 다른 2D 방법들보다 훨씬 더 적은 제안을 필요로 한다는 것이다. 2k개 제안을 사용할 때, 3D 접근법 중 가장 좋은 성능을 보이는 것은 3DOP로 20% 정도 다른 베이스라인들보다 높았다. 3DOP와 MCG는 깊이 정보를 사용함으로써 단안 이미지를 사용하는 우리의 접근 방식과 조금 달라 비교하기가 어렵다.
그런 다음, 탑 500개의 제안에 대한 IOU별 리콜을 측정했다. 모든 IOU threshold에서 스테레오를 사용하는 3DOP를 제외한 모든 베이스라인을 능가했다. 그러나 보행자와 자전거 이용자에 대한 높은 IOU threshold를 사용할 때, 3DOP보다 조금 낮게 나왔다.
- Ablation Study
특징별 객체 제안 리콜에 대한 효과를 연구했다. 인스턴스나 시멘틱 특징들은 300개 보다 더 작은 제안을 사용했을 때 리콜을 향상시켰다. 인스턴스 특징없이도 1000개의 제안을 사용하면 90% 리콜을 달성할 수 있었다. 인스턴스와 형상 정보를 둘 다 제거했을 때, 90% 리콜을 달성하려면 2배 더 많은, 즉 2000개의 제안이 필요했다.
- Object Detection and Orientation Estimation
객체 검출에 대한 제안을 점수매기기 위해서 섹션 3.3에서 설명된 네트워크를 사용했다. KITTI 테스트 셋에서 검출을 평가한 내용은 다음과 같다.
테이블을 보면 공개된 단안 방법들을 능가했다는 것을 볼 수 있다. AP의 관점에서 2단계 중 최고 방법인 Fast R-CNN을 차, 보행자, 자전거 이용자 각각 어려움 난이도에서 7.84%, 2.26%, 2.97% 정도의 엄청난 차이를 보이며 능가했다. 방향 측정에 대해서는 어려움 난이도에서 3DVP보다 12.73% AOS 더 높게 달성했다.
- Comparison with Baselines
저자의 CNN을 평가하기 위해 강력한 다른 제안 방법인 3DOP, EB(EdgeBoxes), SS(Selective Search)을 사용했다.
위의 테이블은 KITTI 검증셋에서 검출과 방향 측정에 대한 결과를 보여준다. 이를 통해 EB, SS를 20% AP와 20% AOS 더 능가했다는 것을 볼 수 있다. 3DOP는 단안 이미지를 사용하는 우리와 달리 스테레오 이미지를 사용하기에 비교하기 어렵다. 그럼에도 불구하고, 비슷한 성능을 보여주었다.
중간 난이도에서의 차에 대한 제안의 수의 함수로서 AP를 평가했다. 오직 각 이미지당 10개의 제안을 사용할 때, 35.7%를 달성하는 3DOP를 능가하여 53.7%의 AP를 달성했다. 100개보다 더 많이 사용하게 되면, AP는 3DOP와 거의 비슷했다. 5000개를 사용해야 EB는 최고 성능인 78.7% AP를 달성하는데 반해, 이 논문의 방법은 200개의 제안만을 사용해도 80.6% AP를 달성할 수 있었다.
- Qualitative Results
3D 검출에 대한 결과는 위의 그림과 같다.
5. Conclusions
높은 퀄리티의 객체 검출을 얻기 위해 기본적인 CNN 파이프라인을 통해 실행되는 후보 클래스별 객체 제안을 생성하는 단안 3D 객체 검출에 대한 접근 방식을 제안해왔다. 이 목표를 위해, 물체가 지면 위에 있어야 한다는 사실을 이용하여 객체 후보를 3D로 배치한 후, semantic segmentation, 맥락 정보, 이전의 크기 및 위치 및 일반적인 객체 모양을 인코딩하는 여러 직관적인 잠재력을 통해 각 후보 상자에 점수를 매기는 에너지 최소화 방법을 제안했다. 이 논문의 객체 제안 발생 접근법은 모든 단안 접근법을 상당히 능가했고, KITTI benchmark에서 최고의 성능을 보여주었다.