手把手教你用深度学习做物体检测(六):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 攻击的检测需求,也 ...
随机推荐
- 第二章 jsp数据交互(一)
JSP如何处理客户端的请求? 解析:通过jsp内置对象 表单数据被提交到了jsp页面! 什么是JSP内置对象(jsp核心)? Java 内置对象 Java 作用域 解析:jsp内置对象是web容器创 ...
- scroll-苹果滑动卡顿
2018年08月02日,程序小bug. 在移动端html中经常出现横向/纵向滚动的效果,但是在iPhone中滚动速度很慢,感觉不流畅,有种卡卡的感觉,但是在安卓设备上没有这种感觉; 一行代码搞定: - ...
- LFS8.3BOOT引导疑点解决
LFS系统 的BOOT引导 在LFS书中写到的BOOT引导,时直接将宿主机的BOOT分区挂载当LFS的BOOT分区中,虽然这样也是可以实现BOOT引导的,但是我并不想这样做,所以BOOT引导就变得有些 ...
- 【游记】NOIP2018复赛
声明 我的游记是一个完整的体系,如果没有阅读过往届文章,阅读可能会受到障碍. ~~~上一篇游记的传送门~~~ 前言 参加完NOIP2018的初赛过后,我有点自信心爆棚,并比之前更重视了一点(也仅仅是一 ...
- 伪分布式Spark + Hive on Spark搭建
Spark大数据平台有使用一段时间了,但大部分都是用于实验而搭建起来用的,搭建过Spark完全分布式,也搭建过用于测试的伪分布式.现在是写一遍随笔,记录一下曾经搭建过的环境,免得以后自己忘记了.也给和 ...
- JavaScript循环出现的问题——用闭包来解决
在for循环中,数组长度为3,我本来是想对每个循环的元素绑定一个点击事件的,结果点击后控制台输出全部为1. for (var i = 0; i < data.data.length; i++) ...
- [实践]redhat linux5.3安装tomcat
1.安装准备 操作系统:RedHat 5 (自带apache2.2.3) 安装tomcat前首先要安装jdk: 查看系统是否安装了jdk或tomcat的命令: rpm -qa | grep java ...
- Flink 源码解析 —— JobManager 处理 SubmitJob 的过程
JobManager 处理 SubmitJob https://t.zsxq.com/3JQJMzZ 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1 ...
- 迁移学习(Transformer),面试看这些就够了!(附代码)
1. 什么是迁移学习 迁移学习(Transformer Learning)是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中.迁移学习是通过从已学习的相 ...
- 建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统
我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码.执行ant 打包命令.最后将apk包存放在指定目录 ...