현재 상황에서 제가 훈련을 돌릴수 있는 상황이 아니기에,
환경이 되면 바로 돌릴 수 있도록 훈련 방법에 대한 공부를 했습니다.
1. 개발 환경 준비
1. Conda 환경 설정
Miniconda 설치 후 Python 3.8 기반 환경 생성
Conda channel 설정 및 패키지 설치
conda create -n av_3d_mod python=3.8 -y
conda activate av_3d_mod
conda config --add channels conda-forge
conda config --set channel_priority strict
2. OpenPCDet 설치
GitHub에서 OpenPCDet 소스 다운로드
Python 패키지 설치 및 개발 모드 설정
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
python setup.py develop
3. 평가용 패키지 설치
Waymo Open Dataset을 이용한 평가를 위해 필요
pip install waymo-open-dataset-tf-2-11-0==1.6.1
2. 데이터셋 준비
학습/검증/테스트 데이터 구성
PointPillars 학습에 필요한 데이터는 라벨이 포함된 포인트 클라우드
학습 데이터 일부를 Validation 데이터로 분리 (train.txt, val.txt)
데이터 구조 예시:
data/
└── custom_av/
├── points/ # 포인트 클라우드
└── labels/ # 3D Bounding Box 라벨
데이터 정보 파일 생성
모델 학습 전에 데이터 정보를 생성해야 함
python -m pcdet.datasets.custom_av.custom_av_dataset create_custom_av_infos tools/cfgs/dataset_configs/custom_av_dataset.yaml
3. 모델 학습
학습 스크립트 실행
bash scripts/torch_train.sh 8 --cfg_file cfgs/custom_av/point_pillar_1x_long_epoch.yaml
8 → 사용할 GPU 수
config 파일에서 voxel size, point cloud range, 학습 Epoch, 배치 크기 등을 설정
학습 과정
각 Epoch마다 iteration 별로 loss, classification loss, localization loss, direction loss 출력
Epoch 종료 후 Validation 데이터셋 평가 → mAP, mAPH 확인
체크포인트 저장
각 Epoch 종료 시 모델 weight 저장 (checkpoint_epoch_X.pth)
4. 모델 검증
학습 완료 후 검증 스크립트 실행
bash scripts/torch_val.sh 8 --cfg_file cfgs/custom_av/point_pillar_1x_long_epoch.yaml --ckpt ../output/custom_av/point_pillar_1x_long_epoch/default/ckpt/checkpoint_epoch_80.pth
Validation 결과
클래스별 mAP, mAPH, LEVEL_1/LEVEL_2 출력
학습 진행 상황 및 성능 개선 여부 확인
5. 테스트 및 결과 제출
학습된 모델을 사용하여 테스트 데이터셋 추론
python test.py --cfg_file cfgs/custom_av/point_pillar_1x_long_epoch.yaml --ckpt ../output/custom_av/point_pillar_1x_long_epoch/default/ckpt/checkpoint_epoch_80.pth --data_path ../data/custom_av
결과는 result.pkl로 저장 → 제출 가능
Waymo 데이터셋과 유사하게 평가 시 mAP, APH, APL 등을 계산 가능
6. 요약.
환경 준비 → Python, Conda, CUDA, OpenPCDet 설치
데이터셋 준비 → 학습/검증/테스트, info 파일 생
학습 → train.sh, GPU 설정, config 파일 지정
검증 → val.sh, mAP 확인
테스트 → test.py, 결과 저장 (result.pkl)
평가 → mAP 기반 성능 확인
#+ 필수 용어 정리.
또, 위 PointPilars 모델 학습과 평가 과정을 이해하기 위해 알고있어야하는 주요 용어들을 공부해봤습니다.
1. loss(손실 함수)
loss린 모델 예측값과 실제 라벨의 차이를 수치로 표현한 값으로, 모델 학습의 핵심 지표입니다.
학습이 진행되며 loss값이 점점 감소하여 0이되는것이 목표입니다.
2.Epoch
전체 학습 데이터셋이 한 번 모델을 완전히 통과하는 과정입니다.
Epoch 수가 많을수록 모델이 더 많이 학습하지만, 지나치게 많으면 Overfitting(과적합)이 발생할 수 있습니다.
3. Batch Size
한 번에 학습에 사용되는 샘플의 수를 의미합니다.
크면 클수록 학습이 안정적이지만, gpu 메모리 사용량도 증가하게 됩니다.
4. mAP
모델의 3D 객체 검출 성능을 평가하는 주요 지표입니다.
1.0에 가까울수록 성능이 우수하고, Precision-Recall 곡선과 관계가 있습니다.
5. LEVEL_1 / LEVEL_2
Waymo 스타일의 평가 방식으로, 객체 검출 난이도 기준을 구분합니다.
1. -> 상대적으로 탐지가 쉬운 객체 (크고 가까움)
2. -> 탐지가 어려운 객체 (작거나 멀리있음)
특히 포인트필라에서는 점의 수도 레벨의 영향을 줍니다.(레벨이 높으면 포인트 적음)
6. Checkpoint
학습 중 특정 시점의 모델 가중치(Weight)를 저장한 파일
PointPillarsDP서는 checkpoint_epoch_X.pth 형태로 저장되며, 이후 검증, 테스트, 재학습 등에 사용됩니다.