如何使用预训练的 .caffemodel 在 python 上对单个图像执行预测

Posted

技术标签:

【中文标题】如何使用预训练的 .caffemodel 在 python 上对单个图像执行预测【英文标题】:How to use the pretrained .caffemodel to perform prediction on single image on python 【发布时间】:2020-11-29 18:20:40 【问题描述】:

如何使用经过训练的网络架构的预训练 .caffemodel(已从数据集页面安装)和 .prototxt 文件来预测单个图像(性别分类)?

【问题讨论】:

【参考方案1】:

Caffe 模型可以在 OpenCV 中运行。此外,您不必在您的环境中安装 Caffe。

模型加载

import cv2
model = cv2.dnn.readNetFromCaffe("x.prototxt", "y.caffemodel")

调整输入大小

您需要将输入图像的大小调整为参考模型的预期输入大小。这在 prototxt 文件中有所提及。例如,以下模型需要 (1, 3, 160, 160) 形状的输入。

input: "data"
input_dim: 1
input_dim: 3
input_dim: 160
input_dim: 160

您可以读取图像并调整其大小,如下所示。

img = cv2.imread("img.jpg")
img = cv2.resize(img , (160, 160)) #this is (160, 160, 3) shaped image
img_blob = cv2.dnn.blobFromImage(img ) #this is (1, 3, 160, 160) shaped image

预测

您现在可以将调整大小的图像传递给构建的模型。

model.setInput(img_blob)
output = model.forward()
print(output)

即使您的环境中未安装 Caffe,此功能也有效。 OpenCV 也封装了 torch 和 tensorflow 模型。

【讨论】:

以上是关于如何使用预训练的 .caffemodel 在 python 上对单个图像执行预测的主要内容,如果未能解决你的问题,请参考以下文章

使用 iOS 11 mlmodel 进行图像分类 - 使用 coremltools 和经过训练的 .caffemodel 转换问题

使用snapshot继续训练网络

Yolov8从pytorch到caffe 训练模型并转换到caffemodel

利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

BERT如何在windows anaconda中运行预训练模型

将 .caffemodel 转换为 .mlmodel 失败