[CV] torchvision 이미지 정규화

김유상·2023년 1월 19일
0
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                            std=[0.229, 0.224, 0.225]),
])

일반적으로 위 코드에서 보이는 transforms.Normalize처럼 사용되는데 처음보는 경우에는 대체 왜 저런 구체적인 값이 코드에 녹아 있는지 의문이 들 수 있다.

ImageNet이 학습한 수백만장의 이미지의 RGB 각각의 채널에 대한 평균은 0.485, 0.456, 0.406 그리고 표준편차는 0.229, 0.224, 0.225 입니다. 만약, 일반적인 조도, 각도, 배경을 포함하는 평범한 이미지의 경우는 (0.485, 0.456, 0.406), (0.229, 0.224, 0.225)으로 정규화하는 것을 추천한다는 커뮤니티 의견이 지배적입니다.

위 글은 참고한 블로그에서 가져온 내용이다. 결국 ImageNet이라는 곳에서 일반적인 사진의 경우 RGB 평균이 (0.485, 0.456, 0.406), 표준편차가 (0.229, 0.224, 0.225)을 따른다는 것을 의미하며 이렇게 사용해도 무방하다는 이야기입니다.

이제 사진이 아닌 일러스트나 특정 조도, 화각에 고정된 사진인 경우에는 RGB 평균, 표준편차에 차이가 있을 수 있으므로 정밀한 학습 퀄리티를 요구할 경우 해당 사진에 대해서 직접 측정할 필요가 있을 수 있습니다.

직접 측정하는 방법은 아래 참고 블로그에서 소개하고 있으니 찾아보시기 바랍니다.

Referenced: https://teddylee777.github.io/pytorch/torchvision-transform

profile
continuous programming

0개의 댓글