【问题标题】:Can pass cv2 blobFromImage to keras model predict?可以将 cv2 blobFromImage 传递给 keras 模型预测吗?
【发布时间】:2021-06-15 16:36:18
【问题描述】:

我正在 TensorFlow 和 openCV 上制作应用程序。

我知道您可以将 keras 模型(.h5 或 .hdf5)传递给 .pb,从而使用 cv2 读取它。但我想知道 cv.blobFromImage 是否可以用于 Keras model.predict(...) 方法。

如果我尝试直接传递它,则会出现错误。由于 blob 的返回顺序与 keras 模型中所需的顺序不同。

例如:

frameSrc = cv2.imread('example.jpg')

# Correct Keras model input.
frameDst = cv2.resize(frameSrc.copy(), (256, 256), interpolation=cv2.INTER_LINEAR)
frameDst = cv2.cvtColor(frameDst, cv2.COLOR_BGR2RGB)
frameDst = np.array([frameDst])
frameDst = frameDst / 255.
# frameDst.shape = (1, 256, 256, 3)
        
# cv2 blob.
blob = cv2.dnn.blobFromImage(frameSrc.copy(), scalefactor=1/255., size=(256, 256), swapRB=False)
# blob.shape = (1, 3, 256, 256)

【问题讨论】:

    标签: python numpy tensorflow opencv keras


    【解决方案1】:

    Keras 需要 (batch_size, height, width, number_of_channels) 中的格式,给定 TF 后端。

    所以 blob.shape 需要采用这种格式,而不是您在上面看到的 (batch_size,channels,height,width)

    您可以交换轴以实现合适的输入格式:

    blob = np.transpose(blob,(0,2,3,1))
    blob.shape (1,256,256,3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 2021-05-09
      • 2020-02-18
      • 2014-06-08
      • 2021-06-11
      • 2019-02-14
      相关资源
      最近更新 更多