증강

증강은 TrainConfig의 조절기로 구성되지만, 각 모델 계열는 자체 학습 파이프라인을 실행하며, 모자이크 분기가 없는 파이프라인은 이를 근사하지 않고 mosaic_prob을 무시합니다.

노브 설정

증강 노브는 일반적인 train() 인수입니다.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9s.pt")model.train(    data="my-dataset.yaml",    epochs=100,    mosaic_prob=1.0,    mixup_prob=0.15,    hsv_prob=1.0,    flip_prob=0.5,    no_aug_epochs=15,)
CLI
# CLI는 mosaic_prob를 mosaic으로, mixup_prob를 mixup으로 표기합니다.libreyolo train model=LibreYOLO9s.pt data=my-dataset.yaml \  epochs=100 mosaic=1.0 mixup=0.15 hsv_prob=1.0 \  flip_prob=0.5 no_aug_epochs=15

그 중 세 개는 train()과 CLI 모두에서 받아들이는 더 짧은 철자가 있습니다: mosaic는 mosaic_prob에, fliplr도 flip_prob에 매핑되고, 탐지에서는 mixup이 mixup_prob에 매핑됩니다. 짧은 철자와 해당 필드를 서로 다른 값으로 함께 전달하면 예외가 발생합니다. 다른 모든 노브는 두 곳 모두에서 동일하게 철자됩니다.

두 개가 아니라 세 개의 상태

노브가 어떤 기능을 하는지는 계열에 따라 다릅니다. 라이브러리는 이에 대한 선언적 테이블을 유지하며, 각 항목은 세 가지 상태 중 하나입니다.

used는 노브가 파이프라인에 도달하여 샘플을 변경함을 의미합니다. ignored는 절대 파이프라인에 도달하지 않으므로 설정해도 아무런 효과가 없습니다. gated_by_mosaic는 모자이크 분기를 거친 샘플에만 적용되므로 mosaic_prob=0와 함께 연결되어 있어도 절대 작동하지 않습니다.

세 번째 상태는 사람들을 놀라게 하는 것입니다. YOLOX 스타일 파이프라인에서는 어파인 워프가 모자이크 캔버스에서 실행되고 MixUp이 모자이크 샘플을 블렌드하므로 mosaic_prob=0는 degrees, translate, shear, perspective, mosaic_scale, mixup_prob, mixup_scale를 동시에 조용히 비활성화합니다. 트레이너는 MixUp 경우에 대해 특별히 경고를 로그로 남깁니다:

mixup_prob=0.15 has no effect for YOLOv9: mixup only applies to mosaic samplesand mosaic_prob=0. Set mosaic_prob > 0 to enable mixup.

CLI는 무시된 노브에 대해서도 경고하며, 실제로 입력한 것만 나열합니다:

Warning: RF-DETR ignores these parameters: degrees, mosaic

네 가지 파이프라인 모양

계열들은 네 가지 학습 경로로 모이며, 그 경로가 거의 모든 답을 결정합니다.

YOLOX 스타일 모자이크 파이프라인은 샘플마다 HSV 지터와 플립을 적용한 후, 모자이크 분기 내에서 어핀 변환과 MixUp을 실행합니다. 이는 YOLOX, YOLOv7, YOLOv9 및 그 E2E와 P2 변형, RTMDet, PicoDet, RT-DETR, RT-DETRv2 및 FOMO를 포함합니다.

DETR 스타일의 패스스루 파이프라인에는 모자이크나 아핀 왜곡이 없습니다. 포토메트릭 왜곡, 줌아웃 및 IoU 크롭은 설정 조정이 아니라 레시피 상수이므로 flip_prob와 no_aug_epochs만 활성화됩니다. 이는 D-FINE, Dome-DETR, DEIM, DEIMv2, RT-DETRv4, EC 및 한 가지 변경 사항과 함께 RF-DETR을 포함합니다.

분류 ImageFolder 파이프라인에는 자체 증강 설정이 있습니다. flip_prob는 수평 뒤집기를 제어하며 기본값은 0.5이고, fliplr은 그 별칭입니다.

YOLO-NAS는 자체적인 형태를 가지고 있습니다: 모자이크는 전혀 없고, 항상 켜져 있는 개별 샘플 아핀(affine), 그리고 MixUp은 게이트 방식이 아닌 독립적으로 적용됩니다. 그 mosaic_scale 값은 아핀 스케일 범위로 재사용됩니다.

