各位同学好,今天和大家分享一下 YOLOV2 目标检测算法的原理,建议大家先学习一下 YOLOV1,可以看我的上一篇文章:https://blog.csdn.net/dgvv4/article/details/123767854

YOLOV1 尽管速度非常快,但精度低,定位性能较差,召回率低,检测小目标和密集目标的效果较差。因此 YOLOV2 做了如下的改进


1. Batch Normalization

Batch Normalization 将神经元的输出减去均值除以标准差,变成以0为均值,标准差为1的分布。由于很多激活函数,如 sigmoid 和 tanh 函数在0附近是非饱和区,如果激活函数的输入太大获太小的话,就陷入了激活函数的饱和区,导致梯度消失,难以训练使用 Batch Normalization 强行将神经元的输出集中到0附近。

Batch Normalization 在模型训练阶段和测试阶段不同。

在训练阶段,如果batch_size=32时,即每个batch处理32张图片,每张图片经过一个神经元都会输出一个响应值,那么某层的某个神经元就会输出32个响应值;对这32个响应值求均值、标准差、再做标准化;将标准化之后的响应乘以再加上,其中每个神经元都需要训练一组这样就将神经元的输出限制在以0为均值且1为标准差的分布中,输出限制在非饱和区加快收敛,防止过拟合。

在测试阶段,均值、方差、 都使用训练阶段全局求出的结果。例如测试的均值使用训练阶段很多batch的均值的期望

公式如下, 是一个很小的数,防止分母为0,


2. 高分辨率的分类器

一般的图像分类网络都是以较小的分辨率在imagenet数据集上训练的,如224*224。而YOLOV1的模型输入图像的分辨率是448*448,那么在较小分辨率下训练的网络再拿到大分辨率的目标检测模型中去训练,网络训练时就需要从小分辨率切换到大分辨率,导致性能的降低。YOLOV2直接在448*448的图像分类数据集上训练骨干网络,使网络适应大分辨率,提高了3.5%的map


3. 先验框

在YOLOV1中,图像被划分成7x7的网格,每个网格生成2个预测框,哪个预测框和真实检测框的IOU交并比大,那个预测框就负责拟合真实检测框,交并比小的预测框就被淘汰了。两个预测框没有长宽限制,都是随机变化的。而在YOLOV2中预测框有了初始的参考框,预测框只需要在原有的位置上微调,调整偏移量就可以了。

在YOLOV2中一张图片被划分成13*13个网格,每个网格有5种长宽尺度大小不同的先验框,即5种不同的长宽比。每个先验框对应一个预测框,预测只需要输出预测框相对于先验框的偏移量。

人工标注的真实检测框的中心点落在哪个网格内,就应该由该网格中产生的先验框中与真实检测框IOU交并比最大的那个先验框来预测,预测结果是预测框相较于自己的先验框的偏移量


4. 模型输出结果

在YOLOV1中没有使用先验框,图片被划分成7*7的网格,每个网格生成2个预测框,每个预测框包含4个位置参数和1个置信度参数,每个网格有包含20个分类类别的条件概率因此每个网格有5+5+20个参数模型输出特征图的shape就是[7,7,30]

在YOLOV2中,图片被划分成13*13的网格,每个网格生成5个先验框,每个先验框包含4个位置参数、1个置信度参数、20个类别的条件概率。因此每个网格有5*(4+1+20)=125个参数模型输出特征图的shape就是[13,13,125]

如下图,模型输入图像shape为[416,416,3],经过一系列卷积操作,输出 13*13*125 的tensor,每个网格包含5个先验框,每个先验框有(5+20)*5个参数


5. 预测框微调

模型输出 预测框相较于先验框的偏移量坐标偏移量(tx,ty),宽高偏移量(tw,th)。其中(tx,ty)可以是从负无穷到正无穷的任何数,为了防止坐标偏移过大,给偏移量添加sigmoid函数 ,将坐标偏移量限制在0-1之间,将预测框的中心点限制在它所在的网格内

如下图,(cx,cy)是先验框中心点所在的网格的左上坐标(归一化后的坐标)(pw,ph)是和真实框交并比最大的先验框的宽高。由于目标物体可能很大,预测框也很大,将先验框的宽高乘以指数ex


6. 损失函数

YOLOV2 遍历了13*13个网格的所有预测框,

(1)第一项是置信度误差。先验框和真实检测框的IOU交并比是否小于阈值。小于则为1,否则为0。将先验框和检测框的中心点重合计算交并比。让不负责预测物体的先验框的置信度越接近0越好

(2)第二项是预测框与先验框的位置误差。判断是否是前12800次迭代,是否是模型训练的早期。满足则为1,否则为0。让先验框的位置参数(x,y,w,h)与预测框的位置参数尽量接近

(3)第三项是IOU最大的先验框负责检测物体。是为1,否为0。这里假设真实检测框由IOU最大的先验框预测对于那些IOU大于阈值但非最大值的先验框,就忽略它的损失定位误差要求真实检测框的位置和预测框的位置尽可能接近,置信度误差要求先验框与真实框的IOU和预测框的置信度尽可能一致,分类误差要求真实框的类别和预测框的类别尽可能一致。


