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




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

결과적으로,
Case3 > Case1 > Case2
Case3 > Case1 Case2 (둘 중에 무엇이 나은지는 모르겠다.)
Case3이 가장 좋은 성능이라고 한 이유는, Case1과 Case3가 유사한 그래프를 보이지만 loss 최저점에서 다시 증가할 때 그 증가폭이 Case3가 더 작기 때문에 overfitting이 덜하다고 볼 수 있다고 생각했기 때문이다. 맞나?
그리고 Case1,2의 경우.. iteration이 늘어난다면 Case2가 더 적은 loss를 보일 수 있을 것 같다.
1. blur의 유용성
blur를 적용하면 세부적인 노이즈가 줄고 패턴이 부각되어 전반적인 패턴을 분류하는 데 더 효율적이다.
2. Augmentation 순서의 중요성 (blur, resize)




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