YOLOV2、YOLO9000论文连接:https://arxiv.org/abs/1612.08242
YOLOv2主要是改进原有的YOLO算法,2017年,作者 Joseph Redmon 和 Ali Farhadi 在 YOLOv1 的基础上,进行了大量改进,提出了 YOLOv2 和 YOLO9000,重点解决YOLOv1召回率和定位精度方面的不足。

YOLO的缺点:

  • 对相互靠近的物体,以及很小的群体检测效果不好,这是因为一个网格只预测了2个框,并且都只属于同一类;
  • 对不常见的角度的目标泛化性能偏弱;
  • 定位不准确,尤其是大小物体的处理上,还有待加强;
  • 端对端网络在前期训练时非常困难,很难收敛;
  • 预训练的输入224x224,预测的输入448x448,模型需要适应图像分辨率的改变;

YOLOv2的改进:


1、Batch Normalization(批归一化)

  • 对网络的每一层的输入(每个卷积层后)都做了归一化,这样网络就不需要每层都去学数据的分布,收敛会更快;
  • map得到2%的提升;
  • 对模型起到正则化的效果;
  • 不需要再使用dropout层;

2、High Resolution Classifier(更高分辨率的分类器)

  • YOLOv1使用的是224x224的输入,在ImageNet上进行预训练;
  • YOLOv2则将预训练分成两步:
    先用224x224的输入从头开始训练网络,大概160个epoch,然后再将输入调整到448x448,再训练10个epoch,然后再fine-tuning自己的数据;
  • map提高了4%;

3、Anchor Boxes

  • 原来的YOLO是利用全连接层直接预测bounding box的坐标,而YOLOv2借鉴了Faster R-CNN的思想,引入anchor;
  • 首先将原网络的全连接层和最后一个pooling层去掉;
  • 缩减网络,由448x448–>416x416,最终输出13x13的feature map;
  • 检测的box变多,提高Object的定位准确率,YOLO(bounding box):7x7x2=98,YOLOv2(anchor box,每个box预测的5个值:tx,ty,tw,th和to):13x13x5=845;

4、Dimension Clusters

  • 利用K-means聚类(用欧式距离来衡量差异)对训练集的bounding boxes做聚类,计算出更好的Anchor模板;
  • 通过IOU定义距离函数,使得误差和box的大小无关:
  • 根据模型复杂度与recall,选择了K=5

5、Direct location prediction

  • Faster R-CNN 算法中,是通过预测 bounding box 与 ground truth 的位置偏移值tx,ty间接得到bounding box的位置
  • 由于tx,ty没有限制,会导致每个位置预测的边界框可以落在图片任何位置,这会导致模型的不稳定性,其公式如下:

    改进为
  • 预测边界框中心点相对于该网格左上角坐标(Cx,Cy)的相对偏移量,同时为了将bounding box的中心点约束在当前网格中;
  • 使用 sigmoid 函数将tx,ty(tx,ty是预测的关于anchor的偏移量)归一化处理,将值约束在0-1,这使得模型训练更稳定;
  • 即每个anchor只负责预测目标中心点落在的那个grid cell区域的目标;
  • to也是需要用sigmoid函数进行限制的;
  • cx和cy表示中心点落在的那个grid cell与图像左上角的横纵坐标距离,黑色虚线框是bounding box,蓝色矩形框就是预测的结果。

6、Fine-Graind Features

结合底层的信息

  • 输出13x13,融合相对更低层的26x26分辨率的特征图;
  • 通过passthrough layers来实现,能将相对底层的特征图与高层的特征图进行融合,提升小目标的检测效果;
  • 宽高变为原来的1/2,深度变为原来的4倍,26x26x64 —>13x13x256
    ,将13x13x256与13x13x1024进行融合—>13x13x1280,与论文中有所不同,作者的源码加入了一个1x1的卷积层;

7、Multi-Scale Training

多尺度训练

  • 将图片缩放到不同的尺寸训练,提升鲁棒性;
  • 每迭代10个batch,就将网络的输入尺寸进行随机选择(32的倍数);

