10월에 파리 가게 되었습니다. -고 했죠. 사실, 지금 파리입니다. 유럽은 정말 좋네요.. 학회도 유익하고 음식(와인)도 맛있고 정말 행복합니다. 이건 나중에 따로 후기를 남기도록 할게요. 제 포스터 세션은 금요일에 있습니다. 아직 발표 연습은 안 했지만요. 포스터가 있으니까 그냥 질의응답만 받으면 된다고 생각은 하는데, 영어로 말하는 게 서툴러서 살짝 긴장은 됩니다. 그래서 오늘은 내용도 복습할 겸, ICCV 2023에 합격한 논문 "PG-RCNN: Semantic Surface Point Generation for 3D Object Detection"을 소개해보겠습니다.
인공 지능이나 컴퓨터 비전 분야를 공부하면 가장 먼저 배우게 되는, 컴퓨터 비전의 기본 문제 삼대장이 있습니다. 첫 번째는 영상 인식 (image recognition)입니다. 영상 분류 (image classification)이라고도 불리는데요, 영상에 담긴 사물의 범주(class)를 예측하는 문제입니다. 간단하게 말해서 주어진 영상이 무슨 영상인지. 고양이 영상인지, 강아지 영상인지, 존재하는 범주 중에 하나로 영상을 분류하는 문제이죠. 두 번째는 객체 검출 (object detection)로, 영상에 존재하는 사물의 범주뿐만 아니라 위치까지 예측하는 문제입니다. 무엇이, 어디에 있는지 맞춰야 하기 때문에 영상 인식보다 조금 더 어려운 문제라고 볼 수 있습니다. 객체 검출 문제에서는 한 영상 안에 여러 객체가 존재하기도 하는데요, 각 사물의 위치는 해당 사물의 경계 상자(bounding box)로 표현합니다. 마지막은 영상 분할 (image segmentation)입니다. 객체 검출에서 더 나아가서 사물에 해당하는 영상 분할 마스크 (segmentation mask)를 픽셀 단위로 예측하는 문제입니다. 경계 상자 안에는 사물 외에도 배경에 해당하는 픽셀이 존재하지만, 분할 마스크는 사물에 해당하는 픽셀 영역만을 포함하기 때문에 그 물체의 모양까지 표현할 수 있습니다. 가장 높은 차원의 객체 표현을 학습하고 예측하기 때문에 셋 중에서 가장 어려운 문제가 되겠습니다.
컴퓨터 비전 문제 3대장 (Classification, Detetion, Segmentation)
그럼 3D 객체 검출(3D object detection)은 어떤 문제인지 예상이 가시나요? 생각하신 대로, 3D 객체 검출은 물체의 범주와 함께 3D 공간 상에서 위치를 예측하는 문제입니다. 2D 객체 검출에서의 경계 상자는 상자의 XY좌표와 너비, 높이, 이렇게 4개의 값으로 표현이 된다면 (x, y, w, h), 3D 객체 검출에서의 경계 상자는 여기에 Z좌표 및 깊이 성분, 그리고 Y축 기준의 회전(rotation) 정보까지 추가됩니다 (x, y, z, w, h, l, r). 또, 2D 객체 검출 문제는 보통 RGB 영상을 입력으로 사용하는 반면, 3D 객체 검출에서는 물체까지의 정확한 거리 정보를 아는 것이 매우 중요하기 때문에 LiDAR 센서를 통해 얻는 포인트 클라우드(point cloud) 입력을 일반적으로 사용합니다. (물론 RGB 영상을 함께 사용하기도, RGB 영상만을 사용하기도 합니다.) 아래 그림을 보면 알겠지만, LiDAR 센서 입력은 레이저 펄스를 쏘고 반사 정보를 활용하여 거리를 측정함으로써 높은 정확도의 3D 정보를 제공할 수 있지만, RGB 영상처럼 해상도가 높지는 않습니다. 특히 먼 거리의 물체나 장애물에 가려진 물체의 경우 수집되는 정보가 매우 희박하다는 한계가 있습니다.
Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection (AAAI 2021)
Voxel R-CNN은 먼저 포인트 클라우드 입력을 voxelization 과정을 통해 정규화된 복셀(3D 픽셀)로 옮긴 후 3D backbone을 통과시킵니다. 포인트 클라우드 입력은 전체 공간에 비해 정보가 존재하는 복셀이 매우 적은 편에 속하기 때문에, 비어있는 복셀에 대해서는 연산을 진행하지 않는 sparse convolution 연산을 사용합니다. 이후, 공간을 위에서 내려다보는 시야, bird's-eye-view (BEV, 조감도)로 특징을 사영하여 우리가 다루기 쉬운 2D 공간으로 옮긴 후, 다시 CNN을 통해서 1단계 예측을 진행합니다.
사실 여기까지는 SECOND (Sensors 2018)에서 제안한 방법과 크게 다르지 않습니다. Voxel R-CNN은 1차적으로 예측한 관심 영역 (region of interest, RoI)에 대해 backbone 특징을 다시 한번 추출하고 처리함으로써 예측을 보정합니다. Voxel R-CNN의 참신함은 RoI 특징 추출 및 가공 방법에서 관심 영역 주위의 복셀 정보를 곧바로 활용한다는 데에있습니다.
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (NeurIPS 2015)
2D 객체 검출을 공부해 보신 분이라면 Voxel R-CNN의 아이디어가 낯설지 않게 느껴지실 것입니다. Faster R-CNN (NeurIPS 2015)로 대표되는 R-CNN 방법이 이러한 2단계 검출 방법을 이미 제안했기 때문입니다. 사실 3D 객체 검출 모델 중에서도 Voxel R-CNN 외에도 Point R-CNN (CVPR 2019), PV-RCNN (CVPR 2020), CT3D (ICCV 2021), PDV (CVPR 2022) 등 이러한 R-CNN 계열의 모델들이 매년 등장하고 있습니다. 이들은 각각 2단계 예측에서 RoI 특징을 어떻게 추출하고 활용하느냐에 차별성을 갖습니다. 저희가 이번에 합격한 논문, PG-RCNN도 이 커다란 R-CNN 계열의 프레임워크를 따릅니다.
3. PG-RCNN
앞서 LiDAR 센서 기반 3D 객체 검출에서 어려움을 유발하는 요소 중에, 정보의 희소성(sparsity)에 대해 이야기했습니다. 먼 거리에 있거나 장애물에 가려진 물체의 경우, RoI 내부에 정보를 제공할 수 있는 포인트 자체가 많이 부족하다는 것이죠. 가까이 있는 물체라도 한 번 빛이 물체 표면에 닿으면 반사해 버리는 LiDAR 센서의 특성상, 가려진 뒷면의 모양 정보를 수집할 수 없기도 합니다 (Self-occlusion). PG-RCNN은 이러한 한계에 착안하여, RoI에 추가로 점을 생성하여 포인트 클라우드 정보를 보완하자는 단순한 아이디어에서 출발했습니다.
PG-RCNN은 RoI에 대해서 포인트 생성 (point generation), 정확하게는 semantic surface point generation을 진행합니다. Semantic surface point가 도대체 무슨 뜻인지, 이야기해 보겠습니다. 첫째로 "Surface point"입니다. 아래 그림은 실제로 우리가 관측할 수 있는 포인트 클라우드와 정답 경계 상자를 표시하고 있습니다. 왼쪽부터 각각 자동차 (car), 자전거 주행자 (cyclist), 보행자 (pedestrian) 범주의 데이터입니다.
Examples of RoI point clouds and ground truth bounding boxes
보시다시피 존재하는 포인트 정보가 꽤 듬성듬성(?)합니다. 학습을 위한 정답 경계 상자가 있지만 물체의 크기나 위치에 대한 간략한 정보만 제공할 뿐 그것만으로는 실제 물체의 모양을 유추하기가 어렵습니다. PG-RCNN은 여기에 "surface points" - 즉, 물체의 표면을 나타내는 포인트 클라우드를 생성합니다. 그럼 더 정확하게 물체의 모양과 위치를 표현할 수 있겠지요.
그러기 위해서는 학습에 필요한 생성 목표 (generation target), 즉 정답이 필요합니다. 저희는 정답 경계상자와 내부 포인트 클라우드를 통해서 '정답 surface points'를 생성하기 위해 BTCDet (AAAI 2022)에서 사용한 전체 모양 유추법을 활용했습니다. 간단하게 요약하면, 1) 데이터셋 내에서 같은 범주, 비슷한 크기 및 포인트 클라우드 분포를 가진 물체들을 찾아내고, 2) 그들의 point cloud를 더한 뒤 3) car 및 cyclist는 좌우대칭성이 있다는 성질을 활용해서 Y축에 대해 mirroring을 진행합니다. 그 결과는 아래와 같습니다.
Approximation of complete object shapes (by BTCDet)
이렇게 생성된 정답 surface points는 기존의 경계 상자보다 훨씬 더 높은 차원의 정보를 제공할 것입니다. 마치 영상 분할 문제의 분할 마스크처럼요. 학습에는 두 포인트 클라우드의 차이를 표현하는 Chamfer distance를 손실함수로 사용했습니다.
Chamfer distance Loss to supervise point offset
두 번째로 "Semantic point"이란 무엇일까요? semantic이라는 단어를 한국말로 옮기면 '의미론적'이라는 뜻인데요, 여기서는 생성하는 포인트마다 그 점의 '의미'를 담은 벡터를 부여한다는 뜻입니다. 이 벡터 정보는 이 점이 배경에 포함되는 점인지, 또는 전경(foreground), 다시 말해 자동차, 자전거 주행자, 보행자에 속한 점인지에 대한 예측하는 데에 활용되고, 또 최종적으로 PG-RCNN이 객체 탐지를 하기 위해 생성된 점들의 정보를 처리할 때에도 중요한 역할을 합니다. Semantic 정보를 학습하기 위해서는 각 point가 정답 경계 상자에 들어있는지에 따라 전경 마스크를 부여한 뒤, 전경 포인트로 예측한 확률에 Focal Loss를 적용하여 학습을 진행했습니다.
Focal Loss to supervise point semantics
... 좀 어렵죠? 한 줄로 요약하면 PG-RCNN은 물체의 의미(semantic)와 형태(surface) 정보를 담은 점 (point)을 생성(genration)한다-고 이해하시면 될 것 같습니다. 곧 생성 결과를 보시면 금방 감이 오실 거예요. 아무튼, 이렇게 생성한 semantic surface points를 PG-RCNN은 PointNet++ (NeurIPS 2017) 기반의 네트워크로 처리해서 최종적인 2단계 예측을 진행합니다. 아래는 PG-RCNN의 도식인데요, 위에 Voxel R-CNN과 비교를 해보시면 유사한 부분이 많습니다.
PG-RCNN: Semantic Surface Point Generation for 3D Object Detection (ICCV 2023)
PG-RCNN 역시 SECOND 기반의 1차 예측을 진행하고, Voxel R-CNN에서 사용한 방식으로 RoI 특징을 먼저 등간격으로 추출합니다. 다만 Voxel R-CNN은 추출한 특징으로 곧바로 2차 예측 결과를 내놓는 반면, PG-RCNN은 위에서 소개한 추가 손실함수를 활용해서 RoI Point Generation (RPG) 모듈에서 semantic surface points를 생성하고, 위에서 말한 대로 Detection head에서 생성한 point들을 처리해서 2차 예측을 진행합니다. 그럼 끝! (RPG 모듈 구조의 자세한 설명은 생략하겠습니다.) 여기까지가 PG-RCNN의 구조와 작동 방식 소개였습니다. 긴 설명 따라와 주셔서 감사합니다. 그럼 이제 PG-RCNN의 결과를 함께 보시겠습니다.
4. 결과 비교
아래 사진은 저희 논문의 첫 그림으로 소개한 PG-RCNN의 포인트 생성 결과 및 검출 결과입니다.
빨강 - 1단계 검출 결과 (관심 영역) / 노랑 - 포인트 생성 결과 / 초록 - 2단계 검출 결과 / 파랑 - 정답 경계 상자
왼쪽 관심 영역을 보면, 물체가 실제로 존재하는 영역 외에도 위양성(False positive) 검출 결과가 많이 존재하기도 하고, 실제 물체 근처에서 검출한 결과도 정답 경계 상자와 다소 어긋난 부분이 있는 것을 확인할 수 습니다. 그러나 2단계 검출을 진행하면, 적절한 역치 설정(thresholding)을 통해 위양성 검출 결과를 제거할 수 있고, 좀 더 정답 경계 상자와 일치하는 결과를 낼 수 있죠. 또 유의미한 것은 semantic surface point 생성 결과인데요, 지금 전경 확률 예측값이 일정 이상인 점들만 표시한 위의 그림에서 생성한 노란 점들이 정말 그 위치에 존재하는 차의 모양을 표현하고 있다는 것이지요.
비교를 위해 앞서 있었던 포인트 생성 기반의 방법을 하나만 살펴보겠습니다. SIENet (Pattern Recognition 2022)은 PG-RCNN의 첫 개발 동기 - RoI에 점을 추가해서 정보량을 늘린다 - 를 공유하는 논문으로, 관심 영역에 대해서 별도로 학습한 포인트 생성 네트워크로 점을 추가하는 방법을 선택했습니다. 그러니까, 어디에 자동차가 있다고 예측을 하면 그곳에빽빽이 점을 추가해서 자동차 모양의 포인트 클라우드를 생성한다는 뜻입니다.
SIENet의 포인트 생성 방식에는 크게 두 가지 문제점이 있습니다. 첫째는 생성 포인트가 실제로 전경 포인트인지에 대한 고려 없이, 모든 관심 영역에 대해 구분 없이 포인트 클라우드를 생성한다는 것. 둘째는 포인트 생성 네트워크가 딱히 관심 영역의 특징 정보를 활용하지 않는다는 것입니다. 이러한 문제점 때문에 SIENet의 포인트 생성 결과는 PG-RCNN과 전혀 다른 양상을 갖게 됩니다. 아래는 SIENet과 PG-RCNN의 포인트 생성 결과 및 검출 결과를 비교한 것입니다.
SIENet과 PG-RCNN의 포인트 생성 결과 및 검출 결과 비교 (1)
SIENet은 말한 첫 번째 문제점 때문에 모든 관심 영역에 대해 '물체가 있다고 가정하고' 동일한 의미를 갖는 포인트 클라우드를 생성합니다. 그래서 맨 윗줄에 보이는 것처럼 위양성 예측에 대해서도 노란 점들이 알아볼 수 없게 생성되죠. 반면 PG-RCNN은 생성한 포인트에 전경 확률 예측을 진행하기 때문에, 실제로 물체가 존재하는 위치에 대해서만 높은 확신을 갖고 포인트를 생성합니다. 그렇게 생성한 포인트는 2D 시야로 사영했을 때에도 실제 물체 모양과 일치하고요. 각 관심 영역의 포인트 생성 결과와 검출 결과를 더 자세히 들여다보면 SIENet과 PG-RCNN의 차이는 더 극명하게 드러납니다.
SIENet과 PG-RCNN의 포인트 생성 결과 및 검출 결과 비교 (2)
SIENet은 PG-RCNN에 비해 더 많은 점을 생성해서, 언뜻 보면 더 나은 포인트 클라우드를 생성했다고 비칠 수도 있겠습니다. 그러나 객체 검출의 관점에서 볼 때, SIENet이 생성하는 점들은 1단계 검출 결과 (빨간색 경계 상자) 안에 위치하며, 정답 경계 상자와는 무관하게 생성됩니다. 최종 검출도 생성한 포인트와는 딱히 무관하게 이루어지는 것 같습니다. 생성한 point가 사실상 객체 검출에는 쓸모가 없었던 거죠. 아이러니하죠, pointless point generation이라니. 반면 PG-RCNN을 보면, 동일한 1단계 검출 결과를 가질 때에도 관심 영역의 복셀 정보를 파악하여 포인트를 생성하기 때문에 좀 더 정답 경계 상자에 근접하게 포인트 클라우드가 생성되는 것을 볼 수 있습니다. 그리고 최종 검출 결과도 포인트 생성 결과에 상응하게 나타납니다. PG-RCNN에서의 포인트 생성 과정이 좀 더 객체 검출에도 유의미한 과정이었다는 뜻이겠지요.
정량적 비교를 해보면 아래와 같습니다.
PG-RCNN과 선행 연구들의 성능 비교
왼쪽부터 두 열 (Parameters, Latency)은 모델의 효율성을 나타내는 척도로 낮으면 좋고, 나머지는 각 범주에 대한 검출 난이도에 따른 정확도로 높을수록 좋습니다. PG-RCNN이 모든 지표에서 가장 좋다고 볼 수는 없지만, baseline Voxel R-CNN보다 모델의 크기는 3배 작으면서 조금은 더 나은 성능을 보유하고 있습니다. 모델 설계에서 파라미터 수를 크게 낮춰서 실행 속도는 1단계 검출 모델에 비견할 수준이고요. SIENet보다는 모델 크기가 11배 이상 작고, 실행 속도도 2배가량 빠른데요. 물론 SIENet보다는 Car에서 조금 성능이 떨어지긴 합니다만 이는 SIENet이 고도화된 1단계 검출 방법을 사용하기 때문입니다. 1단계 검출 방식을 저희와 동일하게 설정하면 저희 모델보다 낮고, Voxel R-CNN에 비견하는 수준입니다. SIENet의 성능 향상이 Point Generation에서 비롯되었다고 보기는 어렵다는 점을 미루어 보았을 때 PG-RCNN은 분명 유의미한 성능을 보이고 있다... 고 생각합니다. (사실 정량적 성능 지표가 조금 약해서, 논문이 합격할 수 있을까 걱정이 많았는데 리뷰어들이 아이디어와 방법론의 타당성, 모델의 효율성을 종합적으로 검토해 주신 것 같아요. 다행입니다.)
요약하면, PG-RCNN은 semantic surface points generation을 통해 물체의 모양을 예측하여, 효과적으로 그 크기와 위치 정보까지 검출해 낼 수 있습니다. 제안하는 방법은 기존 3D 객체 검출 모델과 비교해서 우수한 성능 trade-off를 보입니다. 개인적으로는 포인트 생성 결과 자체가 더 높은 차원의 물체 표현이기 때문에 설명 가능성 (explainability) 측면에서도 사용자에게 유의미한 정보를 제공한다고 생각을 합니다. 생성 결과가 꽤 흥미롭지 않나요? 나만 그런가 히히...
아무튼, 이것이 이번에 올해 제가 쓴 논문 PG-RCNN의 설명이었습니다. 석사 후배 인영이가 공1저자로 함께 많은 시간을 갈아 넣었고, 그 외에도 세호 형, 우진, 희선 이렇게 3D팀이 함께 참여했습니다.
많은 분들께 논문 합격 축하는 받았는데 막상 제가 어떤 연구를 하는지는 모르시니까요, 저는 무슨 일을 하는 사람인지 이렇게 가끔씩은 소개를 드리고 싶었습니다. 좋은 논문이 나오면 인사드려야지, 생각했는데 이게 참 오래도 걸렸네요. 내놓은 결과물도 막 기가 막힌다! 천재적이다! 이런 느낌은 아닙니다. 그래도 PG-RCNN은 개인적으로도 '첫' 국제학회 논문으로써 제게는 큰 의미로 남는 연구일 것 같습니다. ICCV라는 이렇게 좋은 학회에 낼 수 있게 돼서 영광이고요, 금요일 발표도 잘 마치고 귀국하겠습니다. 긴 글 읽어주셔서 감사합니다!