YOLOv2论文理解

2023-11-02

YOLO9000:Better, Faster, Stronger

论文YOLO9000: Better, Faster, Stronger的主要内容有三点:
1、作者提出了YOLOv2。
YOLOv2在YOLOv1的基础上,使用新的网络结构(darknet19)和技巧(Batch Normalization、High Resolution Classifier、Convolutional With Anchor Boxes等),提高了检测速度和检测精度。
2、作者提出了一种联合训练方法,可以同时使用检测数据集和分类数据集来训练检测模型,用分层的观点对物体分类,用检测数据集学习准确预测物体的位置,用分类数据集来增加可识别的类别量,提升鲁棒性。
3、作者基于YOLOv2提出了YOLO9000,可以实时检测九千多种物体。

我参考论文和代码进行了实验,YOLOv2相对于YOLOv1有很明显的提升,但是YOLO9000使用感受并不好。YOLO9000的主要问题在于很难调整合适的分层阈值,同时很多物体的检测精度过低。

由于工作和学习中对YOLOv2的研究比较多,对YOLO9000的研究并不深入,所以本文仅记录对YOLOv2的理解。

Better

YOLO相较于其他的state-of-the-art的检测系统有一些缺陷,主要表现在两点:
1、和Fast R-CNN相比,YOLO会产生较多的bounding boxes的定位错误。
2、和基于region proposal的检测系统相比,YOLO的Recall较低。

机器视觉的发展有着神经网络越来越大、越来越深的趋势。现在的检测系统,更好的检测性能往往伴随着更大的神经网络或者是多个检测模型的集成。YOLO的目标是高精度实时检测,所以期望在不增大网络、精度不下降的前提下来对定位错误和低Recall进行改善,为此作者尝试了一系列方法(如图所示)。
这里写图片描述

Batch Normalization

BN在消除对其他正则项依赖的同时,在帮助模型收敛方面有显著作用。通过对每个卷积层添加BN,YOLO的mAP有了2%的提升。BN对模型的泛化很有帮助,加入BN后,去掉了dropout模型依旧没有过拟合。

High Resolution Classifier

所有state-of-the-art的检测方法都在ImageNet上对分类器进行了预训练。从AlexNet开始,多数分类器都把输入图像resize到256 * 256以下,这会容易丢失一些小物体的信息。
YOLOv1先使用224 * 224的分辨率来训练分类网络,在训练检测网络的时候再切换到448 * 448的分辨率,这意味着YOLOv1的卷积层要重新适应新的分辨率同时YOLOv1的网络还要学习检测网络。
现在,YOLOv2直接使用448 * 448的分辨率来fine tune分类网络,好让网络可以调整filters来适应高分辨率。然后再用这个结果来fine tune检测网络。
使用高分辨率的分类网络提升了将近4%的mAP。

Convolutional With Anchor Boxes

YOLOv1使用卷积层之后的全连接层来直接预测bounding boxes的坐标。Faster R-CNN的做法和YOLO不同,使用精心挑选的anchor boxes来预测bounding boxes的坐标。Faster R-CNN的region proposal network(RPN)使用全卷积网络来预测相对anchor boxes的offsets和confidences。因为预测层是个卷积层,RPN在一个特征图上预测所有bounding boxes的offsets。和直接预测坐标相比,预测offsets简化了问题,而且网络更容易学习。
YOLOv2去掉了全连接层,使用anchor boxes预测bounding boxes。
YOLOv2一个池化层,使得卷积层的输出有更高的分辨率。
YOLOv2将输入图像的尺寸从448 * 448缩减到416 * 416,这样特征图的输出就是一个奇数,有一个中心栅格。作者观察到,有很多物体,尤其是较大的物体往往会位于图像的中心。有一个中心栅格的话可以用中心栅格专门去负责预测这些中心落在图像中心附近的物体,而不需要图像中心附近的4个栅格去预测这些物体。YOLOv2对图像进行了32倍的降采样,最终输出的特征图尺寸是13 * 13。

使用anchor boxes预测坐标的同时,YOLOv2还对对conditional class probability的预测机制和空间位置(栅格)做了解耦。
在YOLOv1将输入图像划分为S*S的栅格,每一个栅格预测B个bounding boxes,以及这些bounding boxes的confidence scores。
每一个栅格还要预测C个 conditional class probability(条件类别概率):Pr(Classi|Object)。即在一个栅格包含一个Object的前提下,它属于某个类的概率。且每个栅格预测一组(C个)类概率,而不考虑框B的数量。
YOLOv2不再由栅格去预测条件类别概率,而由Bounding boxes去预测。在YOLOv1中每个栅格只有1组条件类别概率,而在YOLOv2中,因为每个栅格有B个bounding boxes,所以有B组条件类别概率。
在YOLOv1中输出的维度为S * S * (B * 5 + C ),而YOLOv2为S * S * (B * (5 + C))。
这里写图片描述

