如何使用预训练的 .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 转换问题
Yolov8从pytorch到caffe 训练模型并转换到caffemodel
利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试