本文接着上一篇《手把手教你用深度学习做物体检测(五):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介绍的更多相关文章

  1. 手把手教你用深度学习做物体检测(五):YOLOv1介绍

    "之前写物体检测系列文章的时候说过,关于YOLO算法,会在后续的文章中介绍,然而,由于YOLO历经3个版本,其论文也有3篇,想全面的讲述清楚还是太难了,本周终于能够抽出时间写一些YOLO算法 ...

  2. 手把手教你用深度学习做物体检测(七):YOLOv3介绍

    YOLOv3 论文:< YOLOv3: An Incremental Improvement > 地址: https://arxiv.org/pdf/1804.02767.pdfyolov ...

  3. 手把手教你搭建深度学习平台——避坑安装theano+CUDA

    python有多混乱我就不多说了.这个混论不仅是指整个python市场混乱,更混乱的还有python的各种附加依赖包.为了一劳永逸解决python的各种依赖包对深度学习造成的影响,本文中采用pytho ...

  4. 深度学习实践-物体检测-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 ...

  5. #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)

    原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...

  6. 用深度学习做命名实体识别(二):文本标注工具brat

    本篇文章,将带你一步步的安装文本标注工具brat. brat是一个文本标注工具,可以标注实体,事件.关系.属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apac ...

  7. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN

    基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...

  8. 深度学习(二十六)Network In Network学习笔记

    深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...

  9. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

随机推荐

  1. rem的基准字体大小的设置

    1.移动端 UI 给的设计稿通常是640px.720px.750px的宽度,但是我们要做适配,兼容不同的终端,rem布局是比较常用的一种方式,比较关键的是确定根节点的字体大小. 这里以640px为例, ...

  2. light oj 1011 - Marriage Ceremonies (状态压缩+记忆化搜索)

    题目链接 大概题意是有n个男的n个女的(原谅我这么说,我是粗人),给你一个n*n的矩阵,第i行第j列表示第i个女(男)对第j个男(女)的好感度,然后要安排n对相亲,保证都是正常的(无搞基百合之类的), ...

  3. 大数阶乘(c++实现)

    #include <iostream>using namespace std;#define N 1000int BigNumFactorial(int Num[], int n);voi ...

  4. oracle 正确删除归档日志,并清除 V$ARCHIVED_LOG 数据

    1. 连接 RMAN 管理 rman target / 2. 查看归档日志列表 RMAN> crosscheck archivelog all; 3. 删除所有归档日志 RMAN> DEL ...

  5. 数据结构之堆栈C++版

    /* 堆栈本身就是一种线性数据结构,说白了他与容器线性表是一种数据类型,不要认为他多高大上. 实时上他还没有线性表复杂,下面简单的实现一下堆栈. 事实上整个核心操作都是在操作指向堆栈的顶部元素的指针 ...

  6. Oracle创建设置查询权限用户

    用户创建的可以参考博客: https://blog.csdn.net/u014427391/article/details/84889023 Oracle授权表权限给用户: 语法:grant [权限名 ...

  7. 干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

    1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elast ...

  8. 10分钟安装Elasticsearch

    关注公众号 itweknow,回复"ES"获取<Elasticsearch权威指南 中文版>. 最近在尝试着搭建一个ELK(一个开源的实时日志分析平台),而本文所讲的E ...

  9. mysql中防止sql注入

    什么是sql注入 图片来源:百度百科 python 操作mysql产生sql注入问题 不用ORM框架,框架中已经集成了防范sql注入的功能,使用pymysql实践一下: # 导入pymysql模块 i ...

  10. 利用DoHome APP和音箱控制LED灯实验参考步骤

    准备材料: Arduino Uno 一块 Arduino 扩展板        购买链接 DT-06模块一个       购买链接 安卓手机一个 小度音箱一个 小灯珠一个 杜邦线若干 1.DT-06固 ...