MATLAB2017a使用FasterRcnn目标检测训练及其测试流程

2023-11-17

    本文在matlab2017a已有的FasterRcnn算法基础上来检测人群。流程比较简单,对一些初学者来说比较容易理解和操作。

1.安装所需要的软硬件环境

1.1.硬件环境:

· CPU:Intel i5

· GPU:GTX940m

· 内存:4G

· 硬盘:500G

1.2软件环境

· 开发环境: Windows 10

· 编译环境:MATLAB2017a

2.目标模型的训练

2.1获得数据集

打开MATLAB2017a,输入命令trainingImageLabeler使用matlab自带的trainingImageLabeler来对图片进行标注。简单起见,选43张图片标注,每张图片最后只选择一个框(方便对数据提取


    所有图片的label标注完后点击 Export ROIs 就会得到像这样的一个table文件。imageFilename代表了图片所存储的位置。 并将table文件保存到指定文件夹。(注:获得table文件不能通过保存获得必须Export ROIs)

    使用命令save('D:\MATLAB\toolbox\vision\visiondata\people\tset_1\peopledata.mat','peopledata');

就可以报存到这个位置:D:\MATLAB\toolbox\vision\visiondata\people\;

    注意peopledata.mat是要保存的类型以及文件格式,第二项peopledata是从Export ROIs 导出后命名的文件名。

    使用函数extractpeople(matpath,savepath)批量修改table文件中图片大小为227X227(大小是固定的)

    从上述产生的table可以看到,ROI框坐标数据保存类型是1*4 double。有时候导出时产生的是cell型,double型和cell型数据提取方式不一样,不注意可能会报错。一下仅以double型为例。

输入一下命令设置上述获得的数据集所在路径和保存路径。

    matpath=('D:\MATLAB\toolbox\vision\visiondata\people\tset_1\peopledata.mat')

    savepath=('D:\MATLAB\toolbox\vision\visiondata\people\tset_1\people\');   %框选图片保存位置

    输入命令 extractpeople(matpath,savepath)即可(该函数的作用是将框选目标提取出来将其图片大小改为227*227,并按顺序命名)

 (1)%double 型的方式

    function extractpeople(matpath,savepath)
    %batch change image size
    load(matpath); 
    %get image
    [length b]=size(peopledata);   
    %get the number of image
    for i=1:length
    img=imread(peopledata.imageFilename{i});
    str=zeros(1,4);       
    str(1)=peopledata.people(i,1);
    str(2)=peopledata.people(i,2);
    str(3)=peopledata.people(i,3);
    str(4)=peopledata.people(i,4);   
    rect=str;      
    I=imcrop(img,rect);
    I=imresize(I,[227 227]);
    imwrite(I,[savepath,'\',num2str(i),'.jpg']);
    %resize image
end

(2)cell 型方式

    function extractpeople(matpath,savepath)
    %batch change image size
    load(matpath); 
    %get image
    [length b]=size(peopledata);   
    %get the number of image
    for i=1:length
    img=imread(peopledata.imageFilename{i});  
    rect= peopledata.people{}i};     
    I=imcrop(img,rect);
    I=imresize(I,[227 227]);
    imwrite(I,[savepath,'\',num2str(i),'.jpg']);
    %resize image
end

 


2.2.   模型训练

(1)使用MATLAB2017a自带的神经网络Alexnet,选择训练深度为20。

    依次输入命令net=alexnet;

%doc alexnet 可以查看具体相关流程这里不做说明

%doc imageDatastore 可以查看具体相关流程这里不做说明

image = imageDatastore(fullfile('D:\MATLAB\toolbox\vision\visiondata\people\tset_1\'),...
'IncludeSubfolders',true,'LabelSource','foldernames');

layersTransfer=net.Layers(1:end-3);

numClasses = numel(categories(image.Labels))


%设置网络训练参数

输入命令netTransfer = trainNetwork(image,layers,options);%开始训练

 

(2)使用FasterRcnn训练,选择训练深度为20。训练结束后,保存训练模型

    load('peopledata.mat');     %it is not necessary

     options = trainingOptions('sgdm', ...
    'InitialLearnRate', 1e-8, ...
    'MaxEpochs', 20, ...                     %twenty times  训练深度不是越多效果越好,有可能适得其反,
    'CheckpointPath', tempdir);
     layer=netTransfer.Layers

     detector = trainFasterRCNNObjectDetector(peopledata, layer, options)

    %开始训练大概要10分钟左右,设备好相对快些


2.3 检测

(1)检验模型

    读取一张大小适合的图片进行检测,并输出检测结果,获得检测框的坐标,以及检测分数。

(2)运行实例


3.优点与缺点

    训练模型量要很大,这就产生了很大的数据,对于同一张图片,有着大小限制,大小小于227时,会无法检测,改变其大小比列可能检测不出目标。

    每一次FasterRcnn模型训练都将产生很大缓存数据,选择训练深度30,训练图片数量280,产生了25G的缓存数据。要命的是它存在C盘容易导致电脑卡顿,所以每次训练结束都要清楚缓存数据。

    当然,它的识别精度还是比较可靠的,主要在于训练模型的图片要选择恰当。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB2017a使用FasterRcnn目标检测训练及其测试流程 的相关文章

随机推荐

  • adworld-web2

    web2 GFSJ0627积分 2金币 2 91最佳Writeup由 Robert Wei 提供 收藏 反馈 难度 2 方向 Web 题解数 108 解出人数 10185 题目来源 CTF 题目描述 解密 题目场景 http 61 147
  • SSM到底学了什么--SSM回顾

    SSM回顾 学习完MyBatis Spring和SpringMVC 个人进行一下回顾 看看还能记住多少 重点的地方一定要闭着眼睛都要写出来的 前面的笔记做得很详细 那里忘了点哪里哈哈哈哈 MyBatis框架笔记 Spring框架笔记 Spr
  • 超详细的Linux环境下使用git上传代码教程(gitee版)

    git是一个版本控制器 我们使用它上传我们以前写过的代码给他进行托管 更为方便以后找到 同时也方便我们找到我们每次更改了什么 创建仓库 使用 git 命令行 Linux下的操作 git三板斧 在远端修改了文件push不了怎么办 删除仓库已提
  • 29岁总结复盘

    1 qt界面图片上加文字 2 mysql查询最新一百条数据 3 线程操作数据库死锁了怎么做 4 qt元 连接第五个参数 5 项目框架 整体把控 6 opencv 7 视频采集卡 8 做事要有深度 这才是你的价值 可以说计算机领域多数情况下就
  • 一个简单的WebService实例

    WebService在 NET平台下的作用是在不同应用程序间共享数据与数据交换 要达到这样的目标 Web services要使用两种技术 XML 标准通用标记语言下的一个子集 XML是在web上传送结构化数据的伟大方式 Web servic
  • 安装配置qt_eventdispatcher_libevent

    QT默认的是使用select模型的 这种轮询方式非常慢 在高并发连接 我们需要epoll才能发挥linux服务器的性能 安装qt eventdispatcher libevent 下载安装包后 解压 找到src目录 用Qt打开pro工程 然
  • matplotlib绘图系列----pie饼图

    使用plt pie绘制饼图 绘制饼图我们用matplotlib pyplot pie 我们先看下他的基本参数 下面结合实例演示基本用法 coding utf 8 加入中文显示 import matplotlib pyplot as plt
  • QGIS开发--小例子

    文接上篇 上次说到QGIS开发小插件的问题 讲了插件怎么开发 开发好了放哪个地方 界面怎么设置 代码怎么关联 并且遗留了一些小问题 就是怎么添加多个界面 怎么实现界面跳转 这篇文章主要就是解决这个问题的 这次内容有两个 1 界面关联 跳转
  • 大数据开发教程——ZooKeeper分布式协调组件

    ZooKeeper是什么 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 是Google的Chubby一个开源的实现 是Hadoop和Hbase Flink的重要组件 中文名 动物管理员 它是一个为分布式应用提供一致性服
  • MySQL(十四)—— 表的一些操作

    MySQL数据库系列内容的学习目录 rightarrow 老杜带你学MySQL学习系列内容汇总 14 表的一些操作 14 1 insert 语句一次插入多条记录 14 2 快速创建表 14 3 将查询结果插入到一张表当中 14 4 快速删除
  • 计算机网络 期末复习#1

    计算机网络 期末复习 1 大题 1 总时延 数据 速率 带宽 2 循环冗余检测CRC 3 无分类编制CIDR 构造超网 4 使用子网时分组转发 5 距离向量算法 6 拥塞控制 慢开始算法 7 路由器 以太网 1 总时延 有一个长度为 100
  • Python进阶篇

    大家好 我是易安 今天我们继续Python的学习 内容稍微有些多 不过我会尽可能举一些例子让你理解 对象比较与拷贝 在前面的学习中 我们其实已经接触到了很多 Python对象比较和复制的例子 比如下面这个 判断a和b是否相等的if语句 if
  • 06-PS中的四种蒙版

    Photoshop中的蒙版就是遮罩的意思 主要作用就是将其所在的图层 把不同的明暗度转化成相应的透明度 黑色为完全透明 灰色为半透明 白色为完全不透明 添加蒙版有便于灵活修改 不影响图层原貌 PS蒙版有四类 图层蒙版 剪切蒙版 矢量蒙版 快
  • Nmap食用指北

    Nmap食用指北 Nmap简介 Nmap Network mapper 是目前最流行的网络扫描工具 它不仅能够准确地探测单台主机的详细情况 而且能够高效率地对大范围IP地址段进行扫描 使用Nmap能够得知目标网络上哪些主机是存活的 以及哪些
  • 新闻网大数据实时分析可视化系统项目——10、数据采集/存储/分发完整流程测试...

    一 idea工具开发数据生成模拟程序 1 在idea开发工具中构建weblogs项目 编写数据生成模拟程序 package main java import java io public class ReadWrite static Str
  • LeetCode 面试题 03.02. 栈的最小值

    文章目录 一 题目 二 C 题解 一 题目 请设计一个栈 除了常规栈支持的 pop 与 push 函数以外 还支持 min 函数 该函数返回栈元素中的最小值 执行 push pop 和 min 操作的时间复杂度必须为 O 1 点击此处跳转题
  • 面试题:6种解法-顺序打印A1B2C3

    金不三 银不四的高频面试题 Java 中顺序打印 A1B2C3 是多线程中的一个经典面试问题 其解决方法可以锻炼程序员的多线程编程能力 本文将从多个角度 介绍 Java 中顺序打印 A1B2C3 的实现方式 总共分为如下6种方式 synch
  • VAE-GAN学习记录

    一 遇到的问题以及学习目的 学习VAE GAN主要是因为最近在做故障诊断相关的东西 之前在某篇论文里得知 使用GAN算法时 可以使用判别损失 重构损失对异常样本进行检测 然而 那篇论文 基于 LSTM GAN 的加油时序数据异常检测 里面
  • SpringBoot数据库连接池Hikari配置

    在项目中 一般情况下访问数据库 会创建一个连接 用完后就关闭它 对于简单的系统这样不会带来什么明显的性能上的开销 但是对于一个复杂的系统 频繁的建立 关闭连接 会极大的减低系统的性能 因为对于数据库连接的使用可能会成为系统性能的瓶颈 数据库
  • MATLAB2017a使用FasterRcnn目标检测训练及其测试流程

    本文在matlab2017a已有的FasterRcnn算法基础上来检测人群 流程比较简单 对一些初学者来说比较容易理解和操作 1 安装所需要的软硬件环境 1 1 硬件环境 CPU Intel i5 GPU GTX940m 内存 4G 硬盘