赞
踩
目录
输入一张图片(黑白)→生成region proposal(比较像素间的相似程度,对不同色块排列组合,得到备选框)→提取特征(尺度不变、光照不变、旋转不变)→支持向量机SVM/神经网络→得到最终结果
①继承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分类
①对每张图像打格(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.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(定义、数学公式、编码、求导都要掌握,还有和交叉熵的融合及其求导)
优点: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就是最终的输出结果了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。