SegFormer, LingBot-Vision, NAFNet은 각각 임의성을 구성할 수 있는 것이 아니라 동일 계열 내에서 고정된 작업별 파이프라인을 실행합니다. SegFormer와 LingBot-Vision의 경우 조정 가능한 항목은 mosaic_scale와 hsv_prob가 아니라 클래스 속성 semantic_scale_jitter와 semantic_hsv_prob입니다. NAFNet의 크롭과 플립은 고정된 0.5 확률로 입력과 타깃 연산이 결합된 형태입니다.

어떤 계열이 어떤 손잡이를 기리는가

아래 표는 libreyolo/data/augment/spec.py에서 출하된 사양으로, 라이브러리 자체 테스트에 의해 실제 파이프라인 배관과 비교 검증됩니다. 아키텍처에서 추론하지 말고 거기에서 확인하십시오.

계열을 위한 지원표를 읽으십시오
from libreyolo.data.augment.spec import AUG_KNOBS, aug_support for knob, description in AUG_KNOBS.items():    support = aug_support("yolo9")[knob]    print(f"{knob:16} {support.status:16} {support.note or description}")
그냥 무시당한 사람들
from libreyolo.data.augment.spec import ignored_aug_params print(sorted(ignored_aug_params("rfdetr")))

기본 노브에 대해 파이프라인별로 요약:

설정YOLOX 방식YOLO-NASDETR 방식분류
mosaic_prob사용무시무시무시
mixup_prob모자이크에 종속사용무시무시
hsv_prob사용사용무시무시
flip_prob사용사용사용사용
flipud사용사용무시사용
degrees모자이크에 종속사용무시무시
translate모자이크에 종속사용무시무시
shear모자이크에 종속사용무시무시
perspective모자이크에 종속사용무시무시
mosaic_scale모자이크에 종속사용무시무시
mixup_scale모자이크에 종속사용무시무시
no_aug_epochs사용사용사용사용

그 열 안의 예외들, 모두 좁아지고 있는:

  • RTMDet, PicoDet, RT-DETR, RT-DETRv2 및 FOMO에는 수직 뒤집기가 없으므로 flipud는 무시됩니다. FOMO의 모자이크 래퍼 또한 원근 없이 제작되었습니다.
  • RF-DETR의 기본 파이프라인에는 HSV 지터가 없으므로, DETR 스타일 열 위에서는 hsv_prob가 무시됩니다.
  • EC는 hsv_prob, degrees 및 translate를 인정하지만, 오직 task="pose"에 대해서만, 그 키포인트 인식 변환이 이들을 읽습니다. 그 검출 및 분할 경로는 고정된 광학 레시피를 사용합니다.
  • DINOv2는 DETR 스타일의 컬럼을 탐지 및 의미 작업에 따라 따르며 task="classify"를 위한 분류 팩을 추가합니다.

no_aug_epochs는 모든 곳에서 used이지만 의미는 같지 않습니다. 모자이크 파이프라인에서는 마지막 에폭 동안 모자이크와 MixUp을 끕니다. DETR 방식 파이프라인에서는 광도, 축소, 크롭 증강을 중단하고 스케줄의 마지막 구간을 결정합니다. 분류 파이프라인에서는 자동 증강, 지우기, MixUp, CutMix를 비활성화하며 크롭과 뒤집기는 유지합니다.

perspective는 회전, 스케일, 전단, 이동 위에 사영 왜곡을 더합니다. 캔버스 모서리는 각각 축마다 캔버스 한 변의 절반에 min(perspective * 100, 0.2)를 곱한 값까지의 무작위 양만큼 안쪽으로 이동하므로, perspective=0.001은 어떤 해상도에서도 모서리를 한 변의 최대 5퍼센트만큼 이동시키고, 0.002 이상의 모든 값은 같은 최대치에 도달합니다. 기본값 0은 왜곡을 아핀으로 유지하며, 음수 값은 첫 샘플을 왜곡할 때 ValueError를 발생시킵니다. YOLOv9와 그 E2E, P2 변형, YOLOX, YOLOv7, YOLO-NAS, PP-YOLOE, RTMDet, PicoDet, RT-DETR, RT-DETRv2가 이를 적용합니다.

