Complex-YOLO Fine Tuning
Kitti 뿐만 아닌, 다른 데이터 셋에 대해 LiDAR Object detection 을 하도록 한다.
- KODAS Dataset
국토자율주행 연구 단체에서 제공하는 데이터 셋
여기서 VLS-128 데이터만을 가지고 3D Detection을 해보겠다.
[데이터 셋 설명]
- Complex-YOLO
목적 : 욜로를 라이다 데이터에 사용하기 위해, Point Cloud 를 Bird-Eye-View Image 에 대해 욜로를 사용하게 된다.
입력 : Projection 과정에서 RGB 맵을 만들때, R 은 Height, G 는 Intensity B 는 Density
Density 는 프로젝션 시킬때, 한 픽셀에 여러 포인트가 들어올 수 있다. 그때의 밀집도를 표현한 것이 Density 이다.
중간 과정 : 이후는 YOLO 와 과정이 동일하다. 하나 다른점은 LiDAR 데이터가 헤딩값이 중요한 3D 데이터이기때문에, Complex Yolo 는 모델의 끝단에 방향을 고려하기위한 오일러 그리드라는 각도에 대한 regression 과정을 넣어두게 된다. 다른 3D 모델의 경우에는 각도값을 360도를 12로 나눠서 regression을 하게 되는데, Complex YOLO 의 경우 각도 값을 복소평면으로 해서 실수부, 허수부로 나눠줘서 inverse tangent 로 했을때, "높이/밑변" 했을때 나오는 각도를 사용하므로 오일러 grid 라고 붙인 것으로 판단. (복소 평면을 사용하기에 complex yolo 인것이다.)
출력 : 포지션, 3D bounding box 에 대한 정보, 헤딩 값
Complex Yolo 에 KODAS 데이터셋을 넣어줬을때, 어느정도 찾기는 하지만, 큰 차 그리고 몇몇 차량을 detecting 을 잘 못해주는 것을 확인할 수 있었다.
이유 : 키티는 64채널이고 KODAS 는 128채널이므로 못찾을 것으로 예상, Kitti 는 같은 진행방향이나 반대 진행 반향의 차에 대한 정보는 많은데 교차로에 대한 데이터가 적기에 Detection 에 에러가 발생하는것으로 보인다.
transfer learning(fine tuning) 이 필요한 부분임을 알 수 있다.
- Fine Tuning
먼저, bird eye view 를 설정해야한다. "몇 by 몇"으로 고려할 것인지 픽셀을 정의해야한다.
정하는 방식에 따라, 속도 또한 달라지고 정확도 또한 많이 달라진다.
좌우 상하 70미터를 커버해야하기 때문에, 발표자는 논문에서 제안하는 608 X 608 크기의 맵보다 더 크게 1216 X 1216 으로 설정하였다.
140 / 1216 이 0.115 m 이므로, 픽셀 격자 하나가 11.5 cm를 커버하는 것이다.
- anchor box 설정
그래프를 사용하여 데이터 분석한 이유가 스마트한 anchor box 를 만들기 위함이다.
설정한 anchor box 에 따라 evaluation 단계에서의 MAP 가 크게 차이가 난다.
2D YOLO 와 달리 orientation 값 (방향, 각도)을 추가하여 줬고, 가장 많았던 -1.7, 0, 1.7로 설정해서 수직, 대각을 표현하였다.
우리 데이터를 사용할때는 1218 X 1218 이 아닌, 408 X 408 정도로 조절하여, frame 속도를 높이고, 보행자 인식에도 성능을 높여보도록 하자.