train_cfg 설정으로, object detection 모델 학습 과정에서
assigner, sampler, 경계조건, 가중치, 디버그 옵션 등을 설정하는 부분이다.
1. assigner (할당기)
model 을 통해서 예측된 bbox와 실제 정답 박스 (ground truth) 를 매칭하는 데 사용된다.
1.1 type
- MaxIoUAssigner: 가장 일반적으로 사용되며, IoU 값에 따라 예측 박스를 실제 박스와 할당. IoU 값을 기반으로, 예측 박스 중에서 실제 박스와 가장 높은 IoU 값을 가진 박스를 양성(positive)으로 할당. IoU 값이 특정 임계값보다 높거나 낮은 경우에 따라 양성 또는 음성(negative)으로 처리.
- ATSSAssigner: ATSS(Adaptive Training Sample Selection) 방식을 사용하는 할당기. 예측 박스의 크기와 IoU에 따라 적응적으로 양성과 음성 샘플을 선택.
- GridAssigner: 특정 그리드 기준으로 할당하는 방식. IoU 대신 위치 기반으로 할당.
- HungarianAssigner: 헝가리안 알고리즘을 사용해 예측 박스와 실제 박스를 매칭하는 방식. 주로 2D/3D 물체 추적 및 디텍션에 사용.
1.2 pos_iou_thr (양성 IoU 임계값)
- 설명: 예측 박스와 실제 박스 간의 IoU가 이 값 이상일 때, 해당 예측 박스는 양성으로 간주된다. 즉, 실제 객체와 겹치는 정도가 이 임계값 이상일 경우 양성으로 처리한다.
- 일반적인 값: 0.7이 많이 사용되며, 이는 예측 박스가 실제 박스와 70% 이상 겹치는 경우 해당 박스를 양성으로 간주한다는 뜻입니다.
1.3 neg_iou_thr (음성 IoU 임계값)
- 설명: 예측 박스와 실제 박스 간의 IoU가 이 값 이하일 때, 해당 예측 박스는 음성으로 간주된다. 즉, 객체와 거의 겹치지 않는 박스는 음성 샘플로 처리된다.
- 일반적인 값: 0.3이 자주 사용되며, 이는 IoU가 30% 이하일 경우 예측 박스를 음성으로 분류한다는 의미입니다.
1.4 min_pos_iou (최소 양성 IoU)
- 설명: 예측 박스가 양성으로 간주되기 위한 최소 IoU 값이다. 이 값 이상인 경우에만 예측 박스를 양성으로 할당한다. 이 값은 일부 어려운 예측을 처리하기 위해 사용할 수 있다.
- 일반적인 값: 0.3으로 설정되었으며, 이는 IoU가 0.3 이상이어야만 양성 샘플로 간주할 수 있다는 의미다. 다만, 이 설정은 주로 pos_iou_thr보다 낮은 값으로 설정된다.
1.5 ignore_iof_thr (무시할 IoF 임계값)
- 설명: 이 값은 IoF(Intersection over Foreground)를 기준으로, 특정 영역을 무시할지를 결정한다. 설정된 값보다 낮은 IoF를 가지는 박스는 학습에서 무시된다.
- 일반적인 값: -1로 설정되었는데, 이는 IoF를 기준으로 박스를 무시하지 않겠다는 뜻이다.
2. sampler (샘플링)
샘플러는 학습 과정에서 사용할 샘플을 선택하는 역할을 합니다. 주어진 설정에서는 PseudoSampler를 사용하고 있습니다.
2.1 type
- RandomSampler: 양성과 음성을 랜덤하게 샘플링합니다. num과 같은 추가 매개변수를 통해 샘플 개수를 지정할 수 있습니다.
- num: 샘플링할 개수. 예를 들어 num=256으로 설정하면, 256개의 샘플을 무작위로 선택.
- pos_fraction: 양성 샘플의 비율을 지정. 예를 들어 pos_fraction=0.5로 설정하면, 샘플의 절반을 양성으로 선택.
- OHEMSampler: OHEM (Online Hard Example Mining) 샘플러로, 손실이 큰 샘플을 더 많이 선택합니다.
- num: 샘플 개수를 지정하며, num=512로 설정하면 512개의 어려운 예제를 선택.
- PseudoSampler: 실제 샘플링을 하지 않고, 모든 양성/음성 샘플을 그대로 사용합니다. Focal Loss 등에서 자주 사용.
3. allowed_border (허용 경계)
- 설명: 모델이 예측하는 경계 박스가 이미지의 경계를 넘어설 수 있는 정도를 제어합니다. 이 값이 음수일 경우, 경계를 넘어가는 것을 허용하지 않으며, 양수일 경우 해당 경계 내에서 넘어가는 것을 허용합니다.
- 일반적인 값: -1로 설정되어 있는 경우 경계 밖으로 넘어가는 예측 박스를 허용하지 않는다는 의미입니다.
- 0: 경계 바깥으로 나가는 예측 박스를 허용하지 않는다.
- 20: 경계에서 20픽셀 정도 넘는 예측 박스도 허용.
- 100: 경계에서 100픽셀까지 허용하여, 더 많은 예측 박스를 인정할 수 있음.
4. pos_weight (양성 가중치)
- 설명: 양성 샘플에 부여하는 가중치를 설정합니다. 일반적으로 -1로 설정하면, 양성 샘플의 가중치는 균일하게 적용됩니다. 이 값을 조정하여 양성 샘플에 더 높은 가중치를 부여할 수도 있습니다.
- 일반적인 값: -1은 균일 가중치를 의미합니다. Focal Loss를 사용할 때 주로 -1로 설정합니다.
- -1: 기본값이며, 양성 샘플에 균일한 가중치를 적용.
- 1.0: 양성 샘플에 대해 더 높은 가중치를 부여해, 모델이 양성 샘플에 더 집중하게 할 수 있습니다.
- 0.5: 양성 샘플에 대해 더 낮은 가중치를 부여해, 양성 샘플의 영향을 줄일 수 있습니다.
5. debug (디버그 모드)
- 설명: True로 설정하면 학습 과정에서 디버깅 정보를 출력할 수 있습니다. 이를 통해 모델이 제대로 학습되는지 확인할 수 있습니다.
'AI Tech 7기' 카테고리의 다른 글
segmentation loss 정리 (3) | 2024.11.15 |
---|---|
NMS, SoftNMS (0) | 2024.10.16 |
coco format 파악하기 (pycocotools) (0) | 2024.10.09 |