使用anchor boxes, 模型的的精度有一点点下降,但是Recall有大幅上升。没有anchor box,我们的中间模型的mAP为69.5,Recall为81%。使用anchor boxes 模型的mAP为69.2,Recall为88%。尽管mAP有轻微的下降,但是Recall的增加意味着模型有更多的改进空间。

Dimension Clusters

尝试在YOLO中使用anchor boxes的过程中遇到了两个问题,第一个问题是如何选择anchor boxes。Faster R-CNN的anchor boxes是手工精心挑选的,但未必是最好的。虽然神经网络在训练过程中会逐渐学着调整预测的bounding boxes,让预测更合理,但有好的anchor boxes帮助可以神经网络让预测更简单。
机器学习的本质是学习数据中的概率分布,手工挑选的anchor boxes未必很好的符合训练集ROI的概率分布,使用K-means从训练集中聚类得到的anchor boxes可能更好。
YOLOv2中的anchor boxes是通过k-means在训练集中学得的。值得注意的是,因为使用欧氏距离会让大的bounding boxes比小的bounding boxes产生更多的error,而我们希望能通过anchor boxes获得好的IOU scores,并且IOU scores是与box的尺寸无关的。
为此作者定义了新的距离公式:

d(box,centroid)=1IOU(box,centroid)

作者使用了一系列k的值运行k-means,并画出了平均IOU,如图所示:
这里写图片描述
和使用手工挑选的anchor boxes相比,使用K-means得到的anchor boxes表现更好。使用5个k-means得到的anchor boxes的性能(IOU 61.0)和使用9个手工挑选的anchor boxes的性能(IOU 60.9)相当。这意味着使用k-means获取anchor boxes来预测bounding boxes让模型更容易学习如何预测bounding boxes。
这里写图片描述

Direct location prediction

尝试在YOLO中使用anchor boxes的过程中遇到的第二个问题就是模型变得不稳定,尤其是在训练的早期迭代。不稳定的主要因素来自对bounding box中心坐标x,y的预测。在RPN中,网络预测出偏移量 tx ty ,计算对bounding box中心坐标x,y的公式为:

x=
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLOv2论文理解 的相关文章

  • 用IDEA测试代码覆盖度

    IDEA自身就带有代码覆盖度测试工具 无需下载或安装其他任何工具 以下我们以P1 Graph为例讲一讲怎么用IDEA测试代码覆盖度 1 右键单击P1 Graph 2 点击Run Tests in P1 Graph 3 运行测试结束后再次右键
  • 出现windows启动服务失败(无法从命令行或调试器启动,需要安装InstallUtil.exe)的解决办法...

    两种方法1 从命令行安装2 选择项目 视图 自定义操作 然后将 安装 提交 回滚 卸载分别加入自定义操作 注意InstallClass属性为true 转载于 https www cnblogs com lovezhaolei p 38178
  • simclrv2框架

    机器学习 Machine Learning Huge Self Supervised Models are Strong Semi Supervised learners 巨大的自我监督模型是强大的半监督学习者 目录 Table of Co
  • 斐波那契(Fibonacci)查找算法

    一 黄金分割和斐波那契数列 二者的关系 黄金分割 这个词经常出现在一些建筑物的设计 黄金分割的近似值是0 618 斐波那契数列又称黄金比例数列 指的是这样的数列 1 1 2 3 5 8 13 21 34 这个数列从第三项开始 每一项都等于前
  • WebSocket协议介绍

    文章目录 前言 一 WebSocket是什么 二 WebSocket出现之前的实时技术 三 WebSocket应用场景 四 WebSocket协议栈 五 WebSocket与HTTP的区别 六 WebSocket握手过程 七 WebSock

