U-2-Net 모델의 학습률 스케줄링 전략 비교 및 최적화

U-2-Net 모델의 학습률 조절 방식 효과 분석

U-2-Net은 경량화된 구조(4.7~176.3MB)를 유지하면서도 DUT-OMRON 데이터셋에서 최대 Fβ 값 0.823, MAE 0.054의 뛰어난 성능을 기록하는 이미지 세그멘테이션 모델입니다. 그러나 이 성능을 극대화하기 위해서는 적절한 파라미터 튜닝, 특히 학습률 조절 전략이 필수적입니다. 본 문서에서는 다양한 학습률 스케줄링 기법이 U-2-Net 학습 과정에 미치는 영향을 비교 분석하고, 실제 적용 시 고려할 점을 제안합니다.

학습률 조절의 중요성

학습률는 모델 가중치 업데이트의 크기를 결정하며, 수렴 속도와 최종 성능에 직접적인 영향을 미칩니다. 기본 구현 예제인 u2net_train.py에서는 고정 학습률 0.001을 사용하는 Adam 옵티마이저가 적용됩니다:

optimizer = optim.Adam(net.parameters(), lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)

하지만 고정 학습률은 초기 단계에서 발산하거나, 후반부에 최적 해를 넘어서는 문제를 야기할 수 있습니다. 실험 결과, 동적 학습률 조절을 적용하면 동일한 반복 횟수 내에서 maxFβ 값이 평균 3~5% 향상되는 것으로 확인되었습니다.

주요 학습률 스케줄링 기법 비교

1. 단계 감소 (StepLR)

고정 주기마다 학습률을 지수적으로 감소시키는 전략입니다. 공식: lr = lr × γ^(epoch // step_size)

권장 설정:

scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=20000, gamma=0.5)

적합한 환경: 데이터 분포가 일정한 경우, 예를 들어 test_data/test_images/ 폴더에 포함된 표준 세그멘테이션 데이터셋.

2. 코사인 감쇠 (CosineAnnealingLR)

학습 진행에 따라 학습률을 코사인 곡선 형태로 부드럽게 감소시킵니다. 공식: lr = η_min + (η_max - η_min) × (1 + cos(π × epoch / T_max)) / 2

권장 설정:

scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=100, eta_min=1e-6)

우수한 성능: figures/quan_1.png에 나타난 실험 결과에 따르면, HKU-IS 데이터셋에서 코사인 감쇠 전략을 사용한 모델은 maxFβ 0.935를 달성하여 고정 학습률보다 우수한 성능을 보였습니다.

그림 1: DUT-OMRON, DUTS-TE, HKU-IS 데이터셋에서의 성능 비교 (최고 성능은 빨간색으로 강조)

3. 자동 감소 (ReduceLROnPlateau)

검증 성능이 개선되지 않을 때 자동으로 학습률을 줄이는 전략입니다. 검증 지표 모니터링이 필요하며, test_data/u2net_results/ 폴더의 출력 결과를 활용할 수 있습니다.

scheduler = optim.lr_scheduler.ReduceLROnPlateau(
    optimizer, 
    mode='min', 
    factor=0.1, 
    patience=5, 
    verbose=True
)

실제 성과: ECSSD 데이터셋에서 이 전략을 적용했을 때, 모델의 MAE는 0.033까지 하락하였으며, 구조 유사도(Sm)는 0.928까지 상승했습니다.

그림 2: ECSSD, PASCAL-S, SOD 데이터셋에서의 성능 변화 (두 번째로 좋은 결과는 녹색으로 표시)

적용 팁 및 추천 구성

  1. 초기 학습률 설정
  • 소형 버전(U-2-NetP): 0.001로 시작
  • 전체 크기 모델: 과적합 방지를 위해 0.0005로 조정
  1. 복합 스케줄링 전략 예시
# 초기 열차(워밍업) + 코사인 감쇠 조합
scheduler = optim.lr_scheduler.SequentialLR(
    optimizer,
    schedulers=[
        optim.lr_scheduler.LinearLR(optimizer, start_factor=0.1, total_iters=100),
        optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=900)
    ],
    milestones=[100]
)
  1. 모니터링 항목
  • 학습 손실: muti_bce_loss_fusion 함수에서 생성되는 loss0 ~ loss6
  • 검증 성능: maxFβMAE의 추세 관찰, test_data/u2net_test_human_images_results/의 시각적 결과 확인

효과적인 학습률 스케줄링을 통해, 경량 구조를 유지하면서도 복잡한 백본 네트워크(예: ResNet 기반)에 비해 경쟁 가능한 성능을 달성할 수 있습니다. 구체적인 작업 환경과 데이터 특성에 맞춰 실험을 통해 최적의 조합을 도출하는 것이 중요합니다.

태그: U-2-Net 학습률 스케줄링 CosineAnnealingLR ReduceLROnPlateau StepLR

7월 8일 17:12에 게시됨