ⓔ transforms.Normalize: 전이 학습에서 사용하는 사전 훈련된 모델들은 대개 ImageNet 데이터셋에서 훈련되었습니다. 따라서 사전 훈련된 모델을 사용하기 위해서는 ImageNet 데이터의 각 채널별 평균과 표준편차에 맞는 정규화(normalize)1를 해 주어야 합니다. 즉, Normalize 메서드 안에 사용된 (mean: 0.485, 0.456, 0.406), (std: 0.229, 0.224, 0.225)는 ImageNet에서 이미지들의 RGB 채널마다 평균과 표준편차를 의미합니다. 참고로 OpenCV를 사용해서 이미지를 읽어 온다면 RGB 이미지가 아닌 BGR 이미지이므로 채널 순서에 주의해야 합니다.
② __call__ 함수는 클래스를 호출할 수 있도록 하는 메서드입니다. __init__은 인스턴스 초기화를 위해 사용한다면 __call__은 인스턴스가 호출되었을 때 실행됩니다. 즉, 클래스에 __call__ 함수가 있을 경우 클래스 객체 자체를 호출하면 __call__ 함수의 리턴(return) 값이 반환됩니다.
이미지가 위치한 디렉터리에서 데이터를 불러온 후 훈련용으로 400개의 이미지, 검증용으로 92개의 이미지, 테스트용으로 열 개의 이미지를 사용합니다.
예제를 진행하기 위한 시스템 성능이 좋을 경우 훈련용 2만 개를 사용하면 모델 성능이 더 높아집니다. 예제 파일의 주석(#)을 해제하고 실행하면 됩니다. 단 해제하고 실행한다면 그다음 두 줄은 주석 처리해야 합니다.