MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《1》

news2025/1/9 1:03:13

原论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
开源代码:https://github.com/ijkguo/mx-rcnn

Parallel Faster R-CNN implementation with MXNet,使用MXNet实现快速并行的区域提议的卷积神经网络,这里的框架就是用MXNet,如果没有安装这个框架的,具体安装可以查看:MXNet的安装以及一些常见错误处理
这节主要就是安装模型与测试看下这个模型的效果怎么样,以及安装过程遇到哪些问题。

克隆源码

 我们先克隆一份源码到本地: 

C:\Users\Tony>git clone https://github.com/ijkguo/mx-rcnn.git

当然如果网络不稳定,可能出现下面这样的错误:

fatal: unable to access 'https://github.com/ijkguo/mx-rcnn.git/': OpenSSL SSL_read: Connection was aborted, errno 10053 

再试几次就好了,这个属于国内访问国外的站点,网络问题造成的。然后我们就在C:\Users\Tony目录克隆了一份mx-rcnn了。 

VOC数据集

训练模型少不了数据集,这里我使用VOC的数据集,下载数据集地址:

http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

文件都是比较大,所以建议使用迅雷下载,下载好了之后解压。放入到data目录下面,我们来看下VOCdevkit\VOC2012里面都保存的是一些什么文件?
ImageSets\Segmentation :训练与验证的txt文本文件,里面内容是图片名,类似下面:

2007_000032
2007_000039
...

JPEGImages :样本的输入图片
如图:

SegmentationClass :标签,跟样本一样的图片格式,而且尺寸和它所标注的输入图像的尺寸相同。标签中颜色相同的像素属于同一个语义类别。
如图:

Annotations :标注,里面是xml文件,打开一个2007_000027.xml(人),可以看到里面有图片尺寸,人的姿势,坐标,头脚等的坐标属性。你可以打开其他的xml文件看看,是其他各种对象的名称和坐标信息等。对于Annotations标注文件,可以查阅:Python基础知识之读取XML文件 熟悉对XML文件里面的对象节点的读取。

VGG16预训练模型参数

下载vgg_voc07-0010.params参数文件,dropbox需要登录,没有账号先注册账号即可:https://www.dropbox.com/s/gfxnf1qzzc0lzw2/vgg_voc07-0010.params?dl=0
当然如果不想注册或者可能需要科学上网的话,那就直接点击这里下载:vgg-voc07-0010.params然后来做个测试,看下这个模型效果如何,我这里使用的是网络随便下载的一张狗猫图片hi.jpg

python demo.py --dataset voc --network vgg16 --params model/vgg_voc07-0010.params --image hi.jpg

执行之后的结果:

called with args
{'dataset': 'voc',
 'gpu': '',
 'image': 'myimage.jpg',
 'img_long_side': 1000,
 'img_pixel_means': (123.68, 116.779, 103.939),
 'img_pixel_stds': (1.0, 1.0, 1.0),
 'img_short_side': 600,
 'net_fixed_params': ['conv1', 'conv2'],
 'network': 'vgg16',
 'params': 'model/vgg_voc07-0010.params',
 'rcnn_batch_size': 1,
 'rcnn_bbox_stds': (0.1, 0.1, 0.2, 0.2),
 'rcnn_conf_thresh': 0.001,
 'rcnn_feat_stride': 16,
 'rcnn_nms_thresh': 0.3,
 'rcnn_num_classes': 21,
 'rcnn_pooled_size': (7, 7),
 'rpn_anchor_ratios': (0.5, 1, 2),
 'rpn_anchor_scales': (8, 16, 32),
 'rpn_feat_stride': 16,
 'rpn_min_size': 16,
 'rpn_nms_thresh': 0.7,
 'rpn_post_nms_topk': 300,
 'rpn_pre_nms_topk': 6000,
 'vis': False,
 'vis_thresh': 0.7}
cat 0.9973692893981934 [15.126463492392649, 175.17550730853654, 171.60225596158054, 453.5603692509072]
dog 0.9986190795898438 [214.57471593545327, 0.0, 473.58240774725783, 473.91646690260296]

可以看到这个识别率很高,也正确识别出了cat和dog。

