用Matlab自带的FastRcnnNetwork工具箱实现深度学习目标检测

一.搭建训练数据集和验证数据集

用的是Matlab2018a以上版本里的应用程序带的ImageLabeler来进行数据标记:

将标记好的数据以.groundTruth格式导入到工作区间,并且要存储到文件夹里。这里是以.mat的格式存储到了matlab的路径下。一定要注意要将.groundTruth变量中的LabelData数据全部转化为double格式(如果以struct格式存在,后面数据集提取时会报错。)

二.数据整合与模型训练

详见Matlab参考文档

或者直接在命令行输入指令:

help trainFasterRCNNObjectDetector

查看参考文档对数据集进行划分和参数设置操作。

load('gTruth.mat');
holesTrainingDataset = objectDetectorTrainingData(gTruth);
trainingData  = holesTrainingDataset;
rng(0);
shuffledIdx = randperm(height(trainingData));
trainingData = trainingData(shuffledIdx,:);
imds = imageDatastore(trainingData.imageFilename);
blds = boxLabelDatastore(trainingData(:,2:end));
ds = combine(imds, blds);options = trainingOptions('sgdm', ...'MiniBatchSize', 1, ...'InitialLearnRate', 1e-3, ...'MaxEpochs', 10, ...'VerboseFrequency', 200, ...'CheckpointPath', tempdir);inputImageSize = [70 86 3];numClasses = 1;anchorBoxes = [8,8; 12,12; 24 24];network = 'resnet50';featureLayer = 'activation_40_relu';lgraph = fasterRCNNLayers(inputImageSize, numClasses, anchorBoxes,network,featureLayer); detector = trainFasterRCNNObjectDetector(ds,lgraph,options);
%% 以下是将数据进行保存在RCNNStructure2.mat中的操作save('RCNNStructure2','detector');

当模型训练完成后会在命令行有如下提示:

*************************************************************************
Training a Faster R-CNN Object Detector for the following object classes:* holes警告: 数据存储输入不可乱序,但 trainingOptions 指定了乱序。训练将继续,而不进行乱序处理。
> In nnet.internal.cnn.DataDispatcherFactory>iCheckDatastoreSupportTrainingOptions (line 346)In nnet.internal.cnn/DataDispatcherFactory/createDataDispatcherMIMO (line 127)In vision.internal.cnn.trainNetwork>iCreateTrainingDataDispatcher (line 180)In vision.internal.cnn.trainNetwork (line 34)In trainFasterRCNNObjectDetector>iTrainEndToEnd (line 868)In trainFasterRCNNObjectDetector (line 419)In Untitled2 (line 28)
在单 CPU 上训练。
正在初始化输入数据归一化。
|=============================================================================================================|
|  轮  |  迭代  |    经过的时间     |  小批量损失  |  小批量准确度  |  小批量 RMSE  |  RPN Mini-batch  |  RPN Mini-batch  |  基础学习率  |
|     |      |  (hh:mm:ss)  |         |          |            |     Accuracy     |       RMSE       |         |
|=============================================================================================================|
|   1 |    1 |     00:00:42 |  1.5564 |   68.99% |       0.17 |           83.67% |             0.85 |  0.0010 |
|   7 |  200 |     02:19:00 |  0.2222 |   97.67% |       0.14 |          100.00% |             0.52 |  0.0010 |
|  10 |  300 |     03:27:41 |  0.4296 |   97.12% |       0.06 |          100.00% |             0.97 |  0.0010 |
|=============================================================================================================|
Detector training complete.
*******************************************************************

三.模型的测试

以下是测试代码:

function vecI = fastRCNNTest
load('RCNNStructure2.mat');
[filename pathname filterindex] = uigetfile(...{'*.png','图像文件(*.png)';...'*.jpg','图像文件(*.jpg)';...'*.*','所有文件(*.*)'},...'选择图像文件','MultiSelect','off',...pwd);
filePath = 0;
if isequal(filename,0)||isequal(pathname,0) %只要这里面表示返回或没有合适的文件时候return;
end
Path = fullfile(pathname,filename);
I = imread(Path);
[bboxes,scores] = detect(detector,I);
allShow = inputdlg('请问是否显示检测图片','显示图片',1,{'yes'});
if strcmp(allShow{1},'yes')X = insertObjectAnnotation(I,'rectangle',bboxes,scores);figure(100);imshow(X);
end
everyShow = inputdlg('请问是否显示每张图片','显示图片',1,{'yes'});
if strcmp(everyShow{1},'yes')numbers = size(bboxes,1);testPic = cell(numbers,3);
for i = 1:numbersfigure(i)M = bboxes(i,:);vecI{i} = I(M(2):(M(2)+ M(4)),M(1):(M(1)+M(3)),:);imshow(vecI{i});
end
end
end

随机拿一张测试图片进行测试操作:

可见右侧的孔还是没有监测出来,还有就是训练的时间太长了。

