콘텐츠로 건너뛰기

최고의 YOLOv5 훈련 결과를 위한 팁

이 가이드에서는 YOLOv5 🚀을 사용하여 최고의 맵과 훈련 결과를 얻는 방법을 설명합니다.

데이터 세트가 충분히 크고 레이블이 잘 지정되어 있다면 모델이나 학습 설정을 변경하지 않고도 좋은 결과를 얻을 수 있는 경우가 대부분입니다. 처음에 좋은 결과를 얻지 못한다면 개선하기 위해 취할 수 있는 단계가 있지만, 변경을 고려하기 전에 항상 모든 기본 설정으로 먼저 훈련하는 것이 좋습니다. 이렇게 하면 성능 기준선을 설정하고 개선이 필요한 부분을 파악하는 데 도움이 됩니다.

교육 결과에 대해 궁금한 점이 있는 경우 가능한 한 최대한의 정보를 제공하는 것이 좋습니다. 결과 플롯(트레인 손실, 밸 손실, P, R, mAP), PR 곡선 등 유용한 응답을 기대하는 경우, 혼동 매트릭스, 트레이닝 모자이크, 테스트 결과 및 데이터 세트 통계 이미지(예: labels.png). 이 모든 것은 project/name 디렉토리, 일반적으로 yolov5/runs/train/exp.

아래 YOLOv5 교육에서 최상의 결과를 얻고자 하는 사용자를 위해 전체 가이드를 작성했습니다.

데이터 세트

  • 수업당 이미지: 수업당 1500개 이상의 이미지 권장
  • 클래스당 인스턴스 수. 클래스당 10000개 이상의 인스턴스(레이블이 지정된 개체)를 권장합니다.
  • 다양한 이미지. 배포된 환경을 대표할 수 있는 이미지여야 합니다. 실제 사용 사례의 경우 다양한 시간대, 다양한 계절, 다양한 날씨, 다양한 조명, 다양한 각도, 다양한 소스(온라인 스크랩, 로컬에서 수집, 다양한 카메라) 등의 이미지를 권장합니다.
  • 라벨 일관성. 모든 이미지에 있는 모든 클래스의 모든 인스턴스에 레이블을 지정해야 합니다. 부분적인 라벨링은 작동하지 않습니다.
  • 레이블 정확도. 레이블은 각 개체를 밀접하게 둘러싸고 있어야 합니다. 객체와 객체 사이에는 공백이 없어야 하며 바운딩 박스가 있어야 합니다. 레이블이 누락된 개체가 없어야 합니다.
  • 라벨 확인. 보기 train_batch*.jpg 를 클릭하여 레이블이 올바르게 표시되는지 확인합니다. 예제 모자이크.
  • 배경 이미지. 배경 이미지는 오탐(FP)을 줄이기 위해 데이터 세트에 추가되는 객체가 없는 이미지입니다. FP를 줄이기 위해 약 0~10%의 배경 이미지를 권장합니다(참고로 COCO의 배경 이미지는 전체의 1%인 1000개입니다). 배경 이미지에는 레이블이 필요하지 않습니다.

COCO 분석

모델 선택

YOLOv5x 및 YOLOv5x6과 같은 더 큰 모델은 거의 모든 경우에 더 나은 결과를 제공하지만, 더 많은 매개 변수가 있고, 훈련하는 데 더 많은 CUDA 메모리가 필요하며, 실행 속도가 느립니다. 모바일 배포의 경우 YOLOv5s/m을, 클라우드 배포의 경우 YOLOv5l/x를 권장합니다. 모든 모델에 대한 전체 비교는 README 표를 참조하세요.

YOLOv5 모델

  • 사전 훈련된 가중치부터 시작하세요. 중소규모 데이터 세트에 권장됩니다(예 VOC, VisDrone, 글로벌 밀). 모델 이름을 --weights 인수를 전달합니다. 모델은 자동으로 다운로드됩니다. 최신 YOLOv5 릴리스.
python train.py --data custom.yaml --weights yolov5s.pt
python train.py --data custom.yaml --weights yolov5m.pt
python train.py --data custom.yaml --weights yolov5l.pt
python train.py --data custom.yaml --weights yolov5x.pt
python train.py --data custom.yaml --weights custom_pretrained.pt
  • 처음부터 시작하세요. 대규모 데이터 세트에 권장됩니다(예 COCO, 오브젝트365, OIv6). 관심 있는 모델 아키텍처 YAML을 빈 --weights '' 인수입니다:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
python train.py --data custom.yaml --weights '' --cfg yolov5m.yaml
python train.py --data custom.yaml --weights '' --cfg yolov5l.yaml
python train.py --data custom.yaml --weights '' --cfg yolov5x.yaml

교육 설정