8、网络结构的改进

  • 19个卷积层,5个池化层

  • 输入416x416x3,输出13x13x125(125=5x25=5x(20+4+1),5个先验框,20个类别,4个坐标值,1个置信度)

  • 去掉最后一个卷积层;

  • 添加3个3x3的卷积层(每个卷积层有1024个filter),最后连接一个1x1的卷积层,1x1卷积的filter个数根据需要检测的类来定(每个grid cell5个box=5x(5+20)=125)。
    即:

  • 每一个convolutional都是由conv2d + BN + LeakyReLu 组成;

参考博主:https://blog.csdn.net/u014380165/article/details/77961414
参考视频:https://www.bilibili.com/video/BV1yi4y1g7ro?p=2

YOLO学习笔记4——YOLOV2详解+论文解读相关推荐

  1. ELK学习笔记之Logstash详解

    0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...

  2. expect学习笔记及实例详解【转】

    1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示: 1.1 首行加上/usr/bin/expect 1.2 spawn: 后面加上需要执行的shell命令,比如说 ...

  3. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  4. oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系

    天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...

  5. PyQt5学习笔记——一文详解QObject

    QObject详解笔记1 一.简介 QObject是所有Qt对象的基类 二.功能作用 2.1 对象名称.属性 2.1.1 API setObjectName("唯一名称") 给QT ...

  6. shell入门学习笔记-12-命令详解: echo与printf

    系列目录与参考文献传送门: shell入门学习笔记-序章 命令详解 admindeMacBook-Pro:myshell admin$ type cd cd is a shell builtin ad ...

  7. CoAP学习笔记——CoAP格式详解

    0 前言 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词.在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的.但是对于小型 ...

  8. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  9. CoAP协议学习笔记——CoAP格式详解

    CoAP是受限制的应用协议(Constrained Application Protocol)的代名词.在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的.但是对于小型设备而言, ...

  10. 【Python全栈100天学习笔记】Day37MySQL详解(sql语句基本操作含索引、视图、存储过程)

    SQL详解 基本操作 我们通常可以将SQL分为三类:DDL(数据定义语言).DML(数据操作语言)和DCL(数据控制语言).DDL主要用于创建(create).删除(drop).修改(alter)数据 ...

最新文章

  1. 几个必知的python小知识
  2. N个数中选择M个数的组合(1MN)
  3. LeetCode:Sudoku Solver Valid Sudouku
  4. C/C++轻松破解别人程序的窗口标题
  5. php 付款,php – 接受付款最佳做法
  6. 电脑运行VirtualBox虚拟机总是提示0x00000000错误的解决方法
  7. 零基础学cad要多久_完整版的CAD技巧!3天轻松玩转CAD,零基础也能学会
  8. 5.3傅立叶变换意境级讲解
  9. iOS 腾讯云IM UIKit 升级XCode11后, 调用语音(取消) 崩溃问题
  10. 3、检验程序模块化指标---模块化系数-----labview宝典
  11. 原生开发什么意思_原生开发才是王道
  12. CUDA的下载与安装
  13. Angular—生命周期函数
  14. 失意的企业家,排队和俞敏洪做直播
  15. TestNG跳过某个测试方法
  16. 玉米社:SEM竞价推广预算设置方法
  17. (转)无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动
  18. 疫后新基建:加快从半工业半信息社会到智能社会
  19. Python math.fabs() 方法
  20. hbase安装配置 整合到hadoop

热门文章

  1. ectouch微信支付,带微信H5支付
  2. C/C++编程笔记:浪漫流星雨表白程序,七夕想表白,我教你啊!
  3. 【学习笔记】文献检索课程总结
  4. DTC标准故障码格式解析
  5. Visual Leak Detector(vld)无法显示内存泄露行号
  6. 【会议记录】0305
  7. 各省历年排污费入库金额(2008-2017年)
  8. Wpf初学 ---03设计一个优美的注册登录界面(连接数据库)
  9. mysql 修改表结构命令是_mysql修改表结构命令大全
  10. JAVA SSO单点登录原理以及实现方案