本文通过修改classification.cpp实现用训练好的model文件实现多张图片的分类。

classification.cpp中main函数的源码为:::

int main(int argc, char** argv) {if (argc != 6) {std::cerr << "Usage: " << argv[0]<< " deploy.prototxt network.caffemodel"<< " mean.binaryproto labels.txt img.jpg" << std::endl;return 1;}::google::InitGoogleLogging(argv[0]);string model_file   = argv[1];string trained_file = argv[2];string mean_file    = argv[3];string label_file   = argv[4];Classifier classifier(model_file, trained_file, mean_file, label_file);string file = argv[5];std::cout << "---------- Prediction for "<< file << " ----------" << std::endl;cv::Mat img = cv::imread(file, -1);CHECK(!img.empty()) << "Unable to decode image " << file;std::vector<Prediction> predictions = classifier.Classify(img);/* Print the top N predictions. */for (size_t i = 0; i < predictions.size(); ++i) {Prediction p = predictions[i];std::cout << std::fixed << std::setprecision(4) << p.second << " - \""<< p.first << "\"" << std::endl;}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

根据博客http://blog.csdn.net/lanxuecc/article/details/52795344 我们知道,该文件编译生成的.bin只能分类单张,那么如果我们训练出来了一个caffemodel,我们如何实现分类大量图片来统计分类准确率呢,我把代码做了一些修改,实现了这个功能

int main(int argc, char** argv) {string imgfilename;if (argc != 6) {std::cerr << "Usage: " << argv[0]<< " deploy.prototxt network.caffemodel"<< " mean.binaryproto labels.txt img.jpg" << std::endl;return 1;}::google::InitGoogleLogging(argv[0]);string model_file   = argv[1];string trained_file = argv[2];string mean_file    = argv[3];string label_file   = argv[4];Classifier classifier(model_file, trained_file, mean_file, label_file);string file = argv[5];  //传入的字符串是保存所有图片路径的文件fstream fin( file.c_str());  string fnd = "sglimg";string rep = "sglimgbak";string imgsave;string strinsert;while(getline(fin, imgfilename))  //依次读入文件中每个图片路径{std::cout << "---------- Prediction for "<< imgfilename << " ----------" << std::endl;     imgsave = imgfilename;cv::Mat img = cv::imread(imgfilename, -1);   //读取图片CHECK(!img.empty()) << "Unable to decode image " << imgfilename;std::vector<Prediction> predictions = classifier.Classify(img);  //对图片进行分类imgsave = imgsave.erase(61,2);imgsave = imgsave.replace(imgsave.find(fnd), fnd.length(), rep);strinsert = predictions[0].first + "/";imgsave.insert(64, strinsert);std::cout << "---------- Save2  for "<<predictions[0].first<<"in"<< imgsave << " ----------" << std::endl;  imwrite(imgsave, img);  //按图片围住度最高的分类来保存图片}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

修改后重新编译caffe就可以分类图片了

make clean  //在caffe根目录下
make all    //在caffe根目录下
  • 1
  • 2

只是传入的图片路径参数,改为记录所有待分类图片的路径的文件。

例如::::我的所有待分类的图片在目录/home/schao/sc_tmp/caffe/caffe-master/examples/numlet/sglimg/0~9,A~Z中,那么传入程序的图片目录为(见下截图,只保存一部分) 

现在我把这0~9,A~Z文件夹内的图片分类分别保存到/home/schao/sc_tmp/caffe/caffe-master/examples/numlet/sglimgbak这个目录下0~9,A~Z目录中 

则代码改成如上形式并且编译后执行下述命令:::

./build/examples/cpp_classification/classification.bin \
./examples/numlet/lenet.prototxt \
./examples/numlet/caffenet_train_iter_20000.caffemodel \
./examples/numlet/mean.binaryproto \
./examples/numlet/synset_words.txt \
./examples/numlet/sglimg/imglist.txt \
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanxueCC/article/details/52948881

caffe测试多张图片--需改代码相关推荐

  1. ML之FE:在模型训练中,仅需两行代码实现切分训练集和测试集并分离特征与标签

    ML之FE:在模型训练中,仅需两行代码实现切分训练集和测试集并分离特征与标签 目录 仅需两行代码实现切分训练集和测试集并分离特征与标签 输出结果 实习代码 仅需两行代码实现切分训练集和测试集并分离特征 ...

  2. python编写代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

  3. laravel改代码没变化_菜鸡程序员是如何写代码的?

    每个程序员都要历经从菜鸡到大牛过程蜕变胡过程.当初大家起点都差不多,工作多年后,有些人依然停留在菜鸡,有些人却已成为大牛,所有的事情,都是一点一滴习惯养成.让我们看看菜鸡程序员是如何写代码的?有可能找 ...

  4. Python第三方库巧用,制作图片验证码只需三行代码

    现在验证码的种类真的是越来越多,短信验证码.语音验证码.图片验证码.滑块验证码 - 我们在 PC 的网页端或者手机上的 app 进行登录或者注册时,应该总会遇见图片验证码,比如下面这类: 上面这些图片 ...

  5. 3D打印断电、断料续打,打印一半中断续打改代码,也适用于单喷头多色打印(用cura切片)

    我使用的是cura软件切片,要进行续打首先要知道目前打印到Z轴的位置,这个自己量或者用喷头慢慢靠近测试也可以,主要记录下如何改代码. 用记事本打开gcode文件,找到目前Z层数,如图 从下图位置一直往 ...

  6. ESP8266 MP3制作——关于SelectionList从源码中改代码的一次经历

    SelectionList修改源码(这可能为扩展引脚提供一个新思路) 原因 上一篇文章已经提到了SelectionList的神奇功能,然后在setup中有这个一段代码: u8g2.begin(/* m ...

  7. pytorch转换onnx,再转换caffe 测试caffe, pytorch 模型结果是否一致

    def pytorch_out(input):model = model_res() #model.eval# input = input.cuda()# model.cuda()torch.no_g ...

  8. 测试cpu多核性能软件,CPU测试软件权重大改,多核性能仅占2% 玩家:你疯了吗

    原标题:CPU测试软件权重大改,多核性能仅占2% 玩家:你疯了吗 一家名为UserBenchmark的网站最近大火了一把,因为他们最近将自己的CPU评价标准进行了大刀阔斧的修改,简单来说就是削弱多核性 ...

  9. python编写高质量代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

  10. javaCV学习-1-环境搭建及测试多张图片合成一个mp4的视频

    最近在自学用java语言如何进行处理音视频. 学习时,在网上找了一段代码,测试多张图片合成一个mp4的视频. 代码是: import org.bytedeco.ffmpeg.global.avcode ...

最新文章

  1. mysql主键约束和唯一性约束
  2. 抓rtmp推流地址_如何实现摄像机竖屏直播推流?
  3. 【HDU - 1025】Constructing Roads In JGShining's Kingdom(dp最长上升子序列模型 + 二分优化)
  4. Ubuntu安装指定版本clang-format
  5. 小米手机又一产品线退场,大步迈向高端市场!
  6. 美团点评2020年测试工程师笔试题
  7. YOLOv3: An Incremental Improvement
  8. max6675一直读0_女儿读完我要收藏起来的英文杂志,它让0~15岁孩子阅读无缝对接!...
  9. 书单丨把握Java技术发展的新趋势!
  10. 【SENCHA TOUCH】改了tomcat的IP访问!java的session失效问题! [ Web 开发]
  11. fxp连接失败_用FlashFXP时总是连接失败(连接丢失)是什么原因
  12. PS 批处理切图去空白
  13. 虚拟机架设服务器u盘不显示盘符,【图文详解】怎么解决win7虚拟机无法识别U盘问题...
  14. 统计工具代码同步安装和异步安装有何区别
  15. 基于51单片机的带方位指示的自行车码表proteus仿真原理图PCB
  16. 算法---逆向旋转矩阵法求解矩阵绕圈走
  17. [200902] 条件概率与独立事件
  18. 创新之路 纪录片观后感
  19. deepin标题栏边框美化
  20. 推荐好书《值得阅读的书籍》列表

热门文章

  1. 在一线城市做Java开发如何月薪达到两万,需要技术水平达到什么程度?
  2. 聊聊springboot session timeout参数设置
  3. python3.6安装pyspider
  4. 一键安装lamp环境 centos
  5. shiro+springmvc+mybatis【转】
  6. lintcode:Add Binary 二进制求和
  7. xp也可以将U盘格为NTFS
  8. 我读Code Complete 2 —— 第一章
  9. JS--微信浏览器复制到剪贴板实现
  10. Laravel 学习笔记之文件上传