7. 细粒度特征

把浅层的网络输出的特征图分成两个分支,一个分支卷积操作,另一个分支将特征图拆分成四份并在通道维度上堆叠,将两个分支叠加,那么该特征图既包含了底层的细粒度信息,以及经过卷积后的高层的信息。整合了不同尺度的信息,有利于小目标的检测。

拆分方法等同于YOLOV5的focus方法,如下图,将一张特征图变成四张,每张特征图的长宽缩减为原来的一半,通道数变成了原来的四倍

【目标检测】(6) YOLOV2 目标检测在V1基础上的改进相关推荐

  1. 基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法

    4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的.前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图 ...

  2. 基于Faster RCNN的医学图像检测(肺结节检测)

    Faster-R-CNN算法由两大模块组成:1.PRN候选框提取模块 2.Fast R-CNN检测模块.其中,RPN是全卷积神经网络,用于提取候选框:Fast R-CNN基于RPN提取的proposa ...

  3. 目标检测之YOLOv2

    写在前面 前篇文章介绍了基于回归方法的深度学习目标检测方法(YOLO,SSD),本篇将介绍YOLO的升级版YOLOv2,其主要有两个大方面的改进:(1) 使用一系列的方法对YOLO进行了改进,在保持原 ...

  4. 目标检测 | YOLO系列超全讲解v1,v2,v3

    前言 一.YOLOv1 1. 网络结构 2. 实现方法 3. 损失函数 4. 缺点 二.YOLOv2 1. 网络结构 2. 改进方法 3. YOLO9000 4. 网络训练细节 三.YOLOv3 1. ...

  5. 目标检测算法YOLO-V2详解

    ❝ 上期我们一起学习了YOLO-V1算法的框架原来和损失函数等知识,如下: 目标检测算法YOLO-V1算法详解 目标检测模型YOLO-V1损失函数详解 [文末领福利] ❞ 今天,我们一起学习下YOLO ...

  6. 目标检测算法——YOLOv2

    文章目录 1.YOLOv2简介 2.YOLOv2的精度改进(Better) 1)Batch Normalization 2)High Resolution Classifier 3)Convoluti ...

  7. 学界 | 斯坦福提出高速视频目标检测系统NoScope:速度超现有CNN上千倍

    卷积神经网络在目标检测任务上已经取得了优良的表现,但它们的计算成本比较高.速度比较慢,不适用于大规模的实时视频处理.为了解决这个问题,斯坦福大学的几位研究者提出了一个名叫 NoScope 的系统,将目 ...

  8. MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020

    来源 | 微软研究院AI头条(ID: MSRAsia) 编者按:目标检测与目标跟踪这两个任务有着密切的联系.针对目标跟踪任务,微软亚洲研究院提出了一种通过目标检测技术来解决的新视角,采用简洁.统一而高 ...

  9. 融合视频目标检测与单目标、多目标跟踪,港中文开源一体化视频感知平台 MMTracking...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑丨机器之心 魔王 香港中文大学多媒体实验室(MMLab)OpenMMLab 开源一体化视频目标感知 ...

最新文章

  1. 大型网站的灵魂——性能优化
  2. 【字符串操作之】大小写转换→→toLocaleLowerCase、toLocaleUpperCase
  3. the server did not provide any additional information
  4. 睡眠 应该用 a加权 c加权_在神经网络中提取知识:学习用较小的模型学得更好...
  5. 简单解决Ubuntu修改locale的问题
  6. 终于我还是放手了, 但是只想说,暂别 Aptana Studio 3,Phpstorm来吧!(附:个人遇到的小问题的解决方法)...
  7. CentOS切换运行级别 图形模式/命令行模式
  8. RNN调试错误:lstm_cell = tf.contrib.rnn.core_rnn_cell.BasicLSTMCell(lstm_size) 方法已失效
  9. 收藏!最强行人检测算法思维导图
  10. linux screen vim 颜色不一样,tmux中的Vim显示错误的颜色
  11. java语言有哪些优点
  12. Java初学者也可以实现的图书系统小练习
  13. 数据可视化:经典图表大全
  14. trans系列是sci几区_怎么确定SCI论文期刊是几区的?
  15. Python爬虫——Scrapy框架的基本使用
  16. 自旋电子学与量子计算机,科学网—诺贝尔物理奖介绍2007:巨磁阻和自旋电子学 - 欧阳峰的博文...
  17. isalpha() / isupper() / islower()函数
  18. 线性代数学习笔记4-1:线性方程组的数学和几何意义、零空间/解空间/核
  19. Selenium:动态页面模拟点击
  20. 编程的第二个十年:关于Real™编程器的全部

热门文章

  1. Java List 更换指定位置的元素
  2. RxJava 实现模糊搜索
  3. 机器学习三要素之数据、模型、算法
  4. GIT入门笔记(4)- GIT 安装
  5. imagick API 中文说明
  6. ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS
  7. WPF初探--RichTextBox
  8. DirectX903D 颜色
  9. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(三)使用多边形将轮廓包围
  10. python私有属性怎么定义_Python中私有属性的定义方式