수정하기 전에 먼저 기본 설정으로 훈련하여 성능 기준선을 설정하세요. train.py 설정의 전체 목록은 train.py argparser에서 확인할 수 있습니다.

  • 에포크. 300 에포크로 시작합니다. 조기에 오버핏이 발생하면 에포크를 줄일 수 있습니다. 300 에포크 이후에도 오버핏이 발생하지 않으면 600, 1200 등 더 긴 에포크까지 훈련합니다.
  • 이미지 크기. COCO는 다음과 같은 기본 해상도로 훈련합니다. --img 640데이터 세트에 작은 오브젝트가 많기 때문에 다음과 같이 더 높은 해상도에서 훈련하면 이점을 얻을 수 있습니다. --img 1280. 작은 개체가 많은 경우 사용자 지정 데이터 세트는 기본 해상도 또는 그 이상의 해상도로 학습하는 것이 좋습니다. 최상의 추론 결과를 얻을 수 있습니다. --img 에서 훈련하는 경우와 같이, 즉 --img 1280 에서도 테스트하고 감지해야 합니다. --img 1280.
  • 배치 크기. 가장 큰 --batch-size 하드웨어가 허용하는 최대 크기입니다. 배치 크기가 작으면 일괄 정규화 통계는 피해야 합니다. 다음을 사용할 수 있습니다. --batch-size -1 를 클릭해 GPU 맞는 최적의 배치 크기를 자동으로 선택합니다.
  • 학습 속도. 기본 학습 속도 일정은 대부분의 경우 잘 작동합니다. 더 빠른 수렴을 원한다면 --cos-lr 플래그를 설정하면 코사인 학습률 스케줄링이 활성화되어 에포크에 따라 코사인 곡선을 따라 학습률을 점진적으로 낮춥니다.
  • 데이터 증강. YOLOv5 여러 훈련 이미지를 결합하는 모자이크와 같은 다양한 증강 기술이 포함되어 있습니다. 마지막 몇 개의 시대에는 --close-mosaic 10 를 설정하여 모자이크 증강을 비활성화하면 교육 안정화에 도움이 될 수 있습니다.
  • 하이퍼파라미터. 기본 하이퍼파라미터는 hyp.scratch-low.yaml. 하이퍼파라미터 수정을 고려하기 전에 먼저 기본 하이퍼파라미터로 훈련하는 것이 좋습니다. 일반적으로 증강 하이퍼파라미터를 늘리면 과적합이 감소하고 지연되므로 훈련 시간이 길어지고 최종 mAP가 높아집니다. 다음과 같은 손실 구성 요소 이득 하이퍼파라미터 감소 hyp['obj'] 를 사용하면 특정 손실 구성 요소의 과적합을 줄이는 데 도움이 됩니다. 이러한 하이퍼파라미터를 최적화하는 자동화된 방법에 대해서는 하이퍼파라미터 진화 튜토리얼.
  • 혼합 정밀 교육. 다음과 같은 혼합 정밀 훈련을 지원합니다. --amp 를 사용하면 모델 정확도를 유지하면서 학습 속도를 높이고 메모리 사용량을 줄일 수 있습니다.
  • GPU GPU 교육. 여러 개의 GPU를 사용하는 경우 --device 0,1,2,3 를 사용하여 교육을 분산하여 교육 시간을 크게 줄일 수 있습니다.
  • 조기 종료. 사용 --patience 50 를 설정하여 50회 동안 유효성 검사 지표가 개선되지 않으면 훈련을 중지하여 시간을 절약하고 과적합을 방지합니다.

고급 최적화 기술

  • 전이 학습. 특수한 데이터 세트의 경우 사전 학습된 가중치로 시작하여 학습 중에 레이어를 점차적으로 고정 해제하여 특정 작업에 맞게 모델을 조정합니다.
  • 모델 가지치기. 학습 후에는 모델 가지치기를 통해 중복 가중치를 제거하고 큰 성능 손실 없이 모델 크기를 줄일 수 있습니다.
  • 모델 앙상블. 중요한 애플리케이션의 경우 서로 다른 구성으로 여러 모델을 학습하고 예측을 결합하여 정확도를 향상하세요.
  • 테스트 시간 확대. 다음을 사용하여 추론 중에 TTA를 활성화합니다. --augment 를 사용하여 입력 이미지의 증강 버전 결과를 평균화하여 예측 정확도를 향상시킬 수 있습니다.

추가 읽기

더 자세히 알고 싶다면 모든 ML 영역에 광범위하게 적용되는 훈련에 대한 훌륭한 아이디어를 제공하는 Karpathy의 ' 신경망 훈련 레시피'를 참조하세요 (https://karpathy.github.io/2019/04/25/recipe/).

트레이닝 설정 및 구성에 대한 자세한 내용은 사용 가능한 모든 매개 변수에 대한 포괄적인 설명을 제공하는 Ultralytics 트레이닝 설정 설명서를 참조하세요.

행운을 빌며 다른 궁금한 점이 있으면 알려주세요!

자주 묻는 질문

내 모델이 과피팅되었는지 어떻게 알 수 있나요?

훈련 손실이 계속 감소하는 반면 검증 손실이 증가하기 시작하면 모델이 과적합한 것일 수 있습니다. 학습 손실이 계속 개선되는 동안 검증 mAP가 정체되거나 감소한다면 과적합의 신호일 수 있습니다. 해결 방법으로는 학습 데이터를 더 추가하거나, 데이터 증강을 늘리거나, 정규화 기법을 구현하는 것이 있습니다.

YOLOv5 트레이닝을 위한 최적의 배치 크기는 얼마인가요?

최적의 배치 크기는 GPU 메모리에 따라 다릅니다. 일반적으로 배치 크기가 클수록 배치 정규화 통계와 훈련 안정성이 향상됩니다. 메모리 부족 없이 하드웨어가 처리할 수 있는 최대 배치 크기를 사용하세요. 다음을 사용할 수 있습니다. --batch-size -1 를 사용하여 설정에 맞는 최적의 배치 크기를 자동으로 결정할 수 있습니다.

YOLOv5 훈련 속도를 높이려면 어떻게 해야 하나요?

훈련 속도를 높이려면 다음과 같이 혼합 정밀 훈련을 활성화하세요. --amp와 함께 여러 GPU를 사용하여 --device 0,1,2,3를 사용하여 데이터 집합을 캐싱합니다. --cache를 사용하여 배치 크기를 최적화하세요. 또한 절대 정확도가 중요하지 않은 경우 YOLOv5s와 같은 더 작은 모델 변형을 사용하는 것도 고려하세요.

📅1 년 전 생성됨 ✏️ 업데이트됨 8 일 전

댓글