YOLOv1算法小记

YOLOv1算法小记

目录

YOLO算法小记

一、检测算法的发展

1.没有CNN之前:two-stage

2.有了CNN之后:RCNN结构(end-to-end)

二、One-Stage检测算法的设计思想

三、Yolo v1:一次伟大的尝试

1.YOLOv1步骤

2.损失函数

3.优缺点


一、检测算法的发展

 

1.没有CNN之前:two-stage

输入一张图片(黑白)→生成region proposal(比较像素间的相似程度,对不同色块排列组合,得到备选框)→提取特征(尺度不变、光照不变、旋转不变)→支持向量机SVM/神经网络→得到最终结果

2.有了CNN之后:RCNN结构(end-to-end)

 

二、One-Stage检测算法的设计思想

①继承two-stage算法端到端思想

②去掉生成region proposal的冗余步骤

那么效果怎么保证呢?下面我们来看一下YOLO算法:

YOLOV1的灵感来源就是faster rcnn中的rpn。yolov1可认为是one-scale RPN,因为yolo和RPN都one stage,区别就是二分类和多分类。

在介绍YOLO的步骤之前,先写一下神经网络大概的结构:

backbone:用于提取特征(浅层网络提取物理信息,如corner、edge等,得到一些shape信息,后面再经过深层提取,信息会更加具象,得到object特征,更加具有语义性,最终得到feature map)

neck:起到承上下的作用,连接前后两个部分

head:功能性模块,在YOLO里就是detection检测和classification分类

三、Yolo v1:一次伟大的尝试

1.YOLOv1步骤

①对每张图像打格(cell):S*S(448*448→7*7)

    图像中,物体中心落在哪个个字,那个格子就负责那一个物体。

(在经过网络特征提取后,不同格子在特征图中由不同张量表示,蓝色的格子只预测狗,黄色只预测自行车,红色只预测汽车)

②每个格子预测B个bounding box,同时给出预测框的confidence(置信度)

   文中的B=2,那么为什么一个格子要预测两个边框呢,是因为只预测一个边框的话可能不好,准确度不高,所以需要多预测几个。但是预测的边框多了计算量就要提升,所以这里选择预测两个,选择其中比较好的那个。

(5是bbox+confidence的 参数量,20是文章中总共分了20类)

bounding box实际上是个四维向量:x、y为中心点坐标(一般标注的框的中心可认为是物体的中心),w、h为框的宽和高

confidence置信度(包括两部分):

·是否是物体的概率Pr(object)     是 0~1之间的某个数字

 ·IOU交并比:预测框与真实框重合部分与并集部分的比,越大越好

Tensor表示:

2.损失函数

2.1物体边框回归

欧氏回归,就是计算偏差距离

问:第二行w,h 为什么要开根号?

答:由线性函数和根号函数的函数图像可知,当物体w或h较小时,两函数图像差异不大,对loss的影响不大;但是若物体w或h较大时,两函数图像相差很多,对loss有很大影响。如果不用根号进行压缩,那么loss就会被大物体所左右。使用根号可以使得大小物体对loss的影响差异不大,降低了大物体的影响。

2.2置信度回归

λnoobj=0.5:非物体cell太多,noobject会产生非常多的loss,而物体cell较少,产生的loss就少一些,使得网络会去学习noobject产生的特征(主要学习背景,而不是去真实目标特征)。为了平衡这种结果,就将这个大的loss乘以一个小的权重,减轻noobject的影响。

2.3分类回归

上述形式已不常用,分类预测最常用的是softmax(定义、数学公式、编码、求导都要掌握,还有和交叉熵的融合及其求导)

3.优缺点

优点:one-stage速度快

缺点:

①对拥挤物体检测不太好(可能几个物体的中心落到了同一个cell中)

②对小物体检测不好

③对new width-height ratio物体不好

④没有batch normalize

 

附:

关于NMS:NMS的中文名称是非极大值抑制,顾名思义,就是抑制不是极大值的元素,亦或是进行局部范围的最大值搜索。如果要简单理解nms的计算过程的话,我们不妨假设,某张图片被模型检测出了10个box,此时可先按照模型输出的置信度,对着10个box进行排序(由大到小),然后保留置信度最大的那个box1,用后面的box2、box3等依次和box1计算IoU,如果得到的IoU大于某一阈值,我们就将这个box删去,即:我们任务box2和box1框住的是同一个物体,但是box1更准。待第一轮循环完成后,再新增保留除box1外置信度最高的boxn,而后继续用其他box和这个boxn计算IoU,并一直循环至没有box。至此,所有被保留下来的box就是最终的输出结果了。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值