OpenPCDet 환경구성 (1)

짱구·2024년 2월 22일
0

OpenPCDet는 LiDAR 기반 3D object detection을 쉽고 간편하게 할 수 있게 제공해주는 오픈 프레임워크이다.

https://github.com/open-mmlab/OpenPCDet

OpenPCDet를 이용해서 LiDAR 3D object detection을 해보기 위해 우선 환경구성을 해주어야 한다.

1. 가상환경 생성

Installation

python 3.8 버전으로 아나콘다 가상환경을 생성했다.

conda create -n openpcdet_py38 python=3.8 -y

가상환경을 새로 만들어주었으니 pytorch도 새로 설치해줘야 한다.
cuda, cudnn, pytorch 설치

2. OpenPCDet git clone

이제 오픈소스를 가져오자

git clone https://github.com/open-mmlab/OpenPCDet.git

다음으로 spconv를 설치해주어야 하는데 주의해야할 점은 spconv는 cuda version에 맞게 설치해주어야 한다. 필자는 cuda 11.3이므로 spconv-cu113을 설치한다.
https://github.com/traveller59/spconv

pip install spconv-cu113

이제 pcdet library를 설치해보자

python setup.py develop

3. Quick DEMO

오픈소스를 사용해보기 위해 DEMO를 따라해본다.

먼저, 라이다 포인트클라우드를 시각화하는 툴인 Open3D를 설치한다.

pip install open3d

테스트를 진행하기 위해서는 포인트클라우드 파일과 특정 모델을 준비해야한다.

포인트클라우드 .bin 파일은 비슷한 framework인 mmdetection3d에서 KITTI 데이터를 가져왔다. 000008.bin

PointPillars 모델의 pre-trained weight을 다운로드 받는다.
PointPillars 모델을 선정한 이유는 추론 시간이 다른 모델들에 비해 매우 빨라서 Real-time 추론을 할 수 있기 때문이다. pointpillar_7728.pth

OpenPCDet github에서 다운받을 수 있다.

이제 demo.py 스크립트를 실행해서 3d object detection을 해보자.
--cfg_file : 선정한 딥러닝 모델 .yaml file
--ckpt : model weight .pth file
--data_path: LiDAR pointcloud .bin file

python tools/demo.py --cfg_file tools/cfgs/kitti_models/pointpillar.yaml --ckpt ckpt/pointpillar_7728.pth --data_path sample/000008.bin

경로를 잘 지정해줘서 스크립트를 실행하게 되면 이전에 다운 받은 weight file과 pointcloud data가 load되는 것을 확인할 수 있다.

이어서 객체 추론 결과들이 output으로 나오게 되는데, 다운 받은 weight file은 Car, Pedestrian, Cyclist에 대한 classification이 가능한 모델이다.
즉, 이 모델이 위 클래스 3가지로 라벨링된 3d boundingbox로 학습했다는 의미이다.

pred_boxes는 인지된 각각의 객체 3d boundingbox의 centroid x,y,z / dimension dx,dy,dz / heading 7가지 정보를 의미하고 있다.

pred_scores는 YOLO의 confidence score와 비슷하다고 보면 된다. 추후에 Threshold를 설정해줌으로서 임계값 이하의 3d bbox에 필터링을 해줄 수 있다.

pred_labels는 특정 3d bbox가 차량, 보행자, 자전거 중에 어떤 클래스인지 알려주는 것이다.

이전에 설치한 Open3D로 추론 결과를 시각적으로도 확인할 수 있다.
우리가 input으로 넣어준 000008.bin pointcloud data에 인지된 객체들에 대해서 3d bbox를 추가로 표시해준 결과이다.
차량은 초록색, 보행자는 하늘색, 자전거는 노란색으로 표시된 것을 확인할 수 있다.


결과를 조금 더 잘 이해하고 싶으면 000008.bin에 해당되는 카메라 이미지를 찾아보면 된다.
역시 3D object detection은 재밌다!

TODO

  1. model config 분석
  2. model custom training
  3. Real-time inference를 위한 ROS 연동
profile
화이팅

4개의 댓글

comment-user-thumbnail
2024년 4월 8일

안녕하세요 혹시 waymo dataset도 사용해보셨나요?

1개의 답글
comment-user-thumbnail
2024년 6월 25일

안녕하세요 TODO에 작성 해놓으신 Real-time inference를 위한 ROS 연동 부분 관심 있습니다. 혹시 진행중이신지요??

1개의 답글