另外再下载一张图片里面包含飞机和人的图片hi.png: 

 (pygpu) C:\Users\Tony\mx-rcnn>python demo.py --dataset voc --network vgg16 --params model/vgg_voc07-0010.params --image hi.png
aeroplane 0.9932262301445007 [30.012542606770246, 94.47606422545638, 736.2043076034429, 490.1165506755796]
person 0.9973176121711731 [349.8960436870949, 360.76963968838686, 419.708646633156, 515.0064940880594]
person 0.8311970829963684 [463.2724951553385, 329.9512759694035, 746.2167398828122, 521.4361603167887]
person 0.7637878060340881 [331.2129511589329, 365.46689139662453, 367.05844125486556, 512.2362556924838]

也能准确的在图片中找出飞机和三个人,准确率也是很不错的 

可视化效果

我们来可视化这两张图片,看下效果怎么样,增加一个vis参数 

(pygpu) C:\Users\Tony\mx-rcnn>python demo.py --dataset voc --network vgg16 --params model/vgg_voc07-0010.params --image hi.jpg  --vis
cat 0.9973692893981934 [15.126463492392649, 175.17550730853654, 171.60225596158054, 453.5603692509072]
dog 0.9986190795898438 [214.57471593545327, 0.0, 473.58240774725783, 473.91646690260296]

可以看到非常精准的锚框着对象,而且狗的识别率达到了99.9% 

错误处理

如果没有安装opencv这个库的话,会报错,如下:
No module named 'cv2'
安装,最好带镜像地址,速度快:

pip install opencv-contrib-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

如果在安装过程中有遇到什么疑问的,可以留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程

查看进程 回忆上次内容 上次先ctrl z 挂起进程 然后运行 bg程序继续跑起来而且不断输出到标准输出流甚至连ctrl c 都无法结束进程了这可怎么办呢?只能新开一个终端想办法 查询进程 搜索 debian进程查询找到具体方法 进程 具体方法动手试试 新开一个终端 运行ps…

新冠阳性的第五篇博客,宝塔面板如何快速部署一个SpringBoot项目

宝塔面板如何快速部署一个SpringBoot项目1.删除旧版本的Java2.安装Java3.配置Java环境变量4.宝塔快速部署1.删除旧版本的Java 删除旧版本的Java,防止对我们的服务产生影响! 如果你的服务器上没有下载过Java,则跳过此步骤! 查找…

【K3s】第1篇 K3s入门级介绍及架构详解

目录 1、什么是 K3s? 2、为什么叫 K3s? 3、适用场景 4、架构详解 单节点架构 高可用架构 K3s高可用架构: 固定 agent 节点的注册地址 注册 Agent 节点 1、什么是 K3s? K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进…

SpringBoot图文详解 | 系统性学习 | 无知的我费曼笔记

无知的我复盘,顺便上传笔记。 对比Spring,SpringBoot 其实就是简化了固定的开发步骤。如坐标、Web3.0配置类、配置类 文章目录1 SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.…

【问题记录与解决】OSError: [WinError 127] 找不到指定的程序。

