如何调用 caffe 训练好的模型对输入图片进行测试

如何调用 caffe 训练好的模型对输入图片进行测试

该部分包括两篇文章

对 caffe 来说常用的有两种接口,一种是通过 C++ 接口, 另一种是通过 python 接口。这里以 caffe 中自带的 mnist 手写数据集为例。

训练好模型之后,应该如何调用训练好的模型了。其实训练的过程就是对网络进行前向传播,计算最后的输出结果,也即模型的预测结果,所以输入的网络模型应该是去除了反向传播过程的,比如求loss。通过下面的对比可以非常清晰的看到区别。第一张为训练模型时的网络,第二张图为预测时的网络。

[外链图片转存失败(img-sVWE3ymO-1566132389138)(2019-08-18-20-44-38.png)]
在这里插入图片描述

被测试的图片可以自己准备测试的图片,也可以从 mnist 数据集中提取。如果是从数据集中提取可以参考 mnist数据集转换为图片+测试手写字的demo。这里直接用画板手写一个数字的图片来进行测试。需要注意的是这张图片应该是 28 * 28 pix, 然后为256的二值图像。下图是我用的测试图像(放大了12倍的效果)。

[外链图片转存失败(img-8jx4cQsW-1566132389139)(2019-08-18-20-45-16.png)]

1. C++ 接口

在 examples/cpp_classification 文件夹下有 classification.cpp 文件,其中定义了 Classifier 类, 用来进行测试,需要注意的是这个 class 是基于 opencv 的,所以对于不想折腾 opencv 的朋友, 可以选择 python 接口。
但是对于 C++ 接口,比较麻烦的是 vs 的环境配置,需要弄好所以的依赖性,是一件很麻烦的事情。具体可以参考 CAFFE安装笔记[windows和ubuntu]。coding 部分比较简单,直接把 classification.cpp 的main() 函数部分修改一下就可以了,这里不再赘述。

2. python 接口

相比 C++ 接口,python接口使用起来更为方便,当然实际应用中很多都是部署到 C++ 应用中。为了方便,这里利用 jupyter 来进行测试。当然首先要保证你已经配置好了 caffe 的 python 接口。 代码如下。

# set up Python environment: numpy for numerical routines, and matplotlib for plotting
import numpy as np
import matplotlib.pyplot as plt
# display plots in this notebook
%matplotlib inline

# set display defaults
plt.rcParams['figure.figsize'] = (10, 10)        # large images
plt.rcParams['image.interpolation'] = 'nearest'  # don't interpolate: show square pixels
plt.rcParams['image.cmap'] = 'gray'  # use grayscale output rather than a (potentially misleading) color heatmap

# The caffe module needs to be on the Python path;
#  we'll add it here explicitly.
import sys
caffe_root = 'C:/Projects/caffe/'  # this file should be run from {caffe_root}/examples (otherwise change this line)
sys.path.insert(0, caffe_root + 'python')

import caffe
# If you get "No module named _caffe", either you have not built pycaffe or you have the wrong path.

import os
if os.path.isfile(caffe_root + 'examples/mnist/lenet_iter_10000.caffemodel'):
    print('CaffeNet found.')
else:
    print('Downloading pre-trained CaffeNet model...')

caffe.set_mode_cpu()

model_def = caffe_root + 'examples/mnist/lenet.prototxt'
model_weights = caffe_root + 'examples/mnist/lenet_iter_10000.caffemodel'

IMAGE_FILE ='F:\\VS_Project\\opencv_test\\opencv_test\\gray_9.jpg'
input_image=caffe.io.load_image(IMAGE_FILE,color=False)

net =caffe.Classifier(model_def,model_weights)
prediction=net.predict([input_image],oversample=False)
caffe.set_mode_cpu()
print('predicted class:', prediction[0].argmax())

除此之外也可以参考官方的资料 Classification: Instant Recognition with Caffe。在官方的资料中的是用的另外一种方法,较上面的功能更为强大,可以观察更多的输出,比如中间层的输出,感兴趣的朋友也可以仔细研究下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在下载已经训练好的caffe模型之前,首先需要确定模型的来源和可靠性。可以通过官方网站、论坛或专门的模型库来获取可信赖的模型。接下来,按照以下步骤来下载模型: 1. 打开模型下载链接或网站,查找适合你任务的模型。可以根据模型的名称、用途、数据集等信息筛选。 2. 确认模型的格式。caffe模型通常以`.caffemodel`的文件格式保存。还有可能需要下载对应的网络结构描述文件(`.prototxt`)。 3. 点击下载按钮或链接,保存模型文件到本地。 4. 下载完成后,检查模型文件的完整性。可以使用文件哈希值进行校验,确保文件未被损坏或篡改。 5. 解压模型文件(如果需要)。一般来说,`.caffemodel`文件不需要解压,但有时候可能还会附带其他辅助文件或文件夹,需要进行解压操作。 6. 准备使用已下载的caffe模型。在使用前,需要确保已正确配置caffe环境,包括安装相关的依赖库和配置路径等。可以参考caffe官方文档或相关教程来进行配置。 7. 将模型加载到caffe中。可以使用caffe提供的API来载入模型,之后就可以使用模型进行推理或其他任务。 需要注意的是,模型的下载过程可能因模型大小、网络速度等因素而耗时较长。此外,在使用已训练好的caffe模型时,还需要根据具体任务进行适当的微调或调整,以获得理想的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值