可视化CNN卷积神经网络-- 之二

由于 OpenCV 对caffe了支持,使用Opencv的dnn模块来做就简单多了,下面给出步骤及代码。1、材料,使用mnist训练得到的模型文件,测试使用的网络文件及一张测试图像:
 
2、代码:featureMap.cpp
  1. #include <opencv2/dnn.hpp>
  2. #include <opencv2/imgproc.hpp>  
  3. #include <opencv2/highgui.hpp>  
  4. using namespace cv;  
  5. using namespace cv::dnn;  
  6. #include <fstream>  
  7. #include <iostream>  
  8. #include <cstdlib>  
  9. using namespace std;  

  10. int main(int argc, char **argv)
  11. {
  12.     String modelTxt="mnist_deploy.prototxt";
  13.     String modelBin="lenet_iter_10000.caffemodel";
  14.     Ptr<dnn::Importer> importer;
  15.     try
  16.     {
  17.         importer=dnn::createCaffeImporter(modelTxt,modelBin);
  18.     }
  19.     catch(const cv::Exception &err)
  20.     {
  21.         std::cerr<<err.msg<<std::endl;
  22.     }
  23.     if(!importer)
  24.     {
  25.         std::cerr<<"cant load network!"<<std::endl;
  26.         return 0;
  27.     }
  28.     dnn::Net net;
  29.     importer->populateNet(net);
  30.     importer.release();
  31.     Mat img = imread("4.bmp",0);
  32.     if(img.empty())
  33.     {
  34.         std::cerr<<"cant load image!"<<std::endl;
  35.         return 0;
  36.     }
  37.         //mnist要求图像大小为28*28
  38.     resize(img,img,Size(28,28));
  39.         //将Mat格式转换为Blob格式
  40.     dnn::Blob inputBlob = dnn::Blob(img);
  41.         //设置输入层数据
  42.     net.setBlob(".data",inputBlob);
  43.         //正传传播
  44.     net.forward();
  45.         //提取conv1的输出Blob
  46.     dnn::Blob prob=net.getBlob("conv1");
  47.         //conv1共20个特征图层,这可以从deploy文件中查看到
  48.     for(int i=0;i<20;i++)
  49.     {
  50.         Mat featuImg=prob.getPlane(0,i);
  51.                 //得到的是float类型图像,转换为8位单通道用于显示
  52.                 featureImg.convertTo(featureImg,CV_8UC1);
  53.                 //为查看方便,转换到256*256大小
  54.                 resize(featureImg,featureImg,Size(256,256));
  55.         imshow("feature",featureImg); 
  56.         waitKey(0);
  57.     }        
  58. }
复制代码

3、编译及运行:
hy17003@ubuntu:~/project/lesson4$ g++ -o featureMap featureMap.cpp -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lstdc++ -lopencv_core -L/usr/local/lib
hy17003@ubuntu:~/project/lesson4$ ./featureMap 

 
结果共有20张图像,这里贴出几张:
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值