[Augmentation]

또잉의 공부일지·2023년 11월 29일

이용한 데이터는 Quickdraw dataset으로, 그림판에서 그린 그림같은 이미지들이다.

데이터 예시

병원

모래시계

Case1) Augmentation 없이 학습

Case2) Augmentation 적용 학습

적용한 augmentation 코드

	transforms.ToTensor(),
    transforms.Resize((200,200)),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                          std=[0.229, 0.224, 0.225]),
    transforms.RandomHorizontalFlip(p=0.5),
    transforms.RandomCrop((150,150))

Case3) Augmentation 적용 학습 - crop 제외

이후 위의 코드에서 random crop 부분만 제외해보았다. 데이터 특성상 일부분만 자르면 안될거라는 생각이 뒤늦게 들었다.

결과적으로,

최저 loss 도달 속도:

Case3 > Case1 > Case2

성능:

Case3 > Case1 Case2 (둘 중에 무엇이 나은지는 모르겠다.)

Case3이 가장 좋은 성능이라고 한 이유는, Case1과 Case3가 유사한 그래프를 보이지만 loss 최저점에서 다시 증가할 때 그 증가폭이 Case3가 더 작기 때문에 overfitting이 덜하다고 볼 수 있다고 생각했기 때문이다. 맞나?

그리고 Case1,2의 경우.. iteration이 늘어난다면 Case2가 더 적은 loss를 보일 수 있을 것 같다.

확인점

1. blur의 유용성
blur를 적용하면 세부적인 노이즈가 줄고 패턴이 부각되어 전반적인 패턴을 분류하는 데 더 효율적이다.

2. Augmentation 순서의 중요성 (blur, resize)

  • blur → resize: 세부정보 손실 후 이미지 크기가 변경되므로 더 많은 정보가 손실된다.
  • resize → blur: 세부정보는 유지된 채 이미 크기가 변경되고, 이후 blur를 통해 패턴을 부각시킬 수 있다.

blur→resize


resize→blur


3. Fine-tuning에서 Augmentation의 효과 저하
Fine-tuning에서는 대부분의 conv layer를 고정하고, 마지막 분류기만을 학습한다. 이는 원래 모델이 이미 충분히 특징을 학습한 경우에 효과적이다. 그러나 augmentation을 적용하면 입력 이미지가 변형되므로 이전에 학습된 특징들이 더 이상 유효하지 않을 수 있다. 이를 해결하기 위해 전체 또는 일부 네트워크를 재학습하는 것이 필요하다.

1개의 댓글

comment-user-thumbnail
2023년 11월 29일

저도 Korean Augmentation to the US Army 였습죠

답글 달기