使用caffe训练的深度学习做目标检测(车辆检测)
来源:互联网 发布:下载手机淘宝最新版 编辑:程序博客网 时间:2024/06/05 08:54
#include "opencv2/core/core.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/dnn/dnn.hpp"#include "opencv2/ml/ml.hpp"#include "opencv2/objdetect/objdetect.hpp"#include <string>#include <iostream>#include <stdio.h>#include <time.h>#include <vector>int main(int argc,char* argv[]){//init time paramclock_t t_start,t_end;//init dnncv::Ptr<cv::dnn::Importer> importer;std::string modelTxt = "./deploy.prototxt";std::string modelBin = "./googlenet_finetune_web_car_iter_10000.caffemodel";importer = cv::dnn::createCaffeImporter(modelTxt,modelBin); if(!importer){std::cerr << "Can't load network by using the following files: " << std::endl;std::cerr << "prototxt: " << modelTxt << std::endl;std::cerr << "caffemodel: " << modelBin << std::endl;exit(-1);}cv::dnn::Net net;importer->populateNet(net);importer.release();//init cascadesstd::string cascadeModel = "./cars.xml";cv::CascadeClassifier cascade;if( !cascade.load(cascadeModel) ){std::cerr << "Can't load cascade model:" << std::endl;std::cerr << "cascade: " << cascadeModel << std::endl;exit(-1);}cv::Mat frame;char image_path[32];//int i = atoi(argv[1]);for(int i=1;i<=1700;i++){t_start = clock();sprintf(image_path,"/home/xyl/caffe/lesson4/cars_input/cars_input/in%06d.jpg",i);std::cout<<image_path<<std::endl;frame = cv::imread(image_path);std::vector<cv::Rect> cars;cascade.detectMultiScale(frame,cars,1.1,2,0);for(int j=0;j<cars.size();j++){cv::Mat car_candidate = frame(cars[j]);cv::resize(car_candidate,car_candidate,cv::Size(224,224));cv::dnn::Blob inputBlob = cv::dnn::Blob(car_candidate);net.setBlob(".data",inputBlob);net.forward();cv::dnn::Blob prob = net.getBlob("prob");cv::Mat probMat = prob.matRefConst().reshape(1,1);double classProb;cv::minMaxLoc(probMat,NULL,&classProb);char temp[10];sprintf(temp, "%lf", classProb);std::string s(temp);cv::putText(frame,s,cv::Point(cars[j].x,cars[j].y-10),cv::FONT_HERSHEY_SCRIPT_SIMPLEX,0.5,cv::Scalar::all(255),1,8);cv::rectangle(frame,cars[j],cv::Scalar(255,0,0));}t_end = clock();//show processing timestd::cout<<"time:"<<double(t_end-t_start)/CLOCKS_PER_SEC<<std::endl;//show resultcv::imshow("frame",frame);cv::waitKey(1);} //--end for loop}
运行之后,结果是这样的:
2 0
- 使用caffe训练的深度学习做目标检测(车辆检测)
- 深度学习的目标检测
- 目标检测-深度学习
- 目标检测 深度学习
- 深度学习-目标检测
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测方法
- 基于深度学习的目标检测新作
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测
- 基于深度学习的目标检测研究进展
- 基于深度学习的目标检测研究进展
- Mybatis中in查询的一个小问题
- Machine Learning第四讲[神经网络: 表示] --(三)应用
- WERTYU
- 信号相参性(相干性)
- [LeetCode.200]Number of Islands
- 使用caffe训练的深度学习做目标检测(车辆检测)
- 终端会话管理工具tmux
- editText 设置最大字符数
- jzoj P2132【2017.4.21普及】架设电话线
- java 的public,protected,private,default的区别
- Structs2 Action访问Servlet API的三种方式
- stm32 纯汇编文件编写 与c混合
- JPush极光推送API工具类(JAVA)
- 群控源码