AI/PyTorch

PyTorch에서 이미지 데이터에 대해 normalize를 할 때, mean=[0.485, 0.456, 0.406]과 std=[0.229, 0.224, 0.225]를 쓰는 이유는?

검정비니 2023. 10. 9. 17:49
728x90
반응형

PyTorch vision 모델 페이지에 가보면, "All pre-trained models expect input images normalized in the same way, i.e. mini-batches of 3-channel RGB images of shape (3 x H x W), where H and W are expected to be at least 224" 라는 내용을 볼 수 있다. 그 다음에 아래와 같은 코드를 볼 수 있을 것이다.

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])

보다시피, mean과 std 값으로 뭔가 이상한 값들이 세팅되어 있다. 많은 사용자들이 이 값들을 쓰는 이유가 무엇인지 제대로 모르고 그냥 쓰고 있는데, 사실 이 값들은 많은 Vision 모델들의 pretraining에 사용된 ImageNet 데이터셋의 학습 시에 얻어낸 값들이다. ImageNet 데이터셋은 질 좋은 이미지들을 다량 포함하고 있기에 이런 데이터셋에서 얻어낸 값이라면 어떤 이미지 데이터 셋에서도 잘 작동할 것이라는 가정하에 이 값들을 기본 값으로 세팅해 놓은 것이다.

 

 

반응형