YOLOv9, 그 변형, YOLOv7, RT-DETR, RT-DETRv2가 학습에 쓰는 YOLOv9 모자이크 파이프라인의 MixUp은 혼합 비율을 [0, 1]에서 균등한 Beta(1, 1)에서 추출합니다. YOLOX, RTMDet, PicoDet이 쓰는 YOLOX 모자이크 래퍼는 고정된 0.5로 혼합합니다.

분류 팩

네 개의 노브가 분류 파이프라인을 구동하며 그 외에는 아무것도 구동하지 않습니다. 탐지 계열은 이 네 개 모두를 무시합니다.

분류 팩
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(    data="my-classification-dataset",    epochs=50,    auto_augment="randaugment",    erasing=0.25,    mixup=0.2,    cutmix=0.2,)

auto_augment는 "randaugment", "autoaugment", "augmix" 또는 None를 사용합니다. erasing는 RandomErasing 확률입니다. mixup와 cutmix는 소프트 레이블을 생성하는 배치별 확률입니다; 배치당 최대 하나만 실행되며, MixUp이 먼저 실행되므로 두 확률은 더해질 수 있으며 합이 최대 1이 되어야 합니다.

모두 기본적으로 꺼져 있으므로 요청하지 않는 한 분류 학습은 변경되지 않습니다.

train()과 CLI는 작업에 따라 mixup을 전달합니다. 분류는 배치 혼합에, 탐지는 mixup_prob에 사용합니다.

scale=0.5는 무작위 크롭 면적 범위 (0.5, 1.0)을 의미하며, 쌍을 명시하면 양쪽 경계를 설정합니다. crop_pct=None은 계열의 평가 크기 조정 비율을 유지합니다. 값을 지정하면 학습/검증 평가에 영향을 주지만 내보내기는 계열의 기본 전처리를 유지합니다.

CLI는 auto_augment, erasing, cutmix, fliplr, flipud를 제공합니다. 분류의 mixup은 배치 혼합을 의미하며 기본값은 0.0입니다. 수평 뒤집기의 기본값은 0.5이고 수직 뒤집기는 0.0입니다. mixup + cutmix는 1을 초과할 수 없습니다.

no_aug_epochs는 마지막 에폭 동안 자동 증강, 지우기, MixUp, CutMix를 비활성화하고 크롭과 뒤집기는 유지합니다. 분류 레시피의 마지막 구간 기본값은 0입니다.

계열별 조절기

일부 노브는 베이스 클래스가 아니라 계열의 설정 하위 클래스에 존재하므로, 해당 계열에만 존재하며 CLI 플래그가 없습니다.

계열손잡이효과
YOLOv9, YOLOv9-E2E, YOLOv9-P2copy_paste복사-붙여넣기 인스턴스 증강 확률, task="segment"만
YOLOv9, YOLOv9-E2E, YOLOv9-P2copy_paste_mode"flip"는 동일한 샘플을 반사하여 재사용하고, "mixup"는 두 번째 샘플을 가져옵니다
YOLOv9, YOLOv9-E2E, YOLOv9-P2rot90무작위 90도 회전 확률
YOLOv9, YOLOv9-E2E, YOLOv9-P2max_labels학습 변환에서 이미지별 실제 캡, 기본값 300
RF-DETRcopy_paste, copy_paste_modetask="segment", "flip" 모드에서만 복사-붙여넣기
RF-DETR, D-FINE, ECcrop_resize_prob랜덤 자르기-크기 조정 확률
EC, YOLO-NASbrightness_contrast_prob, affine_prob포즈 경로 지터 및 키포인트 인식 아핀 확률

max_labels는 데이터를 잃는 장치입니다. 캡을 넘어선 박스는 오류가 아니라 한 번만 경고를 남기고 삭제되므로, 항공 사진과 같은 밀집된 이미지에는 이를 높여야 합니다. 레이블 할당 메모리는 캡이 아니라 배치에서 가장 밀집된 이미지를 따릅니다.

회전된 상자에 대한 코너 인식 증강이 구현되지 않았기 때문에, 회전 상자 학습에서는 설정에 관계없이 모자이크와 MixUp이 비활성화됩니다.

  • no_aug_epochs의 스케줄 인수와 나머지 train()에 대한 하이퍼파라미터.
  • 데이터셋은 이러한 변환이 사용하는 레이블 형식입니다.

LibreYOLO v1.6.0에서 검증되었습니다.