Я использую OpenCV 4.3.0. У меня работает реализация Tensorflow python, и я пытаюсь перенести ее на DNC OpenCV в python.
Моя реализация Tensorflow Python:
image = cv2.imread("1.jpg")
image_resized = cv2.resize(image, (64, 64), interpolation = cv2.INTER_AREA)
image_normalized = np.add(image, -127) #normalization of the input
feed_dict = {self.tf_pitch_input_vector : image_normalized}
out = self._sess.run([self.cnn_pitch_output], feed_dict=feed_dict)
В начале моей сети есть слой изменения формы,
X = tf.reshape(data, shape=[-1, 64, 64, 3])
Изображение подается через feed_dict и изменяется, как показано выше на первом уровне, и сеть продолжает работу.
Это (Tensorflow python) работает хорошо.
Моя реализация DNC OpenCV:
image = cv2.imread("1.jpg")
net = cv2.dnn.readNetFromTensorflow("model.pb")
resized = cv2.resize(image, (64, 64), interpolation=cv2.INTER_AREA)
input_blob = cv2.dnn.blobFromImage(resized, 1, (64,64), -127, swapRB=False, crop=False)
print("blob: shape {}".format(input_blob.shape))
input_blob = input_blob.reshape(-1, 64, 64, 3)
print("blob: new shape {}".format(input_blob.shape))
net.setInput(input_blob)
out = net.forward()
Вывод фигур, напечатанных выше код выглядит следующим образом:
blob: shape (1, 3, 64, 64)
blob: new shape (1, 64, 64, 3)
Проблема: Проблема в том, что сетевой вывод не совпадает между Tensorflow Python и OpenCV DNN. После отладки я вижу, что данные, подаваемые в DNC OpenCV, отличаются от реализации Tensorflow python. Я уверен, что что-то не так в blobFromImage () или после этого.
Может кто-нибудь сообщить мне, чего не хватает в моем коде DNen OPenCV?
Заранее спасибо!