참고 및 일부 캡처 출처: OpenPCDet custom dataset tutorial
OpenPCDet의 튜토리얼에 custom dataset 사용 방법이 친절하게 정리되어 있지만, 일정 부분은 유저의 몫으로 본인의 dataset에 맞춰 직접 찾아가며 수정해야 한다. 이 글에서는 custom dataset 훈련을 위하여 수정한 모든 부분을 기록한다.
이와 같이 custom 데이터셋에 대하여 ImageSets, points, labels 디렉토리를 구축해야 한다.


tools/cfgs/custom_models/<사용하고자 하는 모델>.yaml 의 다음 목록을 수정한다. 원 코드에는 second와 pv_rcnn만 있는데, 이외에 사용하고자 하는 모델이 있다면 config를 복사해서 second, pv_rcnn을 보며 틀을 맞춰 주면 사용이 가능하다.


tools/cfgs/dataset_configs/custom_dataset.yaml의 다음 목록을 수정한다.
POINT_CLOUD_RANGE

MAP_CLASS_TO_KITTI

pcdet/datasets/kitti/kitti_object_eval_python/eval.py에서 더 많은 클래스를 임의로 추가하고 MAP_CLASS_TO_KITTI를 수정해 주면 된다. (아래에서 설명)POINT_FEATURE_ENCODING

NUM_POINT_FEATURES

filter_by_min_points
SAMPLE_GROUPS
VOXEL_SIZE


pillar 기반의 모델을 사용할 경우:

사용하고자 하는 데이터셋의 클래스 개수가 3개면 eval.py를 수정할 필요 없이 dataset_configs/custom_dataset.yaml에서 MAP_CLASS_TO_KITTI만 수정해 주면 된다. 클래스 개수가 3개를 초과할 경우에는 아래 언급되는 부분에 자체적으로 클래스를 추가해 준다.
clean_data의 CLASS_NAMES 변경
eval_class의 classes_dict 변경
get_official_eval_result의 class_to_name 변경
features=xyz_features.contiguous() if xyz_features is not None else None과 같이 수정한다.마지막으로 python -m pcdet.datasets.custom.custom_dataset create_custom_infos tools/cfgs/dataset_configs/custom_dataset.yaml 를 통해 custom 데이터셋에 대한 data info를 생성하면 훈련 및 평가가 가능하다!