Pointgroup:ConfigParameters
PointGroup 학습 설정 파일 파라미터 해설 및 수정 가이드
개요
이 문서는 Pointcept의 PointGroup instance segmentation 학습 설정 파일 전역의 파라미터를 한글로 설명하고, 각 파라미터의 수정 가이드라인을 정리한 것이다.
기준 파일:
-
configs/scannet/insseg-pointgroup-v1m1-0-spunet-base.py(주 설정) -
configs/_base_/default_runtime.py(상속되는 기본 런타임 설정)
설정 파일은 _base_로 기본 런타임을 상속하고, 주 설정에서 같은 이름의 변수를 다시 정의하면 덮어쓴다. 아래 표의 "기본값"은 두 파일을 합친 최종 유효값이다.
범례
- <span style="color:blue;font-weight:bold">안전: 자유롭게 바꿔도 되는 값
- <span style="color:orange;font-weight:bold">주의: 다른 값과 연동되거나 결과에 크게 영향
- <span style="color:red;font-weight:bold">위험: 함부로 바꾸면 학습이 깨지거나 평가가 무의미해짐
1. 런타임 / 실행 제어 (default_runtime.py)
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | None | 학습 시작 시 불러올 모델 가중치 경로. | 사전 학습된 backbone(예: Sonata, PTv3)으로 fine-tune할 때 지정. 키 이름이 다르면 |
| | False | 중단된 학습을 이어서 진행. optimizer/scheduler 상태까지 복원 | 같은 |
| | True | 매 eval 주기마다 val 셋 평가 수행 | 평가 시간이 길면 False로 하고 나중에 test_only로 평가. 단, best checkpoint 저장이 안 됨 |
| | False | 학습 없이 test만 수행 | |
| | None | 난수 시드. None이면 무작위 생성 후 기록 | 재현 실험 시 고정. ablation 비교는 반드시 같은 seed |
| | "exp/default" | 로그, checkpoint, config 백업 저장 경로 | 실험마다 다른 경로. |
| | 12 | 전체 GPU에 걸친 DataLoader worker 총 수 | CPU 코어 수 이하. RAM 부족(OOM kill)이면 줄임. GPU당 4~8 권장 |
| | 12 | 전체 GPU에 걸친 총 배치 크기. GPU당 = batch_size / GPU 수 | <span style="color:orange;font-weight:bold">주의 GPU 메모리에 맞춤. 줄이면 |
| | 1 | 이 횟수만큼 gradient를 누적한 뒤 한 번 update. 유효 배치 = batch_size × steps | 메모리가 부족해 batch_size를 못 늘릴 때 사용. BN 통계는 누적되지 않으므로 완전한 대체는 아님 |
| | None | val 배치. None이면 GPU당 1 | instance seg는 scene 단위 평가라 1 유지 권장 |
| | None | test 배치. None이면 GPU당 1 | 1 유지 |
| | 800 | 총 학습 epoch | <span style="color:orange;font-weight:bold">주의 데이터가 100장→700장으로 늘면 같은 epoch라도 iteration이 7배. 총 iteration 기준으로 재설정. 수렴 곡선 보고 결정 |
| | 100 | 평가/checkpoint 주기 계산용. 데이터 loop 수 = epoch // eval_epoch | epoch을 바꾸면 같이 조정. 평가를 더 자주 보려면 값을 낮춤 |
| | None | gradient norm clipping 값. None이면 비활성 | loss가 NaN/발산하면 1.0~10.0 설정 |
| | False | 멀티 GPU에서 BatchNorm 통계 동기화 | GPU당 배치가 2 이하로 작으면 True 권장. 속도는 약간 느려짐 |
| | True | 자동 혼합 정밀도(AMP) 사용 | 메모리/속도 이득 큼. NaN 발생 시 False로 확인 |
| | "float16" | AMP 자료형 | Ampere 이상 GPU면 "bfloat16"이 수치적으로 더 안정 |
| | False | 매 iteration마다 CUDA 캐시 비움 | 매우 느려짐. OOM이 간헐적일 때만 True |
| | False | epoch마다 CUDA 캐시 비움 | 위와 동일, 부담이 적은 대안 |
| | False | DDP에서 사용되지 않는 파라미터 허용 | 모델 일부를 freeze했을 때 에러가 나면 True |
| | True | Weights & Biases 로깅 | 오프라인 환경이면 False |
| | "pointcept" | wandb 프로젝트 이름 | 자유롭게 |
| | None | wandb API 토큰. None이면 터미널 로그인 사용 | 자유롭게 |
| | 0 | 배치 내 scene 두 개를 섞는 CutMix 계열 augmentation 확률 | <span style="color:red;font-weight:bold">위험 instance seg에서는 반드시 0. 섞으면 instance id가 충돌함 |
| | None | 키워드별 learning rate 배율. 예: | 사전 학습 backbone을 fine-tune할 때 backbone lr을 낮추는 용도 |
2. 클래스 정의
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | ScanNet 20개 | 클래스 이름 목록. 순서가 라벨 정수와 대응 | <span style="color:red;font-weight:bold">위험 사용자 데이터셋의 라벨 인덱스와 정확히 일치해야 함. 순서 바꾸면 평가 결과가 뒤바뀜 |
| | 20 | semantic 클래스 수 | |
| | (-1, 0, 1) | instance 대상에서 제외할 semantic 라벨. -1은 unlabeled, 0/1은 ScanNet의 wall/floor | <span style="color:red;font-weight:bold">위험 모델의 클러스터링, |
3. 모델
3.1 최상위 (PG-v1m1)
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | "PG-v1m1" | 모델 레지스트리 이름 | PTv3 backbone을 쓰려면 "PG-v1m2" + PT-v3m1 backbone 조합 참고( |
| | 96 | backbone 출력 feature 차원. seg_head, bias_head의 입력 | backbone |
| | num_classes | semantic head 출력 수 | |
| | -1 | CE loss에서 무시할 라벨 | 데이터의 unlabeled 값과 맞춤 |
| | (-1, 0, 1) | 추론 시 이 semantic 예측을 받은 점은 클러스터링에서 제외 | 2절 참조 |
| | -1 | offset loss에서 제외할 instance 라벨 | |
| | 1.5 | ball query 반경. 복셀 단위(grid_size 0.02면 3cm). 중심 예측이 이 거리 안이면 같은 클러스터 후보 | <span style="color:orange;font-weight:bold">주의 작은 객체가 이웃과 병합되면 줄이고(1.0~1.2), 하나의 객체가 여러 조각으로 쪼개지면 늘림(2.0). grid_size를 바꾸면 물리 거리가 달라지므로 재조정 |
| | 300 | ball query에서 한 점당 최대 이웃 수 | 점 밀도가 매우 높으면 늘림. 속도/메모리에 영향 |
| | 50 | BFS 클러스터링에서 이 점 수 미만인 클러스터는 생성하지 않음 | <span style="color:orange;font-weight:bold">주의 작은 객체 미검출의 직접 원인. 10~20으로 낮춰 실험. 너무 낮추면 노이즈 proposal 증가 |
| | 100 | 생성된 proposal 중 이 점 수 이하는 폐기 | <span style="color:orange;font-weight:bold">주의 작은 객체 미검출의 직접 원인. |
| | 0.02 | 추론 시 중심 예측 좌표를 복셀 단위로 변환하는 나눗셈 값 | <span style="color:red;font-weight:bold">위험 |
Loss 구성 (코드 고정, config에서 조정 불가)
-
loss = seg_loss + bias_l1_loss + bias_cosine_loss - seg_loss: semantic CrossEntropy (class weight 없음)
- bias_l1_loss: 점→instance 중심 offset의 L1. 점 단위 평균이라 큰 객체가 지배
- bias_cosine_loss: offset 방향의 cosine 유사도
- 작은 객체 가중치를 주려면
point_group_v1m1_base.py의 loss 부분을 직접 수정해야 함
3.2 Backbone (SpUNet-v1m1)
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | "SpUNet-v1m1" | spconv 기반 sparse 3D UNet | 그대로 |
| | 6 | 입력 feature 차원. | <span style="color:red;font-weight:bold">위험 feat_keys를 바꾸면 반드시 같이 수정. color만 쓰면 3, 좌표까지 넣으면 9 |
| | 0 | backbone 자체 분류 head 수. 0이면 head 없이 feature만 출력 | PointGroup에서는 0 유지 (head는 PG 쪽에 있음) |
| | (32, 64, 128, 256, 256, 128, 96, 96) | 인코더 4단계 + 디코더 4단계 채널. 앞 절반 인코더, 뒤 절반 디코더 | 마지막 값 = |
| | (2, 3, 4, 6, 2, 2, 2, 2) | 각 단계의 residual block 수 | channels와 길이가 같아야 하고 짝수. 늘리면 용량 증가, 속도 저하 |
4. Optimizer / Scheduler
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | "SGD" | 최적화 알고리즘 | SpUNet은 SGD가 표준. PTv3 backbone이면 AdamW(lr 0.002~0.006) |
| | 0.1 | 초기 learning rate | <span style="color:orange;font-weight:bold">주의 batch_size 12 기준. 배치를 절반으로 줄이면 0.05. 발산하면 절반씩 줄임 |
| | 0.9 | SGD momentum | 그대로 |
| | 0.0001 | L2 정규화 | 과적합이면 0.0005까지. 데이터가 적을수록 올리는 편 |
| | True | Nesterov momentum | 그대로 |
| | "PolyLR" || lr = lr₀ × (1 − step/total)^0.9. 총 step에 걸쳐 0으로 감소 | epoch을 바꾸면 자동으로 total_steps가 바뀜. warmup이 필요하면 "OneCycleLR" 고려 |
5. 데이터셋 공통
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | "ScanNetDataset" | 데이터셋 클래스 | 사용자 데이터면 |
| | "data/scannet" | 전처리된 데이터 루트. 하위에 train/val 디렉터리 | 전처리 결과 경로 |
| | num_classes | 데이터셋 메타 | 2절과 동일 |
| | -1 | 데이터셋 메타 | 2절과 동일 |
| | class_names | evaluator가 클래스별 AP 출력에 사용 | 2절과 동일 |
| | "train" / "val" / "val" | 사용할 split 디렉터리 | test는 별도 split이 있으면 "test"로. 라벨 없는 test는 현재 tester가 지원하지 않음 |
| | False | True면 GridSample test 모드(전체 복셀 순회)와 TTA 활성 | instance seg는 아직 test_mode 미지원. False 유지 |
6. Train transform (augmentation 파이프라인)
순서대로 적용된다. 순서 자체가 의미를 가진다. 기하 augmentation → 색상 augmentation → 복셀화 → crop → 정규화 → 라벨 파싱 → tensor 변환.
| Transform | 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | apply_z | True | 점군의 xy(그리고 z) 최소/최대 중앙을 원점으로 이동 | 그대로. 첫 단계로 필수 |
| | dropout_ratio | 0.2 | 점의 20%를 무작위 제거 | <span style="color:orange;font-weight:bold">주의 작은 객체는 점이 적어 dropout에 취약. 0.1로 낮추거나 제거 실험 |
| dropout_application_ratio | 0.5 | 이 확률로 dropout 적용 | 위와 함께 조정 | |
| | angle | [-1, 1] | π 단위. [-π, π] 범위 무작위 z축 회전 | 실내 scene은 그대로. 방향이 고정된 데이터(예: 항상 정면)면 범위 축소 |
| axis | "z" | 회전축 | 그대로 | |
| center | [0, 0, 0] | 회전 중심 | CenterShift 후이므로 원점 | |
| p | 0.5 | 적용 확률 | 그대로 | |
| | angle | [-1/64, 1/64] | ±2.8° 기울임. 센서 기울기 시뮬레이션 | 지면이 항상 수평이면 제거 가능 |
| | scale | [0.9, 1.1] | 등방성 무작위 스케일 | <span style="color:orange;font-weight:bold">주의 작은 객체 검출 강화에는 [0.8, 1.2]로 넓히는 것이 도움될 수 있음. 단, cluster_thresh는 복셀 단위라 스케일 변화가 물리 크기 감각을 흔듦 |
| anisotropic | False | 축별 다른 스케일 | 일반적으로 False | |
| | p | 0.5 | x 또는 y축 반전 | 좌우 비대칭이 의미 있는 데이터가 아니면 그대로 |
| | sigma | 0.005 | 점별 가우시안 노이즈 표준편차(m) | 센서 노이즈 수준에 맞춤. 5mm는 RGB-D 기준 |
| clip | 0.02 | 노이즈 최대 절댓값(m) | 그대로 | |
| | distortion_params | [[0.2, 0.4], [0.8, 1.6]] | [격자 크기(m), 변형 크기] 쌍. 20cm/80cm 격자로 비선형 왜곡 | <span style="color:orange;font-weight:bold">주의 작은 객체의 형태를 무너뜨릴 수 있음. 미검출 원인 실험 시 제거해서 비교 |
| | p | 0.2 | 색상 대비 자동 조정 확률 | 그대로 |
| blend_factor | None | 원본과 혼합 비율. None이면 무작위 | 그대로 | |
| | p | 0.95 | 전체 색상에 일정 오프셋 더할 확률 | 그대로 |
| ratio | 0.1 | 오프셋 범위 (255 기준 ±10%) | 조명 변화가 크면 유지, 색상이 중요한 클래스면 낮춤 | |
| | p | 0.95 | 점별 색상 노이즈 확률 | 그대로 |
| std | 0.05 | 노이즈 표준편차 (255 기준) | 그대로 | |
| | grid_size | 0.02 | 복셀 크기(m). 같은 복셀의 점은 하나로 병합 | <span style="color:red;font-weight:bold">위험 가장 영향이 큰 값. 작은 객체 위해 0.01로 줄이면 점 수 2~8배, 메모리 그만큼 증가. 모델 |
| hash_type | "fnv" | 복셀 해시 함수 | 그대로 | |
| mode | "train" | 복셀당 무작위 1점 선택 | train은 "train" 고정 | |
| return_grid_coord | True | 정수 복셀 좌표 반환. spconv 입력에 필수 | True 고정 | |
| | sample_rate | 0.8 | 무작위 중심에서 가까운 80% 점만 유지 | <span style="color:orange;font-weight:bold">주의 20%가 잘려나가며 작은 객체가 통째로 사라질 수 있음. 1.0 또는 제거 실험. 메모리 여유 있으면 point_max 방식으로 전환 |
| mode | "random" | 중심 선택 방식 | train은 random | |
| | (없음) | 색상을 [0,255] → [-1,1]로 정규화 | 색상이 이미 정규화되어 있으면 제거. 없는 경우 색상 0 채우기 | |
| | segment_ignore_index | (-1, 0, 1) | 이 semantic의 instance를 -1로 바꾸고 각 instance의 centroid, bbox 계산 | 2절과 동일 값 |
| instance_ignore_index | -1 | 무시 instance 값 | 모델 값과 동일 | |
| | (없음) | numpy → torch 변환 | 그대로 | |
| | keys | coord, grid_coord, segment, instance, instance_centroid, bbox | 모델에 전달할 키 목록 | 모델 forward가 요구하는 키. 그대로 |
| feat_keys | ("color", "normal") | 이 키들을 concat해 | <span style="color:red;font-weight:bold">위험 바꾸면 backbone |
7. Val / Test transform
augmentation 없이 확정적으로 처리한다. train과 다른 점만 정리한다.
| Transform | 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | keys_dict | coord→origin_coord, segment→origin_segment, instance→origin_instance | 복셀화 전 원본 점을 보존. evaluator가 원본 해상도로 AP 계산 | 그대로. 제거하면 평가 불가 |
| | grid_size | 0.02 | train과 동일해야 함 | <span style="color:red;font-weight:bold">위험 train과 항상 동일 |
| | point_max | 1000000 | 메모리 초과 시 활성화 | 매우 큰 scene에서 OOM이면 주석 해제 |
| | apply_z | False | GridSample 후 xy만 재중심 | 그대로 |
| | keys | train 키 + origin_*, name | 원본 좌표/라벨과 scene 이름 전달 | 그대로 |
| offset_keys_dict | offset→coord, origin_offset→origin_coord | 배치 내 scene 경계 offset을 두 해상도로 생성 | 그대로 |
8. Hooks
| Hook | 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | keywords / replacement | "module." / "module." | | 다른 프레임워크 가중치를 쓸 때 prefix 매핑 |
| | warmup_iter | 2 | 처음 N iteration은 시간 측정에서 제외 | 그대로 |
| | (없음) | loss, lr을 로그/tensorboard/wandb 기록 | 그대로 | |
| | segment_ignore_index | (-1, 0, 1) | 평가에서 제외할 클래스 | 2절과 동일 |
| instance_ignore_index | -1 | 동일 | ||
| (코드 내부) min_region_sizes | 100 | 100점 미만 예측은 평가 제외 | <span style="color:orange;font-weight:bold">주의 config에서 노출되지 않음. | |
| (코드 내부) overlaps | 0.5~0.95 + 0.25 | AP 계산 IoU 임계값. mAP, AP50, AP25 산출 | 그대로 | |
| | save_freq | None | None이면 model_last + model_best만 저장. 정수면 N epoch마다 추가 저장 | 디스크 여유 있으면 100 등으로 설정해 중간 복구 가능하게 |
| | test_last | False | 학습 종료 후 tester로 정밀 평가. False면 best, True면 last checkpoint | 그대로 |
9. Tester
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | "InsSegTester" | instance seg 전용 tester | 그대로 |
| | (-1, 0, 1) | 2절과 동일 | 동일 |
| | -1 | 동일 | |
| | False | scene별 결과 상세 출력 | 실패 유형 분석 시 True |
10. 연동 관계 요약
한 값을 바꾸면 반드시 함께 바꿔야 하는 묶음이다.
| 묶음 | 함께 바꿀 항목 |
| 복셀 크기 | |
| 무시 클래스 | |
| 입력 feature | |
| backbone 출력 | |
| 클래스 수 | |
| 배치와 lr | |
| epoch | |
| 작은 객체 필터 | |
11. 작은 객체 개선을 위한 권장 수정 순서
- 재훈련 없이:
cluster_min_points50→10,cluster_propose_points100→20, evaluatormin_region_sizes100→20 후 test 재실행 - 재훈련 필요, 저비용:
SphereCrop제거 또는 sample_rate 1.0,RandomDropoutdropout_ratio 0.1,ElasticDistortion제거 - 재훈련 필요, 고비용:
grid_size0.02→0.01 (+ voxel_size, cluster_* 재조정, batch_size 절반, lr 절반) - 코드 수정: seg_loss에 class weight, bias_l1_loss를 instance 단위 평균으로 변경
12. PTv3 backbone 사용 시 (PG-v1m2) 차이점
기준 파일: configs/scannetpp/insseg-pointgroup-v1m2-0-ptv3-base.py, 모델 코드 pointcept/models/point_group/point_group_v1m2_custom_criteria.py
위 1~11절의 파라미터 중 런타임, 클래스 정의, cluster_*, voxel_size, 데이터셋, val/test transform, hooks, tester는 그대로 동일하다. 다른 부분만 아래에 정리한다.
12.1 모델 최상위
| 파라미터 | SpUNet (PG-v1m1) | PTv3 (PG-v1m2) | 설명 / 가이드 |
| | "PG-v1m1" | "PG-v1m2" | v1m2는 loss를 config로 받고 backbone freeze를 지원 |
| | 96 | 64 | PTv3 |
| | (없음, CE 고정) | CrossEntropyLoss + LovaszLoss | <span style="color:orange;font-weight:bold">주의 v1m2에서만 사용 가능. Lovasz는 IoU를 직접 최적화해 작은 클래스에 유리. class weight를 넣으려면 CrossEntropyLoss에 |
| | (없음) | False | True면 backbone 고정, head만 학습. 사전 학습 backbone 선형 평가용 |
offset 회귀 loss(bias_l1, bias_cosine)는 두 버전 모두 코드 고정으로 동일하다.
12.2 Backbone (PT-v3m1)
| 파라미터 | 기본값 | 설명 | 수정 가이드 |
| | 6 | 입력 feature 차원 | SpUNet과 동일 규칙. feat_keys와 연동 |
| | ("z", "z-trans", "hilbert", "hilbert-trans") | 점 직렬화 공간 채움 곡선 종류 | 그대로. 줄이면 속도 증가, 정확도 소폭 감소 |
| | (2, 2, 2, 2) | 각 인코더 단계의 다운샘플 배율 | 그대로 |
| | (2, 2, 2, 6, 2) | 인코더 5단계의 block 수 | 모델 용량. 늘리면 메모리/시간 증가 |
| | (32, 64, 128, 256, 512) | 인코더 채널 | 작은 객체에는 얕은 단계(32, 64) 채널 확대가 효과적 |
| | (2, 4, 8, 16, 32) | 인코더 attention head 수 | 채널 / head = 16 유지 |
| | 1024 × 5 | 직렬화 attention의 패치(윈도우) 크기 | 작은 scene이면 512로 줄여도 됨. 메모리에 직접 영향 |
| | (2, 2, 2, 2) | 디코더 4단계 block 수 | 그대로 |
| | (64, 64, 128, 256) | 디코더 채널. | <span style="color:red;font-weight:bold">위험 |
| | (4, 4, 8, 16) | 디코더 head 수 | 채널 / head = 16 유지 |
| | 1024 × 4 | 디코더 패치 크기 | enc와 동일하게 |
| | 4 | FFN 확장 비율 | 그대로 |
| | True | QKV projection bias | 그대로 |
| | None | attention scale. None이면 1/√d | 그대로 |
| | 0.0 | attention / projection dropout | 과적합 시 0.1 |
| | 0.3 | stochastic depth 비율 | <span style="color:orange;font-weight:bold">주의 데이터가 적으면 0.3 유지, 많으면 0.1~0.2. 과소적합이면 낮춤 |
| | True | 매 forward마다 직렬화 순서를 섞음 (augmentation 효과) | 그대로 |
| | True | Pre-LayerNorm 구조 | 그대로 |
| | False | 상대 위치 인코딩 | 정확도 소폭 상승, 속도 저하. flash attention과 동시 사용 불가 |
| | True | FlashAttention 사용 | <span style="color:orange;font-weight:bold">주의 flash-attn 미설치 GPU면 False. False면 |
| | False | attention을 fp32로 계산 | flash 비활성 + AMP에서 NaN이면 True |
| | False | True면 인코더만 (분류용) | segmentation은 False |
| | bn/ln False, decouple True, adaptive False, affine True | 다중 데이터셋 조건부 정규화(PPT) 설정 | 단일 데이터셋이면 전부 기본값 유지. |
12.3 Optimizer / Scheduler
| 파라미터 | SpUNet | PTv3 | 설명 / 가이드 |
| | SGD, lr 0.1, wd 1e-4 | AdamW, lr 0.006, wd 0.05 | <span style="color:red;font-weight:bold">위험 Transformer는 SGD로 잘 수렴하지 않음. PTv3는 반드시 AdamW |
| | PolyLR | OneCycleLR | warmup(pct_start 5%) 후 cosine 감소. max_lr은 param group별 리스트 |
| | - | [0.006, 0.0006] | [기본 그룹, block 그룹]. |
| | - | 0.05 | 전체 step 중 warmup 비율 |
| | - | "cos" | warmup 이후 감소 곡선 |
| | - | 10.0 | 시작 lr = max_lr / 10 |
| | - | 1000.0 | 최종 lr = 시작 lr / 1000 |
| | None | [dict(keyword="block", lr=0.0006)] | <span style="color:orange;font-weight:bold">주의 attention block은 lr을 1/10로. 사전 학습 backbone fine-tune 시 표준 설정 |
12.4 Train transform 차이
| Transform | SpUNet | PTv3 | 비고 |
| | 0.5 | 0.2 | PTv3 쪽이 dropout을 덜 적용. 작은 객체에는 PTv3 값이 유리 |
| | 0.1 | 0.05 | 색상 오프셋이 절반 |
| | | point_max=204800 | <span style="color:orange;font-weight:bold">주의 비율 crop이 아니라 점 수 상한. scene이 204800점 이하면 crop이 전혀 일어나지 않아 작은 객체가 잘리지 않음 | |
| GridSample 뒤 | 없음 | 있음 | PTv3는 좌표를 위치 인코딩에 쓰므로 복셀화 후 재중심 필요 |
12.5 요약
- 동일: cluster_thresh, cluster_closed_points, cluster_min_points, cluster_propose_points, voxel_size, segment_ignore_index, GridSample 0.02, evaluator min_region_sizes 100
- 다름: backbone 전체, backbone_out_channels(96→64), criteria(CE→CE+Lovasz), optimizer(SGD→AdamW), scheduler(PolyLR→OneCycleLR), param_dicts, SphereCrop 방식, 일부 augmentation 강도
- 작은 객체 관점에서 PTv3 config는 SphereCrop이 비율 방식이 아니고 dropout 적용 확률이 낮아 SpUNet config보다 덜 공격적이다. 단, 클러스터링 단계의 크기 필터는 완전히 동일하므로 backbone을 바꿔도 11절의 필터 완화는 그대로 필요하다.