随机推荐

  • 使用win10专业版自带远程桌面公司内网电脑

    在现代社会中 各类电子硬件已经遍布我们身边 除了应用在个人娱乐场景的消费类电子产品外 各项工作也离不开电脑的帮助 特别是涉及到数据采集和储存的场景 如安保监控 自动化流程等等 更是离不开电脑 在一般情况下 这些数据采集和记录的电脑会自成一个
  • OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例

    开发环境 windows ADT Bundle CDT OpenCV 2 4 4 android sdk 一 OpenCV2 4简介 OpenCV近年来发展迅猛 随着Android智能终端的发展 越来越多的传统科研平台都转向Android移
  • WIn10防火墙入站规则设置无效

    在将自己的笔记本纳入监控系统监控 通过SNMP进行监控 的过程中 遇到了服务无法开通的问题 笔记本是Win10的系统 并且是需要跨网段提供服务的 开通SNMP服务 首先要开通SNMP服务 安装 控制面板 gt 程序 gt 启用或关闭Wind
  • 成功编译RenderingPluginExample53的cpp项目的步骤

    备忘 unity中调用d3d功能的示例项目 两个方面的配置 1 为了在项目中能够找到d3d12 h d3d11 h d3d9 h等 做如下操作 在项目属性中 VC 目录 包含目录 中添加 C Program Files x86 Window
  • pclpy安装及安装过程中踩的坑

    由于学习需要不得不安装pclpy 一直踩坑 找了一下午才把问题解决了 特此记录 希望各位童鞋能够节约时间 1 创建虚拟环境 选择python版本 目前支持两个版本python 3 6以及python 3 7 windows系统 如果pyth
  • Python快速入门,看这一篇就够了

    大家好 我是老三 我最近在看一些人工智能相关的东西 大部分相关的框架 都是用Pyhon写的 老三会用Python 但谈不上多熟练 最近准备拿Python作为自己的第二语言 那么这期我们来一起快速梳理一下Python基础 起步 Python简
  • MODIS数据的简介和下载(二)——MODIS数据下载方式(FTP)

    前一篇我们已经介绍了MODIS数据的简介 参数以及相关的典型应用 这一篇我们来介绍下MODIS数据的下载方式 当然这边主要是介绍国外网站的下载方式 国内网站的普遍是在地理空间数据云和遥感集市下载 国外网站 NASA官网 下载方式主要介绍两种
  • 区块链中的哈希函数

    小白如何秒懂区块链中的哈希计算 当我在区块链的学习过程中 发现有一个词像幽灵一样反复出现 哈希 英文写作 HASH 那位说 拉稀 同学你给我出去 这个 哈希 据说是来源于密码学的一个函数 尝试搜一搜 论文出来一堆一堆的 不是横式就是竖式 不
  • 牛客网-网易2018校园招聘编程题真题集合-解题思路及源码

    因为牛客网上的题目内容有版权声明 暂时就不复制题目了 需要的同学请自行登录牛客网获取 1 魔法币 思路 分析题目中发现 魔法机器1只能产生奇数的魔法币 而魔法机器2只能产生偶数的魔法币 本题目采用从结果倒推的思路 比如例子中需要10个魔法币
  • string转换成int的几种方式

    写在前面 遇到了多次oj的题目需要将string转换为int或者将int转换为string 每次遇到都是现查 一直没有好好的总结导致总是忘记 现在做个总结 首先是今天遇到的方式 采用string头文件里定义的string类型转换的函数 st
  • springboot项目配置多数据库连接

    前言 之前编写了一篇maven项目创建多数据库的方法 现在对springboot更了解之后 将把springboot项目配置多数据库的方法贴出来 从项目开始创建到调用数据库依次写出来 PS 本项目使用的是IDEA进行创建 创建springb
  • engine.js[dwr]javascript

    Copyright 2005 Joe Walker Licensed under the Apache License Version 2 0 the License you may not use this file except in
  • SQL注入绕过的姿势

    1 注释符绕过 常用的注释符有 1 注释内容 2 注释内容 3 注释内容 eg union select 1 2 union select 1 2 构造闭合 union select 1 2 2 大小写绕过 常用于 waf的正则对大小写不敏
  • 搭建和部署nuxt项目

    说在前面的话 vue js开发的SPA是不利于seo的 搜索引擎对它支持的并不是太好 百度根本就不可以在SPA应用的页面抓取数据 这对很看重seo优化的网站来说肯定是不能容忍的 而使用nuxt开发的网站就可以让爬虫爬取 而且它是基于vue
  • 神经网络轮廓特征是什么,神经网络轮廓特征图

    神经网络 的四个基本属性是什么 神经网络 的四个基本属性 1 非线性 非线性是自然界的普遍特征 脑智能是一种非线性现象 人工神经元处于两种不同的激活或抑制状态 它们在数学上是非线性的 由阈值神经元组成的网络具有更好的性能 可以提高网络的容错
  • 游学电子教您:如何给原子的imx6开发板烧录Linux系统

    义县游学电子科技有限公司官方帐号 科技爱好者 今天游学电子带您一起学习下imx6开发板如何烧录系统 使用的开发板是原子的 这里有个注意的地方是我们烧录的系统是到emmc中 而非sd卡中 01 步骤方法 把开发板的启动拨码开关拨到 USB 模
  • FPN、PAN在计算机视觉(CV)领域的意思

    FPN Feature Pyramid Network的首字母缩写 即特征金字塔网络的意思 PAN Pixel Aggregation Network的首字母缩写 即像素聚合网络的意思 名词出处 Path Aggregation Netwo
  • 2022-03-14

    一 你在工作中用到了什么设计模式 怎么用的 1 单例模式 编写kafka共用sdk写入的时候 使用了单例模式 不管new多少次kafkaProducer实例 最终都是一个 采用了静态内部类初始化方式 使用阿里云oss sdk的时候 创建的c
  • 【Git系列】Git下载与安装教程

    Git下载与安装教程 1 下载 2 安装 其他系列 Git最详细的体系化教程 1 下载 官网下载地址 https git scm com downloads 淘宝镜像下载地址 http npm taobao org mirrors git
  • YOLOv2论文理解

    YOLO9000 Better Faster Stronger 论文YOLO9000 Better Faster Stronger的主要内容有三点 1 作者提出了YOLOv2 YOLOv2在YOLOv1的基础上 使用新的网络结构 darkn