本文接着上一篇《手把手教你用深度学习做物体检测(五):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. bean的创建(五)第一部分

    AbstractBeanFactory.doGetBean protected <T> T doGetBean( final String name, final Class<T&g ...

  2. Python基础总结之异常、调试代码第十二天开始(新手可相互督促)

    年薪20万的梦想,加油! 我们在写代码的时候,控制台经常会报错,因为某种错误,导致我们的程序停止,且不再运行下面的代码. 我们看一个错误的代码示例: def add_1(): #没有参数 print( ...

  3. Linux基础文件打包

    一.打包与解压 (一).打包压缩 [root@linux ~]# tar -czf etc1.tar.gz /etc //-z 调用gzip [root@linux ~]# tar -cjf etc2 ...

  4. ibatis 核心原理解析!

    关注下方公众号,可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 最近查找一个生产问题的原因,需要深入研究 ibatis 框架的源码.虽然最后证明问题的原因与 ibat ...

  5. springboot-jsp打jar问题

    [**前情提要**]最近做了一个项目,项目是springboot+jsp结构的,但是在发布生产环境的时候又需要用maven打成jar包,但是一开始的默认配置都不成功.下面的文章就是具体的解决过程. - ...

  6. dubbokeeper-moniter部署指南

    moniter在整个dubbo架构中的角色: 使用的1.0.1版本: ## 1.0.1版本变动内容 dubbokeeper在1.0.1版本对监控数据存储模块抽离出来,做为单独的应用部署,而不是和1.0 ...

  7. Jmeter使用csv文件读取测试数据

    最近有同事在测试过程中遇到需要造批量测试数据的问题,这些数据往往是同一种单据,但是单据的内容不同,如果手工创建就比较费时费力.那我们用jmeter的csv文件来读取测试数据就完美解决了这个问题. 我们 ...

  8. (十)c#Winform自定义控件-横向列表

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  9. 【hdu 2544最短路】【Dijkstra算法模板题】

    Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...

  10. Spring Boot 与 Mybatis、Mysql整合使用的例子

    第一步: 创建一个SpringBoot的工程,在其中的Maven依赖配置中添加对JDBC.MyBatis.Mysql Driver的依赖具体如下: <!-- JDBC --> <de ...