yolo系列学习笔记----yolov1

目录

1,滑动窗口技术 

2,什么是全连接层

3.什么是RCNN

4,yolo的算法原理

5,yolo的结构及原理

 6,YOLO的损失函数

7,训练时的参数设置

8,yolo的优缺点

9,和双阶段网络的对比


1,滑动窗口技术 

     在 W×H 的图像中,按一定规律移动 w×h 的窗口(W>>w, H>>h),对窗口内像素点的像素值进行一系列运算,运算结束后窗口向右或向下移动一步,直到完成对整幅图像的处理。

2,什么是全连接层

全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。

                                                                             图1

  起到分类器的作用。对前层的特征进行一个加权和。 

                                                                        公式1

怎么样把3x3x5的输出,转换成1x4096的形式 ,可以理解为在中间做了一个卷积

preview

                                                                         图2

       其中每一个绿色的卷积的权重是不相同的。这样,全卷积得到的值是不同的,即和公式1一样,w是不相同的。通过这样的处理,卷积后相加变为1个值。相同的操作4096次,则得到4096个值。

因为我们有4096个神经元
我们实际就是用一个4096个3x3x5的卷积层去卷积激活函数的输出。

      全连接层。可以理解为在中间做了一个卷积。这一步卷积一个非常重要,它的作用就是把分布式特征representation映射到样本标记空间,就是大大减少特征位置对分类带来的影响。因为全连接层减少了位置对分类的影响,所以它并不适合分割。一般使用是两层一起使用,为了增加非线性性。

      全连接层之前的作用是提取特征,全连接层的作用是分类。

3.什么是RCNN

R-CNN的全称是Region-CNN

RCNN(Region with CNN feature)是卷积神经网络应用于目标检测问题的一个里程碑的飞跃。CNN具有良好的特征提取和分类性能,采用RegionProposal方法实现目标检测问题。算法可以分为三步(1)候选区域选择。(2)CNN特征提取。(3)分类与边界回归。
 

4,yolo的算法原理

Yolo没有直接使用滑动窗口的技术,是直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产统一大小的特征图。特征图中的每个元素也对应原始图像上的一个小方块。这样用每个元素来可以预测那些中心点在该小方格内的目标。是一种end-to-end的目标检测网络。

yolov1没有引入锚框,算单阶段无锚框的一个分支。

5,yolo的结构及原理

yolo 的网络结构

网络架构受GoogleNet启发,共24个卷积层,后面接了2个FC层。

具体的步骤,其实就是以下三步:

1)输入图片resize到448x448,放缩到这个尺寸是为了后面整除来的方便

2)经过CNN卷积神经网络

3)使用NMS(非极大值抑制)去除多余框,得到最后预测结果

详细剖析第二个步骤:

        通过卷积神经网络,其实相当于将图像分为7 * 7网格,每个小格称为一个grid cell(网格)。此后以每个单元格为单位进行预测分析。

​       最后一个全连接层是如何从4096变成7x7x30的。其实,他中间隐含了一层,即把4096这一层全连接到一个大小为1470的中间层,然后再通过这个中间层得到7x7x30的tensor,如上图所示。

每个单元格需要做三件事:

1)如果一个object的中心落在某个单元格上,那么这个单元格负责预测这个物体(论文的思想是让每个单元格单独干活)。

2)每个单元格需要预测B个bbox值(bbox值包括坐标和宽高),同时为每个bbox值预测一个置信度(confidence scores)。也就是每个单元格需要预测B×(4+1)个值。

3)每个单元格需要预测C(物体种类个数)个条件概率值.(YOLO最大能预测49个种类)
每个单元格只能预测一种物体,并且直接预测物体的概率值。但是每个单元格可以预测多个bbox值(包括置信度)。

单元格的数据详解

每个单元格预测的B个(x,y,w,h,confidence),同时需要预测C(物体种类个数)个条件概率值

对于这些值的解释,有个博客写得不错,这里是直接借用博客​​​​​​Object Detection -- 论文YOLO(You Only Look Once: Unified, Real-Time Object Detection)解读_DFan的NoteBook-CSDN博客

借用其图像:讲解的还是比较细致的

​​​​​​

 预测的B个(x,y,w,h,confidence)具体的含义为:

1)(x,y)的意思

是bbox的中心相对于单元格的偏移

 2)(w,h)是什么意思

是bbox相对于整个图片的比例

 3)置信度是什么意思

是看预测的bbox和真实的标记框之间的关系,到底有没有目标,有目标n个预测框的交并比是多少。

 需要预测C(物体种类个数)个条件概率值的具体含义为:

 

 6,YOLO的损失函数

损失函数可以分为3个部分,每个部分都使用均方误差

这里写图片描述

       每个单元格不一定都包含object,如果没有object,那么confidence就会变成0,这样在优化模型的时候可能会让梯度跨越太大,模型不稳定跑飞了。为了平衡这一点,在损失函数中,设置两个参数λcorrd和λnoobj,其中λcorrd控制bbox预测位置的损失,λnoobj控制单个格内没有目标的损失。

注意这里λcorrd和λnoobj两个参数,λcorrd一般取5增加了,其作用就是为了加强坐标回归的误差的影响。从上面我们可以知道,当我们不加这一个参数时,坐标回归由于只计算负责预测物体的bounding box的误差,所以它的值会比较小,而下面会介绍的分类误差由于需要计算所有类别的误差,因此分类误差的值会比较大。然而,坐标回归误差和分类误差其实同等重要,如果分类误差过大则会导致模型偏向于分类,而坐标回归的误差由于比较小受模型的重视程度会比较小,所以为了避免这种情况,作者加入了上面的参数,使得坐标回归的误差的影响增大。

      λnoobj的取值为0.5,其目的是降低不负责预测物体的bounding box对模型的影响。显然,负责预测物体的bounding box的数量是很少的,而它们又比较重要,因此通过减少不负责预测物体的bounding box对模型的影响,来变相的增加了它们的权重。

 每个部分都使用均方误差的原因是减少误差
1)对于预测的bbox框,大的bbox预测有点偏差可以接受,而小的bbox预测有点偏差就比较受影响了,如下图:

对于这种情况,使用先平方根再求均方误差,尽可能的缩小小偏差下的影响。 

7,训练时的参数设置

8,yolo的优缺点

 缺点

1)YOLO对相互靠的很近的物体,还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。

2)对测试图像中,同一类物体出现的新的不常见的长宽比和其他情况是。泛化能力偏弱。

3)YOLO的定位准确率相对于fast rcnn比较差。但是YOLO对背景的误判率比Fast RCNN的误判率低很多。这说明了YOLO中把物体检测的思路转成回归问题的思路有较好的准确率,但是bounding box的定位不是很好

9,和双阶段网络的对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值