目录
一、概述
选择 Faster-rcnn之类还是 YOLO 都是根据任务需求来定的
YOLO一般速度快,一个cnn的回归下来就完事,M-rcnn 一般只有5fps,达不到实时的要求
YOLO也可以自己构建网络,网络越复杂,速度越慢;而网络越简单,速度越快
衡量算法的指标:fps、 mAP
mAP指标:综合衡量检测效果
精度:检测到的东西和实际的框吻不吻合
召回率(recall):有没有一些要检测到的框没检测到
而精度和recall在很多问题上都是矛盾的,一个高了,另一个就低了,所以要用mAP值
IOU: 真实值和预测值的交集 / 真实值和预测值的并集 ,所以IOU越高说明越重合,越好
精度 和 召回率 理解
FN理解:错误的当作负例,本例中即把女生错误的检测为男生,为0个
精度: 归正确的正例 TP / (归正确的正例TP + 当成正例的负例FP) 20 / (20 + 30)
所有认为是正例中的 正确的正例的占比
召回率:归正确的正例 TP / (归正确的正例TP + 当成负例的正例FN) 20 / (20 + 0)
所有正例中的 正确归类的正例的占比
置信度:检测人脸时,他是人脸的可能性;检测物体时,他是物体的可能性,所以有时设置一个阈值,大于这个阈值的才是我们需要的
PR图指的是:精度Precision 和 召回率Recall 的图
mAP值就是PR图 所围成的 面积
二、YOLO-V1整体思想与网络架构
主要对视频进行实时的检测
2.1 YOLO-V1
核心思想:点出一个中心点,要检测一个物体,需要 构建一个长宽为(h,w)的框,此时就需要不断微调 h 和 w ,如回归问题一般,找到最合适的 h,w 还有起始位置 x 和 y
与真实值比较,谁的 IOU 大,就微调谁,
每个框要找到4个值:x,y,h,w 和 置信度值
这里输入图片大小受到了限制,因为卷积层到全连接层的时候的时候,参数的大小无法改变,所以输入图片大小也被限制。中间的卷积网路就是进行的特征提取,这里一代版本就不讲述,后面三代版本在讲述,因为相较于三代版本,这里版本就显得单一
因为划分了7×7的网格,所以输出7×7×30=1024,前10个每5个代表一个框预测结果,剩下20代表的是类别
2.2 位置损失计算
输出结果的含义
损失函数:
obj那里是选择一个边框与真实框IOU最大的那个
那么w,h为什么要用根号,比如有两个一大一小两个物体, 预测框都与其相差一个单位,此时针对小物体,影响肯定更大,所以我们要更针对小物体,大物体的相对粗糙一点没问题,加上根号后,就有了侧重,数值小的时候会较为敏感,数值大的时候就没有那么敏感
2.3 置信度与优缺点分析
置信度要不要分类考虑,前景和背景
设定一个阈值,Iou大于这个阈值时,表示是需要的前景,此时置信度应该要接近于Iou,若有多个框,选择Iou较大的那个
背景相对不那么重要,所以前面你加上一个参数,如0.1
j检测到多个框一起时,选择一个置信度最大的
YOLO-V1存在的问题就是,第一如果有重叠在一起的,很难都检测出来;小物体和重复标签(比如既是狗有时哈士奇)也不好做
三、YOLO-V2改进细节详解
改进:
dropout是在全连接层使用,使得网络别太过拟合,v2中已经没有全连接层了,
所有卷积层后面都加上 Batch Normalization(BN)
v2没有全连接层,全连接层容易过拟合且训练慢,所以全是卷积层
所有卷积大小只有3×3和1×1,3×3借鉴了VGG思想,用小的卷积核会使 训练结果较好
3.1 基于聚类选择先验框尺寸
设定的先验框只是常规形状,不一定更适合数据集,所以采用聚类方法
有了anchor box 可以检测出没有anchor box 时没检测出的框
3.2 偏移量计算方法
x,,y,w,h是真实框的大小,tx,ty,tw,th是预测框的偏移,我们要将预测框的偏移量加到缘线的预选框中,而偏移量如果过大时,就有可能飘出图像,就不合适了,所以是使用的一个相对的值
如下,黑色虚线框是先验框,对预测值tx,ty用一个sigmoid,结果都在0-1之间,就是在中心点所在的网格中
3.3 坐标映射与还原
对原始图像先缩小,除以32,5次maxpooling,一次1/2
3.4 感受野的作用
提取的特征图大小和使用的卷积核大小有关
感受野:就是最后的特征图上的一个点相当于原始图像多大的区域,就说它的感受野是多大
越大的感受野越能考虑的是一个整体,最后的特征图感受野最大,概括的是一个全局的整体
那么感受野当中,我们需要的卷积核大小是要大一点还是小一点呢
堆叠两个3×3的卷积时,感受野是5×5的,那么为什么要堆叠两个3×3的而不是直接用一个5×5的呢?
经过计算发现,堆叠小的卷积核所需的参数更少,而且卷积过程越多,提取的特征就越细致,而且每个卷积核后面都加一个BN