모델 학습이란?

항목내용
핵심 개념Transfer Learning: 사전 학습 모델의 지식을 내 데이터에 맞게 조정
왜 사용하는가적은 데이터로도 높은 성능, 학습 시간 대폭 단축
YOLO 적용 방식Backbone(특징 추출)은 동결, Head(탐지)를 새로 학습
핵심 파라미터epochs, batch, imgsz, lr0, optimizer, patience
과적합 방지weight_decay, dropout, early stopping, 데이터 증강

문서 탐색


Transfer Learning 개념

Transfer Learning(전이 학습) 은 대규모 데이터셋(COCO, ImageNet 등)으로 이미 학습된 모델의 지식을 내 도메인에 맞게 재활용하는 방법입니다.

왜 Transfer Learning을 사용하는가?

이유설명철도 드론 적용
적은 데이터로 학습사전 학습으로 이미지의 기본 특징(엣지, 패턴)을 이미 알고 있음철도 결함 이미지를 수천 장만 확보해도 충분
빠른 학습 속도처음부터 학습하는 것보다 수렴이 훨씬 빠름에포크 수를 줄여 실험 주기 단축
높은 초기 성능랜덤 초기화 대비 시작점이 이미 좋음소형 GPU로도 실용 수준의 mAP 달성

처음부터 학습하는 것(Training from Scratch)은 수백만 장의 이미지와 수십 시간의 학습이 필요하지만, Transfer Learning은 수천 장의 데이터와 수 시간으로도 좋은 결과를 얻을 수 있습니다.


YOLO에서의 Transfer Learning

YOLOv8/v11의 구조는 크게 세 부분으로 나뉩니다.

입력 이미지
    ↓
[Backbone]  ← 이미지에서 특징(패턴, 엣지, 형태) 추출
    ↓
[Neck]      ← 다양한 크기의 특징 맵을 합성
    ↓
[Head]      ← 최종 바운딩 박스와 클래스 예측
    ↓
출력: [x, y, w, h, class_id, confidence]

Backbone freeze vs Head 학습

Transfer Learning의 기본 전략은 Backbone(특징 추출 레이어)을 동결(freeze)하고 Head만 새로 학습하는 것입니다.

  • Backbone: COCO로 학습된 범용 특징 추출 능력 유지 (레일 엣지, 균열 패턴 탐지에 그대로 활용)
  • Head: 철도 도메인의 클래스(균열, 체결구, 침목)에 맞게 새로 학습

레이어 Freeze 전략

전략freeze 설정적합한 상황
Full Fine-tuningfreeze=None (기본)데이터가 1,000장 이상, 도메인 차이가 클 때
Head만 학습freeze=10데이터가 적고, 사전 학습 도메인과 유사할 때
Backbone 완전 동결freeze=22 (전체 백본)데이터가 매우 적을 때 (수백 장 이하)
점진적 해제에포크마다 freeze 변경최고 성능을 위한 고급 기법

드론 철도 이미지는 COCO의 일반 사물과 도메인이 다르므로, 초반 에포크에는 freeze=10으로 Head를 먼저 학습한 뒤, 이후 에포크에서 전체를 Fine-tuning하는 것이 효과적입니다.


핵심 학습 파라미터

파라미터기본값설명권장
epochs100전체 데이터를 학습하는 반복 횟수100~300 (early stopping과 함께)
batch16한 번에 처리하는 이미지 수GPU 메모리에 맞게 조정, -1로 자동 설정
imgsz640학습 이미지 크기 (정사각형 기준)640 기본, 소형 객체는 1280
lr00.01초기 학습률0.01 (SGD), 0.001 (Adam)
lrf0.01최종 학습률 비율 (lr0의 배수)0.01 (Cosine Scheduler와 함께)
optimizerauto최적화 알고리즘SGD (일반), AdamW (소형 데이터)
patience50Early stopping 대기 에포크 수20~50

학습률(Learning Rate) 이해

학습률이 너무 크면: 최솟값을 뛰어넘어 발산 (Loss가 오히려 증가)
학습률이 너무 작으면: 수렴이 매우 느리거나 지역 최솟값에 갇힘
적절한 학습률: Loss가 안정적으로 감소

YOLO는 Cosine LR Scheduler를 기본 사용하여 학습 초반에는 높은 학습률로 빠르게 수렴하고, 후반에는 낮은 학습률로 세밀하게 조정합니다.


정규화/과적합 방지 파라미터

파라미터기본값설명권장
weight_decay0.0005가중치 크기에 패널티를 주어 과적합 방지0.0005 유지
dropout0.0학습 중 무작위 뉴런 비활성화 비율소규모 데이터 시 0.1~0.3
warmup_epochs3.0초반 학습률을 서서히 높이는 에포크 수3 (기본 유지)
cos_lrFalseCosine 학습률 스케줄러 사용 여부True 권장
close_mosaic10학습 마지막 N 에포크에서 Mosaic 비활성화10~15

close_mosaic는 학습 후반부에 Mosaic 증강을 끄는 설정으로, 모델이 실제 이미지에 가까운 패턴을 최종 학습하도록 도와줍니다.


Loss 가중치 파라미터

YOLO의 총 손실(Loss)은 세 가지 요소의 합입니다.

파라미터기본값설명높이면
box7.5바운딩 박스 위치·크기 Loss 가중치박스 위치 정확도 향상
cls0.5클래스 분류 Loss 가중치클래스 구분 정확도 향상
dfl1.5Distribution Focal Loss 가중치 (경계 정밀도)박스 경계 정밀도 향상
총 Loss = box × BoxLoss + cls × ClsLoss + dfl × DFLLoss

드론 철도 이미지에서 소형 객체의 정확한 위치 탐지가 중요하다면 box 값을 약간 높이는 것을 고려할 수 있습니다.


과적합이란?

과적합(Overfitting) 은 모델이 학습 데이터에는 완벽히 맞지만 새로운 이미지에서는 성능이 떨어지는 현상입니다.

징후

징후: train loss ↓ (감소)  +  val loss ↑ (증가)
     → 학습 데이터는 잘 맞추지만 검증 데이터는 틀림
     → mAP@50(val)이 특정 에포크 이후 떨어지기 시작

주요 원인 5가지

  1. 학습 데이터 부족: 클래스당 이미지가 수백 장 이하
  2. 모델 크기 과대: 데이터 양 대비 파라미터가 너무 많음 (YOLOv8x를 소규모 데이터에 사용)
  3. 학습 에포크 과다: 필요 이상으로 오래 학습
  4. 데이터 다양성 부족: 특정 환경(맑은 날, 특정 고도)만 포함
  5. 정규화 부재: weight_decay, dropout 미적용

과적합 방지 기법

기법설정 방법효과
데이터 증강mosaic, flipud, scale 등 활성화학습 데이터 다양성 증가
Early Stoppingpatience=30val mAP가 개선되지 않으면 자동 중단
Weight Decayweight_decay=0.0005가중치 크기를 억제해 과적합 방지
전이 학습.pt 사전 학습 모델 사용적은 데이터로도 일반화 가능
모델 크기 축소yolov8n → yolov8s 순으로 시도파라미터 수를 줄여 단순화

문서 탐색


참고 자료