问题描述
我正在尝试使用 inceptionv1 进行迁移学习,但分类器无法很好地预测一张图像,有什么问题?
from skimage.transform import resize
m = tf.keras.Sequential([hub.KerasLayer("https://tfhub.dev/google/imagenet/inception_v1/classification/4")]) # load the tensorflow hub model
m.build([None,224,3])
rimg = resize(img,output_shape=(1,3),anti_aliasing=True) # resize and reshape the image to [1,3]
rimg = (rimg-np.min(rimg))/(np.max(rimg)-np.min(rimg)).astype(np.float32) # normalize the image to a [0,1] range
logits = m(rimg) # Feed the image into the model to obtain the logits
probs = np.exp(logits)/(np.sum(np.exp(logits))) # convert logits to probabilities
解决方法
您正在应用最小-最大归一化,而应改用每个像素值除以 255。具体来说,最小强度的像素值 (0) 应该映射到 0,而最大值 (255) 应该映射到 1。因此,像 [64,128]
这样的图像应该映射到 [0.25,0.5]
,而您的归一化而是将其映射到 [0,1]
。