目录 一、报错记录二、尝试解决(已解决)2.1 先 卸载掉 几个与torch相关的模块2.2 重新下载几个模块,并分别安装一、报错记录 首先来看报错的截图: 报错的具体代码,可以看这里,和这里使用的一样的: 【Pytorch_Geometric】(GCN)基本使用:数据集与邻接矩阵格式,图形(…

河道水尺水位监测系统 基于opencv

河道水尺水位监测系统基于pythonopencv对现场画面中水位进行实时监测,当监测到画面中水位异常变化时,立即抓拍存档同步回传图片给后台。Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简…

用Python写个实用工具 - TheFuck(命令纠正工具)

前言 哈喽啊,我亲爱的铁铁们,I am back ! 别管,我也是阳过的人了,这么久都没有更新,今天就带来个小玩意吧 我们在学习python的时候,有个小工具,是可以纠正我们写错的命令 The Fu…

React封装一个纯CSS实现的水滴样式的盒子

背景 刷B站刷到一个纯css实现的水滴效果的视频 感觉真不错,决定封装一个具有水滴效果的盒子(DIV) 涉及知识点 CSS样式,核心是这个和box-shadow阴影,实现水滴boder和阴影效果。JS控制CSS样式16进制的颜色(…

SpringBoot项目+注册功能实现

注册功能实现分析 目录 一、AppConfig.java 二、register.html 三、UserDto.java 四、UserController.java 五、UserMapper.xml 六、运行结果 一、AppConfig.java Configuration public class AppConfig implements WebMvcConfigurer {//统一视图跳转Overridepublic void…

(1)Qt的基本数据类型以及基本输出

基础类型 因为Qt是一个C框架, 因此C中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数据类型。 类型名称注释备注qint8signed char有符号8位数据qint16signed short16位数据类型qint32signed short32位有符号…

数据结构与算法java篇--二叉树

内容有点多,建议先收藏 目录 一.树的介绍 二.java代码实现树 1.Node类 2.Tree类 3.查找节点 4.插入节点 5.遍历树 5.1 中序遍历 5.2 前序遍历和后序遍历 6.查找最大值和最小值 7.删除节点 7.1 删除没有子节点的节点 7.2 删除有一个子节点的结点 7.3 删除…

java美食论坛系统发帖子系统美食论坛网站美食分享论坛源码

ssm开发的美食论坛系统,用户注册之后可以发布关于美食的帖子,其他人可以回帖,评论,点赞回复和评论,分为楼主,第一楼,第二楼等。可以再个人中心查看我对别人的回复,以及别人对我的回复…

学习黑客十余年,如何成为一名安全工程师?

1. 前言 说实话,一直到现在,我都认为绝大多数看我这篇文章的读者最后终究会放弃,原因很简单,自学终究是一种适合于极少数人的学习方法,而且非常非常慢,在这个过程中的变数过大,稍有不慎&#x…

主成分分析(PCA)

主成分分析是一种降维(去除噪声和不重要信息)方法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关。 适用性:当研究的问题涉及到多变量且变量之间存在很强的相关…

【LeetCode】2099. 找到和最大的长度为 K 的子序列

【LeetCode】2099. 找到和最大的长度为 K 的子序列 给你一个整数数组 nums 和一个整数 k 。你需要找到 nums 中长度为 k 的 子序列 ,且这个子序列的 和最大 。 请你返回 任意 一个长度为 k 的整数子序列。 子序列 定义为从一个数组里删除一些元素后,不…

BIT.1_常见指令以及权限理解

目录使用 XShell 远程登录 Linux下载安装 XShell查看 Linux 主机 ip使用 XShell 登陆主机XShell 下的复制粘贴文件 内容数据 属性数据Linux目录结构相对/绝对路径Linux下基本指令01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令(重要)&am…

基于Xlinx的时序分析与约束(4)----主时钟约束

主时钟约束语法 主时钟约束,就是我们对主时钟(Primary Clock)的时钟周期进行约束(告诉综合工具布局布线的标准),这个约束是我们用的最多的约束了,也是最重要的约束。 主时钟必须与一个网表对象相…

seo综合查询,怎么看网站在移动端权重高低

移动权重就是指在手机、IPAD等的流量,数值越大流量越多。 未来百度流量一定会更倾向于移动端,移动端搜索将是百度搜索引擎的主要阵地。这一点和用户上网习惯有关系,因为移动网络无处不在。 那么怎么看网站在移动端权重高低?最…

Office选装 + Visio安装

一.Office选装 这里我以装Word、Excel和Powerpoint为例 第一步:下载office tool plus 下载地址:https://otp.landian.vip/zh-cn/ 打开网址后,点击红色的立即下载,进入文件存放页面; 第二步:选择其中一个下…

STM32F103C8T6平衡车

链接:https://pan.baidu.com/s/1WJ9otyE9LuO6Kh5gyQ0Tug?pwd8888 提取码:8888 #define BIN2_Pin GPIO_PIN_12 #define BIN2_GPIO_Port GPIOB #define BIN1_Pin GPIO_PIN_13 #define BIN1_GPIO_Port GPIOB #define AIN1_Pin GPIO_PIN_14 #define AIN1_…