Image processing/Lane detection

[2020] Key Points Estimation and Point Instance Segmentation Approach for Lane Detection

유니디니 2020. 6. 14. 17:40
728x90
반응형



Abstract 


기존의 state-of-the-art의 성능을 보이는 차선 탐지 방법들은 좋은 성능을 보이지만, 탐지 가능한 제한된 수의 차선이나 High False Positive(실제 차선이 아니지만, 모델은 차선이라고 인식하는 경우)에 크게 의존성을 가진다. 특히, 높은 False Positive 비율은 위험한 제어를 일으키기 때문에, 이를 효율적으로 줄이는 방법이 중요하다. 본 논문에서는 딥러닝을 이용하여 임의의 차선을 탐지하고, 가장 낮은 False Positive 비율을 가진 방법을 제안하고자 한다. 제안된 방법은 포즈추정에서 사용된 Stacked Hourglass 방법을 기반으로 차선에 대한 정확한 point를 추정할수 있으며, 추정된 point에 대한 인스턴스별 클러스터링(군집화) 문제를 Point-Cloud Cluster instance segmentation 문제로 해결하였다. 또한, 제안된 Post-processing 방법은 Outlier를 성공적으로 제거함으로써 성능을 향상시킨다.


Introduction


완전한 자율주행을 위해서는 차량의 주변환경을 이해하는 것이 요구되며, 다양한 인지모듈(Ex Lane detection, Pedestrian, Obstacle)이 결합하여 상황을 이해한다. 또한, ADAS(Advanced Driver Assistant System)나 CCS(Cruise Control System)와 같은 부분적 자율주행 시스템에도 포함됩니다. 차선탐지모듈은 SLAM, Lane Centering function과 같은 다양한 모듈을 통해 수행되지만, 저렴한 가격으로 인해 RGB 카메라를 이용한 차선탐지방법이 가장 중요한 것으로 여겨져 오고 있다. 


최근, Complex 환경(Light conditions, Occlusion 등)에서 뛰어난 성능을 보이는 딥러닝 방법이 발전하고 있다. Semantic Segmentation 방법은 차선의 모양(Shape)과 위치(Location)를 추론할수 있기 때문에 빈번하게 사용되고 있으나, 각 레인을 구별하는 다중 클래스(Multi-class) 접근 방식으로 인해 고정된 레인 수로 구성된 장면에만 적용 할 수 있습니다. 


이에, 제안된 방법은 입력 픽셀 크기보다 Lane에 대해 더 적은 양의 정확한 포인트를 예측하고, 각 포인트를 인스턴스로 구별합니다. 



 



Three Value


Confidence : Grid 단위 예측값, grid에서 다음 Block으로 넘어가면서 Stacked Hourglass와 같이 안정적인 학습을 돕는다. 


Offset : 차선이 위치한 정확한 Point 좌표


Feature : 차선 인스턴스 단위 정보


Fig. 1은 제안된 방법의 차선탐지 Framework를 보여주고 있으며, 3가지 결과 branches를 통해 차선의 정확한 위치와 Point에 대한 인스턴스 단위 특징들을 예측한다. 주요 Contribution은 다음과 같다.


1. 일반적인 Semantic Segmentation에 비해, 압축된 결과(Compact Output) 크기를 통한 모델 경량화

2. Post-processing을 통한, outlier 제거

3. 수평, 수직, 임의의 lane 수에 따른, 차선 탐지

4. 차선 탐지에서 낮은 FP 수치를 통한 안정적인 자율 주행



Method




전체적인 방법은 3부분(Resizing Layer, Feature extraction layer, Output branch)으로 나뉘어져 있다. Resizing Layer는 512x256 입력의 크기를 압축함으로써, 연산량을 낮춘다. Feature extraction layer는 차선의 특징을 압축하여 예측에 활용되며, Output branch는 각 grid 단위, confidence, offset and feature instance feature를 예측한다. Loss function은 각 hourglass block의 결과들을 이용하여 계산한다.


