【发布时间】:2020-10-07 01:50:42
【问题描述】:
我正在尝试使用这些 sn-ps 重现相同的输出:
Scikit-Image + Keras
from keras.models import model_from_json
import numpy as np
from skimage.io import imread
from skimage.transform import resize
image = resize(imread(img_path, as_grey=False), (80, 80), preserve_range=True, mode='constant')
image /= 255.
img_array = np.array([image])
pred_IN = model.predict(img_array)
OpenCV
import cv2
model = cv2.dnn.readNet('mynet.prototxt', 'mynet.caffemodel')
image = cv2.imread(image_path)
img = cv2.dnn.blobFromImage(image, scalefactor=(1.0/255.0), size=(80, 80), swapRB=True, crop=False)
model.setInput(img)
pred = model.forward()
问题是我无法将相同的数据传递给网络(OpenCV 的 DNN 模块)。网络相同,输入数据相同,但结果略有不同,原因是 resize 函数在 scikit-learn 和 OpenCV 之间的行为不同(由 blobFromImage 内部使用)并且不知道如何使 OpenCV 代码适应匹配 scikit-learn。 我的最终应用程序将在 C++ 中使用 OpenCV,因此我需要匹配这个 sn-ps,因为我的网络已经使用 scikit-learn 生成的数据进行了训练。
【问题讨论】:
-
您是否在第一种方法中使用 scikit-image 调整大小功能?
-
是的,第一种方法是使用 scikit-learn 调整大小功能
-
请明确包含相关导入;真的是来自
scikit-learn还是(我猜)来自scikit-image?如果需要,相应地调整标签。 -
抱歉,这是 scikit-image,已编辑
-
您是否尝试过使用 blobFromImage() 来读取数据而不调整大小,然后使用 cv2.resize() 来调整大小
标签: python opencv keras image-resizing scikit-image