воспроизвести тот же результат с помощью функции изменения размера scikit-изображения и функции изменения размера OpenCV - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь воспроизвести тот же результат с помощью этих фрагментов:

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()

Проблема в том, что Я не могу передать одни и те же данные в сеть (модуль DNN в случае OpenCV). Сеть такая же, входные данные такие же, но результаты немного отличаются, и причина в том, что функция изменения размера ведет себя по-разному между scikit-learn и OpenCV (используется внутри blobFromImage) и не знает, как адаптировать код OpenCV для матч scikit-learn. В моем последнем приложении будет использоваться OpenCV на C ++, поэтому мне нужно сопоставить эти фрагменты, поскольку моя сеть была обучена с данными, сгенерированными scikit-learn.

...