利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【Github更新!!!】(三)
2017-06-13 19:29
1881 查看
前言
对前面的东西更新了一下。地方包括:1、GUI的更新,更友好的用户界面
2、支持用手直接画车辆区域,并且识别出来
3、将proposal、detect、fine-grained classification三个步骤分离
4、在传入Classification Net的时候,不再循环传入分类,而是将检测出的proposal一起截取形成一个image4d,共同传入alexnet。此举是为了加速。
Github
https://github.com/ChenJoya/Vehicle_Detection_Recognition效果
直接看看吧!1、四个步骤:
载入图像:
区域推荐:(只显示了一部分)
区域精细化:
分类:
2、可以直接截取车辆区域:
3、视频中的检测与识别:
4、支持自己载入模型:
程序设计
采用CarProphet类进行接口设计,供GUI中不同的回调函数调用。声明
global Predictor; Predictor=CarProphet('Model/cifar10NetRCNN.mat','Model/AlexNet_New.mat','Model/cars_meta.mat');
采用全局变量的形式,让GUI能够调用其中的成员变量和函数。
三个关键函数:
function [Proposal,Scores]=selective_search(Predictor) [Proposal,Scores]=Predictor.RCNNModel.cifar10NetRCNN.RegionProposalFcn(Predictor.Mat); end function RealRegion=rcnn_forward(Predictor) [bboxes, scores, ~]= Predictor.RCNNModel.cifar10NetRCNN.detect(Predictor.Mat); CarScores=scores(:,1); HighProbROI_Index=find(CarScores>Predictor.Threshold); RealRegion=bboxes(HighProbROI_Index,:); end function [rois,classes]=classify(Predictor) size_=size(Predictor.RealRegion); length_=size_(1); img_batch4d=zeros(227,227,3,length_); for i=1:length_ crop_roi=Predictor.RealRegion(i,:); img_single=imcrop(Predictor.Mat,crop_roi); img_single=imresize(img_single,[227 227]); img_batch4d(:,:,:,i)=img_single; % Constructing 4d-array images end if(~isempty(img_batch4d)) label_nums=Predictor.ClassifyModel.AlexNet_New.classify(img_batch4d); %draw labels in picture classes=Predictor.class_array.class_names(label_nums); rois=Predictor.RealRegion; end end
用于显示的:
core_func文件夹下:function DrawMat=draw(DrawMat,HighScoreProposals) %draw box size_=size(HighScoreProposals); length_=size_(1); for i=1:length_ SingleBox_=HighScoreProposals(i,:); DrawMat=insertObjectAnnotation(DrawMat, 'rectangle', SingleBox_, '','LineWidth',1); end end function DrawMat=draw_roi_class(DrawMat,rois,classes) %draw box size_=size(rois); length_=size_(1); for i=1:length_ SingleBox_=rois(i,:); DrawMat=insertObjectAnnotation(DrawMat, 'rectangle', SingleBox_, classes{i},'LineWidth',1); end end function HighScoreProposals=get_highscore_proposals(Proposals,Scores) %score 归一化 score_0_1_=mapminmax(Scores',0,1); %选择阈值 score_more_index=find(score_0_1_>0.5); %得到得分高的proposals HighScoreProposals=Proposals(score_more_index,:); end
直接在https://github.com/ChenJoya/Vehicle_Detection_Recognitionx下载吧!
注意:模型没有重新训练。有时间我再训练新的:)—————————————–2018年1月22日更—————————————————-
【个人联系方式与一些鼓励/道歉】来来来我们约谈技术~
http://blog.csdn.net/mr_curry/article/details/79132558
相关文章推荐
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【福利-内附源码与数据库】(一)
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【福利-内附源码与数据库】(一)
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【福利-内附源码与数据库】(二)
- matlab 关于利用深度学习进行图像识别
- Matlab图像识别/检索系列(11)—开源介绍之深度学习工具MatConvNet toolbox
- 人工智能,深度学习,用DQN算法,或者更新的增强算法,进行图片识别小游戏?
- 深度学习与人脸识别系列(6)__利用训练好的vgg模型进行人脸识别(利用摄像头)
- 深度学习与人脸识别系列(5)__利用训练好的vgg模型进行人脸识别(利用摄像头)
- fmri的图像数据在matlab中显示,利用imagesc工具进行显示,自带数据集-by 西南大学xulei教授
- Linux下利用Valgrind工具进行内存泄露检测和性能分析
- linux下利用valgrind工具进行内存泄露检测和性能分析
- matlab自带的分类器对人脸、鼻子、嘴进行检测
- 利用opencv中的级联分类器进行人脸检测-opencv学习(1)
- 利用开源工具Tesseract进行文字识别
- linux下利用valgrind工具进行内存泄露检测和性能分析
- 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结2——级联分类器与检测过程
- linux下利用valgrind工具进行内存泄露检测和性能分析
- Linux下利用Valgrind工具进行内存泄露检测和性能分析
- 大数据深度学习下车辆厂牌型号识别