Resizing Layer : 512x256 크기의 입력 이미지 크기를 Convolution 연산과 Maxpooling을 이용하여 64x32와 32x16의 크기로 줄인다. 자세한 사항은 다음과 같다.



Feature extraction layer : Key point 단위 높은 성능을 보이는 Stacked hourglass 방법을 활용하였다. 총 2개의 hourglass block을 활용하였으며, Down-sampling, same, Up bottleneck layer로 구성되어 있다. Bottleneck layer를 활용하였기 때문에, 적은 연산량으로도 높은 성능을 보이는 장점을 가지고 있고, Skip layer를 통해 다양한 크기의 Detail 특징들을 유지한다. 


Output branch : Confidence, offset, Feature branch로 구성되어 있으며, 각각의 손실함수는 다음과 같다. 


1. Confidence : stacked hourglass의 안정적인 학습을 도우며, 각 grid 안의 신뢰도 score를 나타낸다.



 

의 경우 grid안의 point가 존재하는지, 존재하지 않는지에 대한 grid의 수를 나타낸다.

G는 grid의 세트 수, 는 grid의 confidence 결과, 은 정답값, 는 각각의 계수


2. Offset branch : 각각의point에 대한 위치값을 나타낸다. 0과 1사이의 값으로 손실함수는 다음과 같다. 


 









3. Feature branch : SGPN이라는 3D point cloud instance segmentation 방법을 활용한 것으로, 각각의 차선 인스턴스에 대한 정보를 나타낸다. 같은 인스턴스일 경우, 더 가깝게 학습이 이루어진다.



일 경우, 같은 인스턴스를 나타내며, 는 다른 인스턴스를 의미한다. K >0 으로 일정한 값을 가진다.




최종 Loss function


모든 계수는 1.0으로 정하였으며, 학습이 진행되는 동안 몇몇 epoch에서는 0.5 or a를 더하여 수행하였다.


Post-processing (후처리 과정) : 일반적으로 부드러운 차선으로 구성되어야 하지만, 시각적으로 구별가능한 일부 outlier, 다른 차선으로 인해 후처리 과정이 필요하다.




Step 1. 6개의 출발 point를 찾아서, 3개의 가장 낮은 지점과 3개의 가장 왼쪽, 오른쪽 지점으로 정의된다. 예측된 차선이 이미지 중심과 관련하여 왼쪽에 있으면, 가장 왼쪽 점으로 선택


Step 2. 각 시작점보다 높은 지점 중에서 시작점에 가장 가까운 3개의 지점을 선택


Step 3. 1, 2 단계에서 선택한 두점을 연결하는 직선을 고려.


Step 4. 직선과 또다른 point 사이의 거리를 계산


Step 5. margin(여백) 내에 있는 포인트 수를 계산, 논문에서는 12로 설정


Step 6. 새로운 시작점으로 임계 값보다 최대 값이 큰 포인트를 선택하고, 해당 포인트가 시작점이 있는 동일한 클러스터에 속하는 것으로 간주, 임계 값을 나머지 포인트의 20%로 설정


Step 7. 2단계에서 포인트를 찾을 수 없을 때 까지 2단계에서 6단계까지 반복, 그림 5 참조


Step 8. 모든 시작점에 대하여 1단계에서 7단계까지 반복하고, 결과 레인으로 최대 길이 클러스터를 고려


Step 9. 1에서 8단계까지 모든 예측된 레인에 대하여 반복


Result



Tusimple 데이터셋에 대한 차선 분포



자세한 평가 결과는 Table 3과 같으며, Table 4는 모델에 대한 파라미터수를 나타낸다. 제안된 방법은 후처리 없이 30 frames per seconds의 성능을, 후처리를 거치면 10 frame per seconds의 성능을 보인다.


참고 자료 


[1] Paper link : https://arxiv.org/abs/2002.06604


[2] Git link : https://github.com/koyeongmin/PINet


[3] https://curt-park.github.io/2018-07-03/stacked-hourglass-networks-for-human-pose-estimation/

반응형