yolov2原文叫《YOLO9000:Better, Faster, Stronger》

yolov2相对于yolo来说的优势就是文章题目所说的,更好,更快,更强。下面来看看yolov2如何达到这个目的的。

一、如何更快

1. 使用BN

随着BN的提出,且在各种网络大量的引入,yolov2引入了BN(batch normalization)。文章还发现BN不仅改善了网络性能,还有一定的正则化的作用,因此文章移除了yolo中使用的dropout操作。

关于BN具体的计算,可以参考BN及其改进算法

2. 输入分辨率高

在yolov1的时候采用的是224×224224 \times 224224×224大小的图片来进行分类任务,448×448448 \times 448448×448大小的图片来进行检测任务。

文章认为直接切换为高分辨率,可能对网络性能有所伤害。yolov2在使用了224×224224 \times 224224×224大小的图片训练的分类网络中,再用448×448448 \times 448448×448大小的图片来训练10轮分类网络,之后用得到的网络来训练检测网络。

3. 引入anchor

借助fasterrcnn的思想,预测坐标的偏移量比直接预测坐标更容易学习,所以yolov2引入anchor的思想。

fasterrcn预测方式如下:
x=(tx∗wa)+xax = (t_x * w_a) + x_ax=(tx​∗wa​)+xa​
y=(ty∗ha)+yay = (t_y * h_a) + y_ay=(ty​∗ha​)+ya​
上式中,x,y是预测的框中心,xax_axa​、yay_aya​是anchor框的中心点坐标,waw_awa​、hah_aha​是anchor框的宽和高,txt_xtx​,tyt_yty​是网络的输出。

注意:这里与yolo9000原文不同的是,上式中是‘-’号,但是按照fasterrcnn的公式推导其实应该为‘+’,这样更好理解

fasterrcnn这种训练方式对于txt_xtx​和tyt_yty​没有约束,使得训练早期坐标不容易稳定。

所以yolov2的预测方式如下:
bx=σ(tx)+cxb_x = \sigma(t_x) + c_xbx​=σ(tx​)+cx​
by=σ(ty)+cyb_y = \sigma(t_y) + c_yby​=σ(ty​)+cy​
bw=pwetwb_w = p_w e^{t_w}bw​=pw​etw​
bh=phethb_h = p_h e^{t_h}bh​=ph​eth​
Pr(object)∗IOU(b,object)=σ(to)Pr(object) * IOU(b, object) = \sigma(t_o)Pr(object)∗IOU(b,object)=σ(to​)
上式中,tx,ty,tw,th,tot_x,t_y,t_w,t_h,t_otx​,ty​,tw​,th​,to​分别为预测参数,bx,by,bw,bhb_x,b_y,b_w,b_hbx​,by​,bw​,bh​为归一化的预测框的中心坐标和长宽,cx,cyc_x,c_ycx​,cy​是当前网格距离左上角的距离,该距离也为规划化后的距离,pw,php_w, p_hpw​,ph​表示anchor的长宽,σ\sigmaσ表示sigmoid函数。上述中的归一化指的是每个网格的长宽为1。这里可以看出因为加了sigmoid函数,使得预测出的σ(tx),σ(ty)\sigma(t_x),\sigma(t_y)σ(tx​),σ(ty​)始终为0-1的,就不容易造成训练早期的坐标不稳定了。

在yolov1中,因为每个网格负责预测两个框,对于大小为7×77\times 77×7大小的featuremap来说,yolov1只能预测出7∗7∗2=987 * 7 * 2 = 987∗7∗2=98个预测框。但是引入anchor后,对于13×1313 \times 1313×13的featuremap来说,可以预测出13∗13∗9=152113 * 13 * 9 = 152113∗13∗9=1521个预测框(这里假定使用更大的分辨率图像作为输入,且anchor类型有9累)。所以引入anchor对于模型性能的提升,增大了优化的空间。(虽然引入anchor,使得文章的map下降了,但是召回升高了很多)

4. anchor的定义

yolov2中anchor定义不同于fasterrcnn是人工预设的比例和大小,文中通过k-means来聚类出k类anchor类,文章最终k=5。这里聚类时距离的度量值如下定义:
d(box,centroid)=1−IOU(box,centroid)d(box, centroid)=1-IOU(box,centroid)d(box,centroid)=1−IOU(box,centroid)
上式中centroid为聚类中心,box为其它待聚类的框,IOU为iou计算公式。可以看出IOU越大,两个框越近。

5. 细粒度的特征(Fine-Grained Features)

为了对小物体有更好的检测效果,文章想直接利用更为精细的特征来检测小物体,所以在进行最终的下采样之前,引入了passthrough的方法,该方法利用了下采样之前的特征是的对小物体的检测更为精确。
关于passthrough方法,网友给出的图非常详细,如下图所示:

