https://mmdetection3d.readthedocs.io/en/latest/get_started.html
공식사이트 기준: linux,window(실험적 지원?),mac 지원 Python 3.7 이상, CUDA 10.0 이상, PyTorch 1.8 이상을 필요하다고 명시되어 있음
사용 환경
OS: ubuntu20.04
Python: 3.8 CUDA: 11.8 PyTorch: 2.4.1
먼저 아나콘다를 사용해 가상환경을 생성한다
명령어
conda create -n openmmlab python=3.8 -y
conda activate openmmlab
https://pytorch.org/get-started/previous-versions/
위 링크에서 2.4.1 를 다운받는 명령어를 사용하여 2.4.1+cu118를 설치함
MIM을 사용하여 MMENgine , MMCV 및 MMDetection 설치하라고 명시되어 있다.
MIM: OpenMMLab Installer Manager
https://github.com/open-mmlab/mim
OpenMMLab 계열 프레임워크(MMDetection, MMDetection3D, MMSegmentation, MMEngine, MMCV 등)를
명령어 하나로 설치/업데이트/관리/추론/모델 다운로드까지 도와주는 통합 CLI 툴 이라고 할 수 있다.
MMEngine
https://github.com/open-mmlab/mmengine
OpenMMLab 프레임워크들의 최상위 러닝 엔진/실행 관리 라이브러리 (훈련, 추론, 체크포인트 관리, logger, hook, config 파싱, 멀티-GPU 분산 등 딥러닝 전체 파이프라인의 베이스) OpenMMLab의 코어 엔진 최신 버전의 MMDetection, MMDetection3D, MMSegmentation 등은 전부 MMEngine 기반 훈련, 평가, 로그, 실험 관리, 분산처리, hook/callback 등 핵심 기능 제공한다.
MMCV
https://github.com/open-mmlab/mmcv
OpenMMLab 프레임워크의 MMCV는 컴퓨터 비전을 연구를 위한 기초 라이브러리 이며 MMEngine보다 낮은 레벨이다. 이미지/비디오 처리, 이미지 및 시각화 이미지 변환 다양한 CNN 아키텍처를 지원한다.
MMDetection
https://github.com/open-mmlab/mmdetection
MMDetection은 OpenMMLab프로젝트의 2D 객체검출 및 instance Segmentation 을위한 딥러닝 모델 라이브러리이다.
다양한 2D 객체 검출 segmentation모델을 지원하고 kitti,coco 등 모맷을 지원한다.
gitclone을 통해 MMdetection3d를 설치하는 과정이다. waymo_dataset을 쓰기 위해 최신버전인 1.4로 설치하였다.
mmcv 버전은 2.0이상이여야 하는데 2.2하였더니 오류가 발생해 mmcv==2.1.0을 설치하였다.
설치가 성공적으로 완료 된 것을 볼 수 있다.
이후 설치가 잘 되었는지 확인하기 위해 demo 코드를 돌리기 위해
https://mmdetection3d.readthedocs.io/en/latest/user_guides/inference.html
위 링크의 PointPillars 모델을 사용한 kitti data의 예시를 돌린결과이다.
위의 링크를 통해 pretrain모델을 받은 후 아래의 명령어를 사용하여 추론 결과를 볼 수있다.
python demo/pcd_demo.py demo/data/kitti/000008.bin pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py hv_pointpillars_secfpn_6x8_160e_kitti-3d-car_20220331_134606-d42d15ed.pth --show
여기서 --show 옵션을 사용하면 포인트 클라우드 시각화가 가능하다 하지만 현재 환경은 wsl이여서 예측 결과를 바로 볼 수 없어 --show 옵션을 사용하지 않고 생략하여 데모의 예측 결과를 저장하였다.
labels_3d: 클래스 번호
scores_3d: 각 박스의 점수
bboxes_3d: [x,y,z,dx,dy,dz,yaw] 박스 중심,크기,회전
box_type_3d: LiDAR 기준 좌표계
시각화 결과
demo 코드가 돌아가는것을 확인하였다.
학습 과정
위 처럼 폴더를 구성하라고 명시되어있음 그래서 root-path를 기존 D 드라이브에 저장되어있는 waymo데이터셋으로 잡아주고 위와 같이 폴더의 구조를 만들어서 아래의 명령어를 실행하여 학습에 사용되는 info파일을 생성하는 과정을 실행함
여기서는 waymo데이터셋을 바로 활용하지 않고 kitti_format으로 변환하여 사용함
정보파일 생성 결과
현재는 gt_dataset을 생성중이다.
추론결과를 저장하기 위해 test.py와 pcd_demo.py 코드를 실행하였지만 코드 내부적으로
waymo dataset은 waymo_metric를 사용해 평가를 진행하는데 현재 mmdetection3d 에서는 1.2.0 버전의 gt_bin파일만 제공하여 최신버전의 데이터셋 1.4.3V의 gt_bin파일을 제공하지 않아서 에러가 발생
코드의 내부에서 평가를 생략을 하고 추론만 진행하려고 하였으나 val_evaluator에 레지스터에 등록된 metric를 무조건 적으로 전달해야 하도록 설계가 되어있어서 레지스터에 빈 딕셔너리를 등록하고 전달하였으나 추론에 실패함