YOLOV1算法详述

1.1 背景
yolov1由作者joseph发表在CVPR2016上,是经典的one-stage检测算法。是把bounding box的坐标和宽高像分类网络那样预测出来。是end to end 的一种网络结构,检测速度快。

论文标题: 《You Only Look Once: Unified, Real-Time Object Detection》
论文地址:https://arxiv.org/pdf/1506.02640.pdf

1.2 原理介绍
1.2.1 同时预测多个box位置和类别
1.2.2 端到端的目标检测算法识别
1.2,3 速度快
实现回归功能的CNN并不需要复杂的设计过程
直接选用整图训练模型,能更好的区分背景和目标
1.2.4 图像被分成SxS个格子
1.2.5 包含GT物体中心的格子负责检测相应的物体
1.2.6 每个格子预测B个检测框及其置信度,以及c个类别概率
1.2.7 bbox信息(x,y,w,h)为物体的中心位相对格子位置的偏移及宽度和高度,均被归一化
1.2.8 置信度反映是否包含物体,以及包含物体情况下位置的准确性
置信度的计算公式:
C = P r ( O b j e c t ) I O U p r e d t r u t h C = P_r(Object) IOU_{pred}^{truth} C=Pr(Object)IOUpredtruth
其中 P r ( O b j e c t ) ∈ P_r(Object)\in_ {} Pr(Object) { 0, 1 }
1.2.9 网络使用小卷积,及:1 X 1, 3 X 3 (GoogLeNet),减少参数及计算量
1.2.10 v1采用GoogleNet 为backbone

1.3 网络结构

整个网络执行流程简单:只需要三个步骤:
(1)resizes the input image to 448 × 448
(2) runs a single convolutional network on the image
(3) thresholds the resulting detections by the model’s confidence.
在这里插入图片描述

如上图所示,输入图片被划分为sxs个单元格,每个单元格独立作检测。If the center of an object falls into a grid cell, that grid cellis responsible for detecting that object.

可以通过yolo_v1的structure来进一步理解,相比faster r-cnn那种two-stage复杂的网络结构而言,yolo_v1的网络结构简单多。其基本思想是这样:预测框的位置、大小和物体分类都通过CNN暴力predict出来。
在这里插入图片描述

上面是结构图yolo_v1结构图,由24个卷积层,和2个fullly conneced layer 组成,其输出是一个sxsx30的张量,sxs表示把输入图片划分位sxs的网格,每一个小单元的另一个维度等于30。30=(2*5+20)。代表能预测2个框的5个参数(x,y,w,h,score)和20个种类。

输出tensor计算公式:

SxSx(B∗5+C)= 7x7x(2*5 + 20) = 1470

SxS表示网格数量,B表示每个网格生成框的个数,C表示能检测识别的种类。

可以看出输出张量的深度影响yolo_v1能检测目标的种类。v1的输出深度只有30,意味着每个单元格只能预测两个框(而且只认识20类物体),这对于密集型目标检测和小物体检测都不能很好适用。

1.4 损失函数

yolo是端到端训练,对于预测框的位置、size、种类、置信度(score)等信息的预测都通过一个损失函数来训练。yolo_v1就是选用最简单的SSE作为损失函数,其计算公式如下:

