인프런 커뮤니티 질문&답변

하하하님의 프로필 이미지
하하하

작성한 질문수

딥러닝 CNN 완벽 가이드 - Fundamental 편

옵티마이저(Optimizer)의 이해 - Momentum, AdaGrad

입력 이미지 크기

작성

·

56

0

안녕하세요.

좋은 강의 잘 듣고 있습니다!

 

중간에 궁금한 점이 생겨서 질문 남깁니다.

 

현재, 사전 학습된 모델의 가중치를 불러와서 파인 튜닝을 진행하고 있습니다. 이 과정에서 입력 이미지 크기에 따라 실험을 진행중인데, VGG16의 입력 이미지 크기는 기본값이 224x224로 알고 있습니다.

 

만약, 제가 가진 데이터가 128x128의 형태를 띄고 있는 이미지라면, input_size를 128x128로 구성해줘도 기존의 사전 학습된 가중치를 불러와 쓸 수 있지 않나요?

 

기존의 DNN과 달리 CNN 모델들은 필터에 가중치를 적용하여 계산하므로 입력 이미지 크기에 상관없이 사전 학습된 가중치를 불러와 사용할 수 있다고 생각합니다.

 

제가 생각한게 맞는지 궁금해 질문 남깁니다. 감사합니다.

 

또한, 만약 제 생각이 틀리다면 위와 같이 128x128 이미지를 입력 사이즈로 주었을 때, 모델은 이를 어떻게 224x224로 만들어 학습하는지 궁금합니다. 감사합니다.

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

네, 말씀하신 게 맞습니다. pretrained weight는 CNN Filter에 학습되어 저장되어 있으므로 이미지 사이즈가 달라도 상관없습니다.

다만 해당 pretrained weight 값이 특정 이미지 사이즈에 최적화되어서 만들어졌기 때문에 가능하면 pretrained 된 이미지 사이즈로 확장/축소 해서 많이 적용합니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 하하하님.

VGG16 같은 사전 학습된 모델의 경우, 입력 이미지 크기는 기본적으로 224x224로 설정되어 있습니다. 그렇기 때문에 입력 이미지 크기가 다를 경우, 모델 구조에서 일부 조정이 필요합니다.

하지만, 당연히 CNN의 특징상 필터 기반으로 특징을 추출하기 때문에 입력 이미지의 크기가 다소 변화하더라도 기존 사전 학습된 가중치를 불러와서 사용 가능합니다. 다만 이 경우 input_shape 부분을 조정해야 하며, 모델의 시작 부분만 조정하여 원하는 크기의 이미지를 입력할 수 있도록 설정할 수 있습니다.

예를 들어, 하위 계층(초기 계층)에서 이미지 크기를 변환하는 조정이 필요할 수 있습니다. 특히, Dense 계층 앞에서는 이미지의 전체 벡터 크기가 일치해야 하기에 Flatten() 계층 전에 추가적인 처리가 필요할 수 있습니다.

만약 128x128 이미지를 모델에 그대로 입력하고 싶다면:

  1. input_shape를 (128, 128, 3)으로 변경하십시오.
  2. 필요한 경우, Fully Connected 계층을 재조정하여 출력차원이 맞도록 코드를 조정합니다.

아래 관련된 질문과 답변을 함께 참고해 보시는 것도 좋습니다:
- keras vgg16 pretrained 모델 사용할 때 입력 shape에 대해서 질문이 있습니다

이 질문에서는 이미지 크기 조절이나 임의 입력 크기 조절시 사전 학습된 모델의 가중치 활용에 대해 구체적으로 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

하하하님의 프로필 이미지
하하하

작성한 질문수

질문하기