본문 바로가기
파이썬

파이썬 keras의 preprocess_input () 메서드

by º기록 2020. 10. 14.
반응형

아래 keras 문서 페이지에서 샘플 keras 코드를 시도하고 있습니다.


아래 코드에서 keras 모듈의 preprocess_input (x) 기능은 무엇입니까? preprocess_input () 메서드에 전달되기 전에 expand_dims (x, axis = 0) 를 수행해야하는 이유는 무엇입니까?

from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input
import numpy as np

model = ResNet50(weights='imagenet')

img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

이러한 기능에 대한 좋은 설명이있는 문서가 있습니까?

감사!

 

해결 방법

 

Keras는 이미지 배치와 함께 작동합니다. 따라서 첫 번째 차원은 보유한 샘플 (또는 이미지) 수에 사용됩니다.

단일 이미지를로드하면 하나의 이미지 모양 인 (size1, size2, channels) 를 얻게됩니다.

이미지 배치를 생성하려면 추가 차원이 필요합니다. (samples, size1, size2, channels)

preprocess_input 함수는 모델에 필요한 형식에 이미지를 적절하게 맞추기위한 것입니다.

일부 모델은 0에서 1까지의 값을 가진 이미지를 사용합니다. 다른 모델은 -1에서 +1까지입니다. 다른 사람들은 정규화되지 않았지만 중앙에있는 "caffe"스타일을 사용합니다.


preprocess_input 의 내부 세부 사항에 대해 걱정할 필요가 없습니다. 하지만 이상적으로는이를 위해 keras 함수를 사용하여 이미지를로드해야합니다 (로드하는 이미지가 preprocess_input 과 호환되도록 보장).

 

참조 페이지 https://stackoverflow.com/questions/47555829

 

 

반응형

댓글