ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ground-aware Monocular 3D Object Detection for Autonomous Driving 논문 공부
    Computer Vision 2022. 8. 5. 15:19

    논문 공부

    https://ieeexplore.ieee.org/document/9327478

     

    Ground-Aware Monocular 3D Object Detection for Autonomous Driving

    Estimating the 3D position and orientation of objects in the environment with a single RGB camera is a critical and challenging task for low-cost urban autonomous driving and mobile robots. Most of the existing algorithms are based on the geometric constra

    ieeexplore.ieee.org

    논문을 읽으면서 공부한 내용을 정리한 게시물입니다. 초보자가 작성한 내용이므로 틀린 부분이 있을 수 있습니다. 지적하고 싶은 내용은 댓글로 남겨주시면 감사할 것 같습니다.

     

     

    Abstract

     

    논문의 저자는, 먼저 ground plane이 3D detection에서 깊이에 대한 힌트를 어떻게 제공하는지 밝히고, 이러한 정보를 바탕으로 3D anchors의 processing을 어떻게 개선하고 딥러닝 프레임워크에서 이러한 application-specific priors를 완전히 활용할 수 있는 새로운  neural network module을 소개하고자 한다고 한다. 그 다음에 이러한 모듈을 사용하는 효율적인 neural network를 소개하고자 한다고 한다. 마지막으로 이러한 모듈을 사용하는 neural network의 성능을 파악한다고 한다.

     

     

    1. Introduction

     

    자율주행과 로보틱스 분야에서는 종종 중요한 동적인 물체들이 지면 위에 있다는 것을 가정하며 카메라는 그 지면 위의 특정 높이 위에 있다고 가정한다. 일부 전통적인 깊이 예측 방법은 또한 지상 평면의 중요성을 언급하고 실내 환경에 유사한 "floor-wall" 가정을 도입한다. 이러한 perspective prior는 단안 3d object detection에서 굉장히 많은 기하학적인 정보를 제공한다. 몇몇 최근의 논문에서는 perspective prior를 neural network에 명시적으로 주입하였다고 한다.

    저자는 이 논문에서 단안 object detector가 ground plane에 대해 명시적으로 추론할 수 있도록 하기 위한 두 가지 새로운 절차를 제안하고자 한다고 한다.

     

    첫번째 절차는 anchor filtering 으로 이는 neural network의 불변성을 명시적으로 break하는 과정이라고 한다.

    anchor box는 쉽게 말하면, bounding box가 될 수 있는 후보들이다. object detection에서는 anchor box를 미리 정해놓고, object detection을 수행할때 IoU 값이 가장 큰 anchor box를 bounding box로 정한다. IoU는 Intersection over union으로, 두 상자가 겹치는 영역/두 상자의 영역의 합 이다.

     

    anchor와 카메라까지의 사전 거리가 주어지면 anchor를 3D로 backproject한다고 한다. 우리가 관심있는 물체들(차량)은 지면 근처에 위치하기 때문에 역투사된 3D anchor 중에서 ground plane과 멀리 떨어져있는 것들을 테스트, 트레이닝 과정에서 걸러낸다. 이러한 과정은 네트워크가 물체가 나타날만한 위치(지면 근처)에 집중하도록 해준다고 한다. 아직 무슨말인지 잘모르겠어서 Methods 파트를 봐야할 것 같다.

     

    두 번째 절차는 ground-aware convolution(GAC) module이다. 보통 사람에게는 차량 근처의 지면 픽셀이 차량의 3D position, orientation, dimesion을 추론하는데에 도움을 준다.

    anchor-based detector에게는 중앙에 있는 피쳐들이 차량의 3D 파라미터를 예측하는 역할이 있다. 하지만, detector가 인간처럼 지면 픽셀을 사용해서 깊이 정보를 추론하기 위해서는 network 모델이 다음과 같은 절차를 따라야한다.

    • 물체와 지면의 접점을 알아낸다. (위의 그림처럼)
    • perspective geometry를 통해 3D position과 contact point를 계산한다.
    • 아래쪽에 집중하는 수용영역을 통해 contact point의 정보를 수집한다. (수용영역: CNN에서 출력 레이어의 뉴런 하나에 영향을 미치는 입력 뉴런들의 공간 크기)

    출처: https://pubdata.tistory.com/133
    출처: https://www.youtube.com/watch?v=G0kzSRbNF6E&list=LL&index=6

    표준 object detection 또는 깊이 추론 네트워크는 균일한 수용영역을 갖도록 설계되고 perspective geometry 초기값, camera parameter 값이 주어지지 않으므로 neural network가 인간과 같은 추론을 하도록 학습시키는 것은 중요한 일이 된다. 

     

    GAC module은 네트워크가 ground-based 추론을 하도록 가이드하게끔 설계되었다. 저자는 각 픽셀 포인트의 사전 깊이 값을 추가적인 피쳐맵으로 인코딩하고 피쳐맵의 각 픽셀 포인트가 아래에 위치해 있는 픽셀의 특징을 통합하도록 가이드했다고 한다. 이것도 무슨말인지 잘 모르겠어서 Method 파트를 봐야할 것 같다.

     

    저자는 앞서 말한 방식을 네트워크에 통합하면서 명시적인 지면 추론 용도를 가진 one-stage 프레임워크를 소개한다. 그리고 단안 깊이 추론에 대한 u-net 기반 구조에 GAC 모듈을 통합한다. 두 가지 네트워크는 KITTI 데이터셋에 대해 SOTA 성능을 달성한다고 한다.

     

     

    2. Related Work

     

    Pseudo-LiDAR for Monocular 3D Object Detection

    PointCloud는 라이다 센서, RGB-D 센서 등으로 수집되는 데이터로 이러한 센서들은 물체에 빛/신호를 보내서 돌아오는 시간을 기록하여 빛/신호 당 거리 정보를 계산하고 하나의 포인트를 생성한다. 의사(Pseudo) 라이다 기술은 센서 없이 이러한 PointCloud를 mono 또는 stereo 이미지 내에서 픽셀의 심도를 분석하여 만들어내는 기술이다.

     

    One-stage Detection for Monocular 3D Object Detection

    Single stage detector는 localization과 classification을 동시에 수행하는 object detection 기술이다. YOLO, SSD, PointPillar 등의 모델이 여기에 해당한다.

     

    Supervised Monocular Depth Prediction With Deep Learning

    생략

     

     

    3. Methods

     

    Anchors Preprocessing

     

    앞서 저자는 anchor을 3D로 역투사해서 지면과 멀리 떨어져있는 anchor들을 걸러내는 filtering 과정을 수행한다고 했다. 이 파트에서 그 과정이 어떻게 수행되는지 설명하고 있다. 

    우선 anchor는 YOLO를 따라서 dense-anchor를 사용하여 bounding box를 dense하게 예측한다고 한다. 3D anchor는 2D bounding box ([x, y, w2d, h2d])와 3D로 표현되는 물체의 중심([cx, cy, z]), 3D bound box의 너비, 높이, 깊이([w3d, h3d, l3d]) 그리고 관찰 각도 ɑ([sin(α),cos(α)]) 총 12개의 파라미터로 이루어져있다.

    anchor box 또는 물체의 모양과 사이즈는 깊이와 연관성이 높다. 저자는 깊이 z의 분산이 object의 이미지에서의 크기와 역비례하는 것을 관찰하였으며 이를 바탕으로 각각의 anchor을 물체를 각자의 평균, 분산을 가지고 있는 분포로 가정한다. 따라서 이러한 anchor들의 통계적 값을 구하기 위해 training set을 반복하며 각각의 anchor box에 대해 깊이값 z의 평균과 분산, 그리고 cosɑ, sinɑ 값을 계산한다.

    이렇게 통계적 값이 계산된 anchor는 다음과 같은 식으로 3D로 역투사 될 수 있다.

    여기서 (u,v)는 anchor의 중심 좌표이며 /z 값은 training 과정에서 계산된 깊이 z의 평균값이다. 대부분의 물체(차량)은 지면 근처에 위치해 있기 때문에 y3d 값이 지면과 너무 멀리 떨어져있는 anchor는 걸러진다. 이러한 방식은 네트워크가 지면 근처에 집중할 수 있도록 해주며 classification 문제를 단순화한다고 한다.

     

    Ground-Aware Convolution Module

     

    GAC module의 구조는 다음과 같다.

    저자는 GAC 모듈의 역할이 물체의 중심으로부터 피쳐를 추출하고 지면과의 접점으로부터 깊이 정보를 추론하기 위함이라고 한다.

     

    네트워크에 perspective geometry를 주입하기 위해, 우선 각각의 pixel point에서의 초기 깊이 값 z를 지면에 있다고 가정하여 인코딩한다. 핀홀 카메라 모델에 따라서 깊이 값 z와 높이 y3d 값은 다음과 같은 수식으로 표현될 수 있다.

    수식 1

    여기서 fy는 focal length, cy는 principal point, Ty는 relative translation을 나타낸다. 여기서 카메라의 높이 EL의 값을 안다고 가정하면 수식은 다음과 같이 나타낼 수 있다.

    수식 2

    수식2는 수식1의 y3d에 EL값을 대입한 것이다. 

    수식 2의 분모 부분을 보면, v=cy에서 연속이 아니라는 것을 알 수 있다. 또한 위의 그림을 보면, v<cy인 부분은 이미지 밖으로 벗어나기 때문에 물리적으로 닿을 수 없는 것을 알 수 있다. 저자는 이러한 문제점에 대해서 문제를 돌아가기 위한 방법으로 깊이 정보를 virtual stereo setup의 disparity로 인코딩할 것을 제안한다. virtual stereo가 뭔지 잘 모르겠다..

    Disparity는 Stereo, 즉 두 개의 이미지(left image, right image)에서의 객체의 위치 상의 다른 차이를 말한다. 

    virtual disparity를 수식 2 즉, z 값을 통해 다음과 같이 도출해낸다고 한다. 여기서 B는 baseline 값으로 좌우 카메라의 간격을 뜻한다.

    수식 3
    Stereo vision-based navigation for an autonomous helicopter - Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/Stereo-disparity-principle-for-parallel-cameras_fig1_27469561 [accessed 5 Aug, 2022]

     

    그 다음, ReLU activation function을 적용해서 0보다 작은 disparity 값을 가지는 픽셀을 0으로 바꾸는 과정을 거친다.

    출처:&nbsp;https://medium.com/@kmkgabia/ml-sigmoid-대신-relu-상황에-맞는-활성화-함수-사용하기-c65f620ad6fd

    이러한 두 가지의 과정을 거치고 나면 이미지의 깊이 초기값은 공간적으로 연속적이고 모순이 없는 값을 가지게 된다고 한다.

     

    저자는 이러한 깊이 초기값을 base 피쳐맵과 동일한 공간적인 사이즈를 갖는 추가적인 피쳐맵으로 사용하여 각각의 피쳐맵이 깊이 초기값으로 인코딩되게끔 한다고 한다.

     

    앞전에 말했듯이, 물체의 중심에 있는 픽셀은 물체와 지면과의 접점으로부터 깊이 정보와 이미지의 피쳐를 알아내야한다고 한다. 또한 이러한 접점은 보통 물체의 중심 아래에 위치한다.

    피쳐맵의 각각의 포인트 pi는 오프셋 δyi를 foreground object의 중심이라고 가정하고 동적으로 예측한다. 

    수식 4

    자세한 것은 모르겠지만, 접점의 이미지에서의 좌표 δyi를 닮음을 사용해서 구하는 수식인 것 같다. 수식 4에서 hˆ는 물체의 높이(데이터셋의 전경의 물체의 높이의 평균으로 고정한다고 한다)이고, ∆i는 convolution networks가 예측한 residual이다.

     

    그 다음에는 선형보간법을 사용해서 pi + δyi 위치의 feature fi′ 를 추출해낸다고 한다. 선형 보간법(linear interpolation)은 끝점의 값이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법이다. 

    이렇게 추출해낸 feature fi′는 residual connection으로 원점 pi와 다시 합쳐진다.

    residual connection 출처:&nbsp;https://towardsdatascience.com/what-is-residual-connection-efb07cab0d55

     

    GAC 모듈은 사람이 지면으로부터 깊이 인식을 하는 과정을 모방하여 아래에 있는 픽셀에서 geometric prior과 feature를 추출해낸다. 그 다음에 prior과 target 사이의 깊이 residual을 예측하는 부분은 다른 파트의 네트워크가 담당하는 일이다. GAC 모듈은 전체 네트워크와 함께 end-to-end 방식으로 훈련된다. end-to-end learning은 입력에서 출력까지 파이프라인 네트워크 없이 신경망으로 한 번에 처리 한다는 의미이다. 파이프라인 네트워크는 전체 네트워크를 이루는 부분적인 네트워크이다.

     

    https://velog.io/@jeewoo1025/What-is-end-to-end-deep-learning

     

    Network Architecture for Monocular 3D Detection

     

    저자는 Backbone 네트워크로 ResNet-101을 사용했다고 한다. 

    Backbone 파트는 CNN을 거쳐 feature map을 생성하는 파트이다.

    https://velog.io/@hewas1230/ObjectDetection-Architecture
    https://velog.io/@hewas1230/ObjectDetection-Architecture
    ResNet(2015) 논문

    전체 네트워크 구조는 밑의 사진과 같다.

    Backbone에서 추출된 feature map은 classification, regression 두 갈래의 branch로 들어간다.

    classification branch는 두 개의 convolution layer로 이루어진 반면에 regression branch는 GAC module과 convolution output layer로 이루어져있다.

     

    Classification branch의 output tensor는 (B, W , H , K ∗ #anchors) 모양이고 regression branch는 (B, W , H , 12 ∗ #anchors)모양이다. 여기서 K는 클래스 수이고 #anchors는 픽셀마다의 anchor의 수이다.

    tensor는 간단히 말하면 다차원의 배열이다.

     

    1) Loss function

    토탈 로스는 classification loss와 regression loss의 합이다. 

    objectness에 대한 loss는 focal-loss, width, height, length에 대한 multi-bin classification에는 cross-entropy loss를 사용했다고 한다. 다른 파라미터는 smoothed-L1 loss를 통해 optimize 되었다고 한다.

     

    2) Post Optimization

    post-optimization procedure로 hill-climbing algorithm을 적용했다고 한다. Hill-climbing Search는 최적의 해를 찾아 값이 증가하는 방향이나 감소하는 방향으로 계속 이동하는 알고리즘으로 더 이상 올라갈 곳이 없다면 그곳을 최적값으로 간주하는 알고리즘이라고 한다. 즉, global 최적값이 아닌 local 최적값을 찾는다.

    관찰 각도와 깊이 추청값을 조금씩 변화시키면서 2D로부터 직접적으로 도출된 bounding box와 3D bounding box가 2d 이미지로 project된 bounding box 사이의 IoU 값을 점차 증가시키는 방향으로 알고리즘이 작동한다고 한다. hill-climbing algorithm을 적용한 참고 논문에서 깊이와 각도를 동시에 optimize 했던 것과는 다르게 각도만을 optimize 하는 것이 validation set에서 더 좋은 성능을 보이는 것을 반복 실험을 통해 알아냈다고 한다.

     

    Network Architecture for Monocular Depth Prediction

     

    깊이 추정을 위한 네트워크 구조는 supervised dense depth prediction을 위해 U-Net 구조를 사용하고 pretrained ResNet-34를 backbone 인코더로 사용했다고 한다.

    디코딩 파트에서는 피쳐가 두 갈래로 unsample되고, 두 개의 convolution layer를 거쳐 skip connection과 concat 되었다고 한다. 또한, convolution layer를 거치기 전에 GAC 모듈은 먼저 거치도록 했다고 한다.

     

     

    4. Experiments

     

     

    5. Model Analysis and discussion

     

     

     

    6. Conclusion

     

    저자는 자율 주행을 위한 ground-aware monocular 3D obejct detection을 제시했다. 첫번째, anchor filtering 절차와 두번째, ground-aware convolution network를 소개했다. 제안된 방법은 KITTI detection 벤치마크에서 SOTA 퍼포먼스를 달성했고 단언 깊이 추론 작업에서 GAC 모듈을 추가로 테스트 했으며 KITTI 깊이 예측 벤치마크에서 경쟁력 있는 결과도 도출했다고 한다.

     

    저자는 "floor-wall" 가정이 특정 카메라 포즈로 제한되며 복잡한 운전 상황에서는 부분적으로만 적용된다는 점에 주목하여 새로운 절차를 제안한다고 한다. 제안된 방법은 여전히 지면 및 다른 객체의 경계를 기반으로 명시적으로 추론하지 않지만 충분한 정보와 사전 정보를 네트워크에 인코딩하고 data-driven approach를 채택하였다고 한다.

    저자는, 그럼에도 불구하고, 제안된 방법이 이미지에서 3D 감지 및 깊이 추론의 경계를 확장하고 자율 주행 및 모바일 로봇 장면을 위한 강력한 신경망 모델을 생성한다고 한다.

     

     


    | 참고 목록 |

    https://www.youtube.com/watch?v=G0kzSRbNF6E&list=LL&index=6 

    https://daeun-computer-uneasy.tistory.com/62?category=1035045

     

    [ObjDet] Pointcloud를 통한 3D Object Detection 관련 기본 개념 정리 ʕ•ᴥ•ʔ

    오늘은 3D Object Detection 관련 알아둬야 할 기본 개념을 정리해보려고 합니다! 저도 공부하며 정리한 내용이라 많이 미숙할 수 있습니다 :) 주로 Point cloud를 활용한 3D Detection의 갈래에 대한 기본 개

    daeun-computer-uneasy.tistory.com

    https://gaussian37.github.io/dl-concept-focal_loss/

     

    Focal Loss (Focal Loss for Dense Object Detection) 알아보기

    gaussian37's blog

    gaussian37.github.io

    https://23min.tistory.com/8

     

    포인트 클라우드(Point Cloud)란?

    Point Cloud Lidar 센서, RGB-D센서 등으로 수집되는 데이터를 의미한다. 이러한 센서들은 아래 그림처럼 물체에 빛/신호를 보내서 돌아오는 시간을 기록하여 각 빛/신호 당 거리 정보를 계산하고, 하

    23min.tistory.com

    https://eehoeskrap.tistory.com/103

     

    [Stereo Vision] Disparity Map 생성

    [Stereo Vision] Disparity Map 생성 1. Disparity Map 이란? Disparity는 Stereo 정합을 위한 두 이미지(left image, right image, 또는 왼쪽에서 보는 시야와 오른쪽에서 보는 시야를 말함)에서의 객체의 위치..

    eehoeskrap.tistory.com

    https://m.blog.naver.com/dldlsrb45/220878488912

     

    스테레오 비전(Stereo Vision)

    Ⅰ. 스테레오 비전(stereo vision)이란? 사람의 시각 시스템을 모방한 기술이며, 최근 자율 주행 자동차의 ...

    blog.naver.com

    https://towardsdatascience.com/what-is-residual-connection-efb07cab0d55

     

    What is Residual Connection?

    A technique for training very deep neural networks

    towardsdatascience.com

    https://daeun-computer-uneasy.tistory.com/28

     

    [CV] ResNet - Residual Connection(잔차연결)

    📊📈논문 참조 0. 등장 배경 VGG16, 19 : 3*3 filter를 이용해 레이어의 깊이를 늘려 우수한 성능을 보였다. 특히 CNN 계열에서 레이어가 깊어지면 특징이 더 풍부해지기 때문에, CV 분야에서의 네트워

    daeun-computer-uneasy.tistory.com

    https://velog.io/@jeewoo1025/What-is-end-to-end-deep-learning

     

    What is end-to-end deep learning?

      end-to-end learning은 입력에서 출력까지 파이프라인 네트워크 없이 신경망으로 한 번에 처리한다는 의미이다. 파이프라인 네트워크란 전체 네트워크를 이루는 부분적인 네트워크이다. 예를 들어

    velog.io

    https://answerofgod.tistory.com/701

     

    인공지능 탐색 알고리즘 4-Local Search

    이제부터는 현실적인 문제를 해결하는 알고리즘입니다. Local Search는 반복적인 개선알고리즘입니다. 탐색경로가 아닌 최적화 문제의 경우 쓰입니다. 우선 한가지 상태를 나열해 놓고 조금씩 수

    answerofgod.tistory.com

     

    댓글

Designed by Tistory.