본문 바로가기

프로그래밍/종합설계 딥러닝 프로젝트

FCAF3D(딥러닝 모델) 논문 리뷰 및 분석

사과를 3D로 감지하기 위해서 딥러닝 모델을 선정하였는데 SUNRGBD(벤치마크) 데이터셋에서

2022년 1월까지 가장 성능이 좋았고(state of the art)

복셀을 이용한 방식으로 pointcloud만으로 빠르게 객체를 감지하는 등 강점이 있는 모델이라 최종선정 하였습니다.

(선정과정에서 10편이상의 논문을 보고 다른 모델들도 돌려보았지만 사과에 대한 이 모델의 성능이 월등히 좋았습니다.)

참고로 SUNRGBD 데이터셋은 3D Detection의 정확도를 평가할수 있는 척도로서 이용되는 데이터셋으로 총 만개이상의 실내 물체에 대한 데이터이고 가장 유명한 데이터셋중 하나입니다.

이것에 대해 다음 포스팅에서 자세히 설명하겠습니다.

 

논문의 출처는 다음과 같습니다.

 

FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection

Published 1 December 2021
Computer Science
ArXiv
 

먼저 모델을 리뷰하기 앞서서 복셀이라는 개념을 알아야 합니다.

3D에서 복셀은 2D에서 픽셀에 대응되는 개념으로 광범위한 3차원 공간을 작은 정육면체들도 쪼개서 나타낼수 있습니다.

그 단위 정육면체를 복셀이라고 부릅니다. ( 복셀의 크기는 사용자가 원하는데로 조정할수 있고 이 논문에서는 1cm입니다.)

 

한 정육면체를 그 일대 pointcloud들의 평균과 대응 시키면 그 공간은 물체가 차지하는 영역으로 생각할수 있습니다.

예를 들어 마인크래프트 게임을 생각하시면 이해가  쉽습니다. 이렇게 하면 장점이 pointcloud에 대해 컨볼루젼(convolution) 연산이 가능해져서 feature를 쉽게 뽑을수 있습니다. 이제 모델에 대해 리뷰하겠습니다.

 

모델의 구조도 입니다.

 

Block이 4개까지 있는 4단 구조이지만 사실은 각 Block 별로 feature 사이즈만 두배씩 커질뿐이고 동일한 작업을 수행하여 정확도를 높이는 방식입니다.

작업은 2D 딥러닝 모델들과 유사하게 복셀화된 pointcloud에 대해 3D컨볼루젼(convolution) 연산과 풀링(pooling)과정을 통해 feature를 추출하는 일반적인 방식입니다. 하지만 2D일때 보다 3D일때는 작업량이 훨씬 많아 지기때문에 모든 복셀에 대해 컨볼루젼 연산을 하는것이 아니라 sparse matrix(희소 행렬)방식을 사용해서 연산량을 줄입니다.

(이 방식은 전체 복셀에서 비어있는 공간이 많을때 효과적입니다.)

 

참고) 2D와 3D convolution 연산 비교

 

Block을 더 늘린다면 더 객체를 세밀히 검사할수는 있으나 시간이 오래 걸리기 때문에 감지하고 싶은 물체의 크기에 따라 적절히 Block수를 조절해야 합니다. 이번 프로젝트에서 사과 같은 경우 상대적으로 작은 물체이기 때문에 3단으로 한단계를 줄여서 구조를 변경하였습니다.

 

손실함수까지 살펴 보겠습니다.

Loss function 입니다.

 

각 레이블이 의미하는 것입니다.

 

문자위에 hat이 있는것은 정답이고 없는것은 예측값입니다. 정답과 예측의 오차를 계산하여

전체를 더하고 상수로 나눈값이 총 Loss값이 되겠습니다.

(참고로 레이블 앞에 숫자 1 처럼 보이는 것은 밑에 첨자 조건이 참이면 1 거짓이면 0을 곱하는 것을 의미합니다.

따라서 ground truth label이 0이면, 즉 레이블이 없으면 계산할 의미가 없으므로 항을 0으로 만들라는 뜻입니다.)

 

논문에 따른 모델 테스트 결과 입니다.

 

테이블, 의자, 책상등에 대해 바운딩 박스가 잘쳐져 있습니다.

 

이번 프로젝트에서의 최종 목표는 위 사진과 같이

사과에대해 바운딩 박스(bounding box)가 생기고

사과를 자동으로 수확하는 것입니다. 이어서 포스팅 하도록 하겠습니다.