基础网络研究 YOLO

YOLO:同时在图片预测多个边界框,并分类。
在这里插入图片描述
以上是YOLO的检测流程

相较其他网络YOLO的优点:
1.速度快:基础网络有45fps,fast网络模型可达150fps

2.mAP比其他实时检测网络要高一倍

3.YOLO可以很好的避免背景错误,产生false positives:
能对整张图片同时进行预测,能利用图片上下文信息避免对背景的误识别

4.YOLO可以学到物体的泛化特征
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。

缺点:
1、YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
2、YOLO容易产生物体的定位错误。
3、YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。

该系统将图片分成S x S个格子,每个栅格负责检测中心落在该栅格中的物体
每个格子预测B个bounding boxes,以及这些bounding boxes的confidence scores(置信度)
这个 confidence scores反映了模型对于这个栅格的预测:该栅格是否含有物体,以及这个box的坐标预测的有多准。
公式定义如下:
在这里插入图片描述
每个 bounding box 包含 5个预测参数: x, y, w, h, and confidence.
坐标x,y代表了预测的bounding box的中心与栅格边界的相对值。
坐标w,h代表了预测的bounding box的width、height相对于整幅图像width,height的比例。
confidence就是预测的bounding box和ground truth box的IOU值。

每一个栅格还要预测C个 conditional class probability(条件类别概率)(多少个类要预测就多少个C):Pr(Classi|Object)。即在一个栅格包含一个Object的前提下,它属于某个类的概率。
我们只为每个栅格预测一组(C个)类概率,而不考虑框B的数量。

在测试阶段,将每个栅格的conditional class probabilities与每个 bounding box的 confidence相乘: 在这里插入图片描述
这样既可得到每个bounding box的具体类别的confidence score。
这乘积既包含了bounding box中预测的class的 probability信息,也反映了bounding box是否含有Object和bounding box坐标的准确度。

所以预测值和数据集y要求 S ×S ×(B ∗5 + C) 矩阵

网络结构
在这里插入图片描述
1.用了1X1卷积层
2.Max-pooling层
3.随机初始化全连接层权重
4.首先利用ImageNet 1000-class的分类任务数据集预训练卷积层。使用上述网络中的前20 个卷积层,加上一个 average-pooling layer,最后加一个全连接层,作为 Pretrain 的网络。训练大约一周的时间,使得在ImageNet 2012的验证数据集Top-5的精度达到 88%,这个结果跟 GoogleNet 的效果相当。
然后再加上剩余的网络层应用到检测当中。
5.将所有的预测结果都归一化到 0~1, 使用 Leaky RELU 作为激活函数。
6.为了防止过拟合,在第一个全连接层后面接了一个 ratio=0.5 的 Dropout 层。
7.使用了非最大值抑制,筛选boxes
8.大量的数据增强(引入高达原始图像20%大小随机缩放和转换,HSV空间中使用1.5的因子来调整图像的曝光与饱和度)

损失函数
损失函数的设计目标就是让坐标(x,y,w,h),confidence,classification 这个三个方面达到很好的平衡。
简单的全部采用了sum-squared error loss来做这件事会有以下不足:
a) 8维的localization error和20维的classification error同等重要显然是不合理的。
b) 如果一些栅格中没有object(一幅图中这种栅格很多),那么就会将这些栅格中的bounding box的confidence 置为0,相比于较少的有object的栅格,这些不包含物体的栅格对梯度更新的贡献会远大于包含物体的栅格对梯度更新的贡献,这会导致网络不稳定甚至发散。
在这里插入图片描述解决方案如下:
更重视8维的坐标预测,给这些损失前面赋予更大的loss weight, 记为 λcoord ,在pascal VOC训练中取5。(上图蓝色框)
对没有object的bbox的confidence loss,赋予小的loss weight,记为 λnoobj ,在pascal VOC训练中取0.5。(上图橙色框)
有object的bbox的confidence loss (上图红色框) 和类别的loss (上图紫色框)的loss weight正常取1。

对不同大小的bbox预测中,相比于大bbox预测偏一点,小box预测偏相同的尺寸对IOU的影响更大。而sum-square error loss中对同样的偏移loss是一样。
为了缓和这个问题,作者用了一个巧妙的办法,就是将box的width和height取平方根代替原本的height和width。 如下图:small bbox的横轴值较小,发生偏移时,反应到y轴上的loss(下图绿色)比big box(下图红色)要大。
在这里插入图片描述
在 YOLO中,每个栅格预测多个bounding box,但在网络模型的训练中,希望每一个物体最后由一个bounding box predictor来负责预测。
因此,当前哪一个predictor预测的bounding box与ground truth box的IOU最大,这个 predictor就负责 predict object。
这会使得每个predictor可以专门的负责特定的物体检测。随着训练的进行,每一个 predictor对特定的物体尺寸、长宽比的物体的类别的预测会越来越好。

限制之处:
1.施加了较大的空间限制,限制了识别邻近对象的能力(每个格子只预测两个box和一个类),对成群出现的小对象识别较差,如一群鸟这种。
2.Yolo算法在同一类物体出现的新的不常见长宽比泛化能力偏弱。(使用相对粗糙的目标特征数据来训练)
3.损失函数对待small bounding boxes和large bounding boxes的误差一样:小误差对大检测框的IOU影响不大但是对small bounding boxes的IOU会产生更大的影响。
4.Yolo算法召回率较低

参考:
https://blog.csdn.net/hrsstudy/article/details/70305791
https://blog.csdn.net/Small_Munich/article/details/79503725

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值