手把手教你用深度学习做物体检测(六):YOLOv2介绍
本文接着上一篇《手把手教你用深度学习做物体检测(五):YOLOv1介绍》文章,介绍YOLOv2在v1上的改进。有些性能度量指标术语看不懂没关系,后续会有通俗易懂的关于性能度量指标的介绍文章。
YOLOv2
论文:《 YOLO9000: Better, Faster, Stronger》
地址: https://arxiv.org/pdf/1612.08242v1.pdf
yolov2和v1的区别
- 引入了Batch Normalization
有一定的正则化效果,可以减轻过拟合,这样就不用使用dropout等优化方法了。BN归一化了激活函数的输入值,加快了隐藏层单元的学习速度。可以抑制covariate shift 现象对深层网络较深的层的影响(covariate shift是指训练样本和测试样本分布不同导致的训练模型在测试数据上表现不佳的问题)。 - High Resolution Classifier(采用高分辨率的分类器)
这里是指在ImageNet上训练的时候就用到了448*448的分辨率(先224*224训练160个epochs,然后就调整到了448*448,再跑10个epochs),而yolov1时采用的224*224。 - Convolutional With Anchor Boxes (采用锚盒)
引入Anchor Boxes后,每个格子预测9个边界框,比v1多了,结果是准确率下降0.3%,召回率提升7%。 因为可以通过进一步的工作来加强准确率,所以说改进空间提高了。 - Dimension Clusters (维度聚类)
anchor boxes需要是精选的先验框,也就是说一开始的anchor boxes如果比较好,网络就更容易学到准确的预测位置。这里作者使用了k-means的方法来选择anchor boxes.需要注意的是,计算过程中作者用IOU得分代替了欧氏距离的方法,使得boxes的聚类是受IOU的影响。k值的选择,作者经过实验确定为5。 - Direct location prediction
为了解决预测的边界框坐标不稳定, anchor可能预测很远处的格子(grid cell)的问题,作者利用logistic回归函数把anchor的偏移量限制在了0到1之间,使得anchor只用于预测其周围的边界框。该方法使mAP获得了5%的提升。 - Fine-Grained Features(浅层纹理特征)
为了在小尺度物体检测上表现的好,作者添加了一个passthrough layer(转移层),就是把浅层纹理特征拼接到深层特征图,这波操作 使得模型的性能获得了1%的提升。 - Multi-Scale training (多尺度训练)因为去掉了全连接层,任意输入维度都可以在网络中运行,所以作者每10个batches就随机选择一个新的size进行输入,YOLO网络使用的降采样参数为32,即使用32的倍数进行尺度池化{32*10,32*11,…,32*19}。最终最小的尺寸为320*320,最大的尺寸为608 * 608。这种机制使得网络可以更好地预测不同尺寸的图片,意味着同一个网络可以进行不同分辨率的检测任务,在小尺寸图片上YOLOv2运行更快,在速度和精度上达到了平衡。在小尺寸图片检测中,YOLOv2的mAP堪比Faster R-CNN。在大尺寸图片检测中,YOLOv2在VOC2007 上mAP为78.6%,仍然高于平均水准。
- Darknet-19
yolov2使用了Darknet-19这个新的网络结构作为特征提取部分,输入大小变为416*416。 - 另外,作者提出了一种可以同时在 COCO和fulll ImageNet(前9000类)数据集中进行训练的方法,训练出的模型可以 实现9000种物体的实时检测(具体内容建议看原论文)。用作者的话说就是:使用这个联合训练方法,YOLO9000使用COCO的检测数据来学会找到图片中的物体,使用ImageNet中的数据来学会给这些找到的物体分类。
总结一下:
YOLOv2在学习速度、准确度、对小目标的检测、对不同尺度图片的检测上都有提升。
YOLOv2的改进就介绍到这里啦,下一篇文章《手把手教你用深度学习做物体检测(七):YOLOv3》中,我们会介绍v3做了哪些新的改进。
手把手教你用深度学习做物体检测(六):YOLOv2介绍的更多相关文章
- 手把手教你用深度学习做物体检测(五):YOLOv1介绍
"之前写物体检测系列文章的时候说过,关于YOLO算法,会在后续的文章中介绍,然而,由于YOLO历经3个版本,其论文也有3篇,想全面的讲述清楚还是太难了,本周终于能够抽出时间写一些YOLO算法 ...
- 手把手教你用深度学习做物体检测(七):YOLOv3介绍
YOLOv3 论文:< YOLOv3: An Incremental Improvement > 地址: https://arxiv.org/pdf/1804.02767.pdfyolov ...
- 手把手教你搭建深度学习平台——避坑安装theano+CUDA
python有多混乱我就不多说了.这个混论不仅是指整个python市场混乱,更混乱的还有python的各种附加依赖包.为了一劳永逸解决python的各种依赖包对深度学习造成的影响,本文中采用pytho ...
- 深度学习实践-物体检测-faster-RCNN(原理和部分代码说明) 1.tf.image.resize_and_crop(根据比例取出特征层,进行维度变化) 2.tf.slice(数据切片) 3.x.argsort()(对数据进行排列,返回索引值) 4.np.empty(生成空矩阵) 5.np.meshgrid(生成二维数据) 6.np.where(符合条件的索引) 7.tf.gather取值
1. tf.image.resize_and_crop(net, bbox, 256, [14, 14], name) # 根据bbox的y1,x1,y2,x2获得net中的位置,将其转换为14*1 ...
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...
- 用深度学习做命名实体识别(二):文本标注工具brat
本篇文章,将带你一步步的安装文本标注工具brat. brat是一个文本标注工具,可以标注实体,事件.关系.属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apac ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- 深度学习(二十六)Network In Network学习笔记
深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...
- 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测
话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...
随机推荐
- spring autowrited注解
@Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法.在使用@Autowired之前,我们对一个b ...
- Selenium+java - 弹出框处理
一.弹出框分类: 弹出框分为两种,一种基于原生JavaScript写出来的弹窗,另一种是自定义封装好的样式的弹出框,本文重点介绍原生JavaScript写出来的弹窗,另一种弹窗用click()基本就能 ...
- 放出一批jsp图书管理系统图书借阅系统源码代码运行
基于jsp+mysql的JSP图书销售管理系统 https://www.icodedock.com/article/105.html基于jsp+Spring+Spring MVC的Spring图书借阅 ...
- tcp四次挥手为什么要等待2MSL
之前所说了解有两个原因: 1.防止客户端最后一次发给服务器的确认在网络中丢失以至于客户端关闭,而服务端并未关闭,导致资源的浪费. 2.等待最大的2msl可以让本次连接的所有的网络包在链路上消失,以防造 ...
- nginx基本运维及常用配置
nginx基本运维及常用配置 ========================================================== 基本运维 nginx 的启动 nginx -c /p ...
- Power Designer导出模型的sql加注释-Oracle语句
第一步:Database-->Edit Current DBMS 第二步: 然后分别将 Script-->Objects-->Table-->TableComment Scri ...
- 超全的 Vue 开源项目合集,签收一下
超全的 Vue 开源项目合集,签收一下 xiaoge2016 前端开发 1周前 作者:xiaoge2016 链接: https://my.oschina.net/u/3018050/blog/2049 ...
- Flink 源码解析 —— 如何获取 ExecutionGraph ?
https://t.zsxq.com/UnA2jIi 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6. ...
- Linux软件的安装
yum -y groups install "GNOME Desktop" 安装桌面系统startx 安装完成后输入指令进入到桌面化指令 安装tomcat sudo yum i ...
- Transformation HDU - 4578(线段树——懒惰标记的妙用)
Yuanfang is puzzled with the question below: There are n integers, a 1, a 2, …, a n. The initial val ...