Matlab实现Faster-RCNN目标检测相关推荐

  1. 【Faster RCNN detectron2】detectron2实现Faster RCNN目标检测

    目录 1. 背景介绍 2.安装步骤 3.Faster RCNN目标检测 4. 效果 5.错误解决 6.参考博客 7,下一节代码解析 在上一篇博客记录了 SlowFast的复现过程,slowfast其中 ...

  2. 阿里巴巴提出Auto-Context R-CNN算法,刷出Faster RCNN目标检测新高度

    基于区域的CNN(R-CNN),在目标检测领域具有统治地位,在兴趣区域(RoI)上的操作比如RoIPooling和RoIAlign扮演了重要角色,但是它们只利用了兴趣区域内的信息,而兴趣区域附近的上下 ...

  3. 经验 | 详解 Faster R-CNN目标检测的实现过程

    计算机视觉联盟  报道 转载于 :机器之心 Faster R-CNN 实现代码:https://github.com/tryolabs/luminoth/tree/master/luminoth/mo ...

  4. Pytorch搭建Faster R-CNN目标检测平台

    学习前言 什么是FasterRCNN目标检测算法 源码下载 Faster-RCNN实现思路 一.预测部分 1.主干网络介绍 2.获得Proposal建议框 3.Proposal建议框的解码 4.对Pr ...

  5. Tensorflow faster RCNN目标检测车牌

    主要是利用Tensorflow官方examples提供的API来实现目标检测,官方examples,打开链接你会发现官方其实已经实现了很多的例子了,包括目标检测,自编码器,OCR,GAN,img2tx ...

  6. 一文读懂Faster R-CNN目标检测

    目标检测就是将对目标的分割和识别合二为一,是一种基于目标几何和统计特征的图像分割.当需要在一个复杂场景中对多个目标进行实时处理时,目标的自动提取和识别就尤其重要.简而言之,目标检测与识别就是指从一张图 ...

  7. Ubuntu18.04 配置detectron2实现Faster RCNN目标检测和Mask RCNN实例分割(一)

    1. 背景介绍 detectron2项目地址:https://github.com/facebookresearch/detectron2 FasterRCNN论文:https://arxiv.org ...

  8. 深度篇——目标检测史(二) 细说 R-CNN 目标检测

    返回主目录 返回 目标检测史 目录 上一章:深度篇--目标检测史(一) 关于 古典 目标检测 下一章:深度篇--目标检测史(三)  细说 SPP-Net 目标检测 论文地址:<Rich feat ...

  9. DL之Mask R-CNN:2018.6.26世界杯阿根廷队VS尼日利亚比赛2:1实现Mask R-CNN目标检测

    DL之Mask R-CNN:2018.6.26世界杯阿根廷队VS尼日利亚比赛2:1实现Mask R-CNN目标检测 目录 输出结果 人身检测 核心代码 输出结果 先上目标检测结果 人身检测 观众席:众 ...

  10. 非极大值抑制_【计算机视觉——RCNN目标检测系列】三、IoU与非极大抑制

    写在前面 在上一篇博客:[计算机视觉-RCNN目标检测系列]二.边界框回归(Bounding-Box Regression)( 戴璞微:[计算机视觉-RCNN目标检测系列]二.边界框回归(Boundi ...

最新文章

  1. add nodes to the swarm
  2. 中国香港地区 DDoS- botnet 态势分析
  3. java多线程中出现的异常分别有哪些_java多线程试题
  4. 计算机二级offic高级应用备考,备考2021计算机二级—二级MS Office高级应用高频考点.pdf...
  5. arduino机器人设计与制作_百元搭建人工智能自主导航机器人
  6. 大数据学习笔记54:HBase概述
  7. solr 6.5.1 创建core失败的原因 Can‘t find resource ‘solrconfig.xml‘
  8. 解决虚拟机克隆后eth0不见的问题
  9. vjudge-Knight Moves(bfs)
  10. 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战
  11. 分享一个自己写的QT小游戏-玛丽奥医生
  12. Excel宏编程代码,根据混合的名次合并计算进退值
  13. 线性电阻软件的伏安特性曲线测试,线性电阻和非线性电阻的伏安特性曲线
  14. 音视频剪辑 DIY:用 Python 快速入门音视频剪辑
  15. 恒生UFX交易接口基本介绍
  16. Java 输出三角形
  17. 【路径规划】基于遗传算法求解多中心带时间窗车辆路径规划问题(VRPTW)matlab代码
  18. Android开发入门 - 简易开心消消乐界面设计
  19. socket通信之bind函数
  20. 计算机主板可以随意更换硬件吗,电脑主板可以随便换么?每日一答

热门文章

  1. shutdown 命令参数介绍
  2. asp.net 用parameter对象更新数据
  3. 【贪心+双指针】LeetCode 11. Container With Most Water
  4. 【Hard 递归 动态规划 回文串15】LeetCode 730. Count Different Palindromic Subsequences
  5. Underfull hbox (badness 10000) in paragraph at lines 83--86
  6. 【兰伯特光照与Blinn_Phong光照】
  7. [枚举] Jzoj P3387 终极武器
  8. poj3349找相同的雪花(哈希)
  9. redis、mysql、和php原生array数组效率对比
  10. Ubuntu 10.04 安装在 VMware Workstation 7 后,键盘无反应的解决方法