l o s s = ∑ i = 0 s 2 c o o r d E r r + i o u E r r + c l s E r r = loss=\sum_{i=0}^{s^2}coordErr + iouErr + clsErr= loss=i=0s2coordErr+iouErr+clsErr=
λ c o o r d ∑ i = 0 s 2 ∑ j = 0 B l i j o b j [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 ] + λ_{coord}\sum_{i=0}^{s^2}\sum_{j=0}^Bl_{ij}^{obj}[(x_i−\hat{x}_i)^2+(y_i−\hat{y}_i)^2]+ λcoordi=0s2j=0Blijobj[(xix^i)2+(yiy^i)2]+
λ c o o r d ∑ i = 0 s 2 ∑ j = 0 B l i j o b j [ ( w i − w ^ i ) 2 + ( h i − h i ) 2 ] + λ_{coord}\sum_{i=0}^{s^2}\sum_{j=0}^Bl_{ij}^{obj}[(\sqrt{w}_i−\sqrt{\hat{w}_i})^2+(\sqrt{h_i}−\sqrt{h_i})^2]+ λcoordi=0s2j=0Blijobj[(w iw^i )2+(hi hi )2]+
∑ i = 0 s 2 ∑ j = 0 B l i j o b j [ ( c i − c ^ i ) 2 ] + \sum_{i=0}^{s^2}\sum_{j=0}^Bl_{ij}^{obj}[(c_i - \hat{c}_i)^2] + i=0s2j=0Blijobj[(cic^i)2]+
λ n o o b j ∑ i = 0 s 2 ∑ j = 0 B l i j n o o b j [ ( c i − c ^ i ) 2 ] + λ_{noobj}\sum_{i=0}^{s^2}\sum_{j=0}^Bl_{ij}^{noobj}[(c_i -\hat{c}_i)^2]+ λnoobji=0s2j=0Blijnoobj[(cic^i)2]+
∑ i = 0 s 2 ∑ c ∈ c l a s s e s [ ( p i ( c ) − p ^ i ( c ) ) 2 ] \sum_{i=0}^{s^2}\sum_{c\in{classes}}[(p_i(c) -\hat{p}_i(c))^2] i=0s2cclasses[(pi(c)p^i(c))2]

S 2 S^2 S2表示网格数,在这里是7x7。B表示每个单元格预测框的个数,这里是2。
第一行就方差和( sum-squared error)来当作位置预测的损失函数,第二行用根号总方误差来当作宽度和高度的损失函数。第三行和第四行对置信度confidence也用SSE作为损失函数。第五行用SSE作类别概率的损失函数。最后将几个损失函数加到一起,当作yolo v1的损失函数。

l i j o b j l_{ij}^{obj} lijobj 取值为0和1,即单元格内是否有目标。
λ c o o r d = 5 λ_{coord} = 5 λcoord=5
λ n o o b j = 0.5 λ_{noobj} = 0.5 λnoobj=0.5

1.5 网络训练
1.5.1 ImageNet 1000 类数据预训练
1.5.2 使用预训练参数 (20 个conv)来初始化YOLO ,去掉FC层, 并训练VOC20
1.5.3 将输入图像分辨率从224 x 224 Resize到448 x448。
1.5.4 训练时B个bbox的GT设置相同

1.6 优缺点

缺点:
   输入尺寸固定,进入YOLO 检测层,进行最后检测的时候,输入图像尺寸是固定的,没有采用多尺度特征检测
   小目标检测效果差
    每个格子包含多个目标时只预测一个类别(IOU最高)
   损失函数中没有区分大物体和小物体IOU的err,对网络LOSS贡献值的影响。一般来说小物体对LOSS值 影响大
   同一物体出现不常见的不同长宽比时,表现出较差的泛化能力、
   
 优点:
   速度快,在没有使用BN时能达到45FPS
   网络结构简单,是一种end to end 的网络结构
   背景区分度高,能够reasion more  contexture  infomation

1.7 网络性能
在这里插入图片描述
1.8总结
v1对于整个yolo系列的价值,即v2/v3还保留的特性,可以总结为3点:
1.8.1 leaky ReLU,相比普通ReLU,leaky并不会让负数直接为0,而是乘以一个很小的系数(恒 定),保留负数输出,但衰减负数输出;公式如下:
y = { x , x > 0 0.1 x , o t h e r w i s e y =\begin{cases} x, x>0\\0.1x,otherwise\end{cases} y={x,x>00.1x,otherwise
1.8.2. 分而治之,用网格来划分图片区域,每块区域独立检测目标;
1.8.3. 端到端训练。损失函数的反向传播可以贯穿整个网络,这也是one-stage检测算法的优势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值