Windows玩转Caffe系列之模型应用(一): 新建MFC工程,窗口界面中应用现有模型

你有没有想过做一个MFC的exe程序,把训练好的AI模型更友好地进行测试或演示?想到就做到,先上效果图两张:


环境前提:《Windows玩转Caffe(一):Win10+VS2013+Caffe配置详解【附:多图】http://blog.csdn.net/u012958854/article/details/78123610

1.新建一个基于对话框的MFC工程,把classification.cpp添加到工程

classification.cpp的原路径为caffe-master\examples\cpp_classification,复制一份,最好重命名以示区别;

区别何在?首先必须把classification.cpp中main函数重命名了(详见后文),因为工程只能有一个函数入口;建议新建一个对应的头文件,把该函数声明导出,如图:


2.添加引用,配置工程属性

添加引用libcaffe,如图:


添加包含目录和库目录,如图:


添加预处理定义,如图:


添加依赖库,如图:


说明:具体添加哪些库,原则是根据编译错误逐项添加;NugetPackages下的基本都要添加,若要使用GPU,cuda和cudnn也要添加。

3.局部修改代码,解决编译过程中冲突问题

Min,max宏冲突,解决办法:

    在sdtafx.h中#include<afxwin.h>前加上一行#include<caffe/proto/caffe.pb.h>

STRICT关键字冲突,解决办法:

    把STRICT重命名,比如_STRICT

阿门,一边等待着一边祈祷着编译成功吧

4.界面布局,实现功能

布局简单:左侧图片控件(添加双击事件),中间功能按钮,右侧结果显示

功能粗暴:本人重命名后的main函数intmainAI(float *argc,char**argv)

    单张图片分类的五个参数:eploy.prototxtnetwork.caffemodel mean.binaryproto labels.txt img.jpg,通过argv输入,结果也可以用其输出;把argc把改成了float指针,用于输出准确度。

 再来一张效果图娱乐一下,劳逸结合嘛~嘿咻:


解答一个疑问:第二张效果图不是李晨吧,那是谁?——水哥

本周五水哥又要重现江湖了,为你打CALL,加油!!


附件下载:

1。MFC工程源码:http://download.csdn.net/download/u012958854/10185245

2。模型models文件:http://download.csdn.net/download/u012958854/10185307