6. 多尺度训练

yolov1中对于检测任务采用的是448×488448 \times 488448×488来训练网络。yolov2为了适应多尺度的物体检测,网络的训练时采用多种图片尺寸,这些尺寸为32的倍数,有{320,352,...,608}\{320, 352, ..., 608\}{320,352,...,608}。训练过程中,每10个batches后随机选择这些尺度中的一个输入网络进行训练。

二、如何更快

文中提出了一个新的网络结构叫做Darknet-19,网络结构如下图所示。

表中展示的是分1000类的网络结构。

对于检测任务,网络结构相对上述分类结构有所改动。

  1. 使用了三个3∗33*33∗3输出通道为1024的卷积替代上表中最后的卷积操作(最后的卷积不是1000那个输出层,而是输出前那个1024层)
  2. 将最后的3∗3∗5123*3*5123∗3∗512输出的feature接上述的passthrough结构,利用更精细的特征
  3. 对于输出,因为预测5种anchor的回归结果,且每个框分20类的概率,1类是否为正样本的概率和4个坐标回归参数共25个参数,每个anchor点需要预测125个值。

三、更强

文章的这部分主要是用来证明yolov2有较强的特征提取性能,采用了一些整理标签的方法,融合了COCO和Imagenet来做一些实验。

参考
  1. https://arxiv.org/abs/1612.08242
  2. https://zhuanlan.zhihu.com/p/47575929
  3. https://zhuanlan.zhihu.com/p/35325884

yolov2算法详解相关推荐

  1. Scale-Transferrable Object Detection算法详解(基于多尺寸目标检测)

    Scale-Transferrable Object Detection算法详解 论文背景 算法背景 算法简介 算法对比 算法详解 网络结构 DenseNet STM Object Localizat ...

  2. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  3. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  4. C++中的STL算法详解

    1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...

  5. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

  6. 基础排序算法详解与优化

    文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...

  7. 目标检测 RCNN算法详解

    原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...

  8. Twitter-Snowflake,64位自增ID算法详解

    Twitter-Snowflake,64位自增ID算法详解 from: http://www.lanindex.com/twitter-snowflake%EF%BC%8C64%E4%BD%8D%E8 ...

  9. 数据结构与算法详解目录

    数据结构与算法详解是一本以实例和实践为主的图书,主要是经典的数据结构与常见算法案例,来自历年考研.软考等考题,有算法思路和完整的代码,最后提供了C语言调试技术的方法. 后续配套微课视频. 第0章  基 ...

最新文章

  1. 玩转“网上邻居”之网络配置(二)
  2. sae mysql django_Python+Django+SAE系列教程12-----配置MySQL数据库
  3. 想要快速获客?送你 2 个小程序互推方法
  4. 13.MapReduce第3部分(编程实践WordCount)
  5. intellij远程调试_IntelliJ中的远程调试Wildfly应用程序
  6. Django之管理权限
  7. 作者:海沫,女,博士,中央财经大学信息学院副教授,CCF高级会员。
  8. ae2021最新遮罩路径图形扭曲插件:BAO Boa for Mac
  9. 雷军:智能制造将进一步带动中国企业在全球市场的全面崛起
  10. java中未解决的编译问题_java – 我遇到了这个异常:未解决的编译问题
  11. Mybatis之插入ListT
  12. 关于平面设计知识,设计师需要懂得印刷常识——黎乙丙
  13. Nacos连接不上:Ignore the empty nacos configuration and get it based on dataId
  14. 苹果系统安全吗?7种方法保护自己的隐私
  15. 数字电子钟仿真软件中的电路测试,如何利用Multisim仿真软件进行数字电子钟设计...
  16. 网站镶嵌网站显示代码
  17. PostgreSQL 源码解读(160)- 查询#80(如何实现表达式解析)
  18. 安卓 broadcast简介理解
  19. python的说法中错误的是_【单选题】下列关于python的说法中,错误的是( )。...
  20. android 辐射动画_Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

热门文章

  1. 开源的在线培训/在线考试/在线网校/企业内训系统介绍
  2. Google Adsense的愚人节整蛊
  3. 熵相似_高熵合金领域高被引的11篇文章,给过你那些启示?
  4. 用Html5实现天气预报的原理,HTML5 Canvas和jQuery实时天气预报代码解析「附源码」...
  5. 基于多源大数据的实时公共交通服务指数研究:以天津市为例
  6. 2021-11-11阿里巴巴双十一高峰如何逆袭,高并发秘诀
  7. vue加减计数器小案例
  8. linux tar.gz zip 解压缩命令
  9. 两个月备战PMP经验总结(转)
  10. 能否用双边市场理论研究虚拟化市场