YOLO系列-yolov3

文章目录

  • YOLO-V3
  • 多scale
    • scale经典方法
  • 残差链接-resnet思想
  • 核心网络架构
  • 先验框设计
  • softmax改进

YOLO-V3

在yolov3中不论速度还是map值都比其他算法高出很多
yolov3最大的改进就是网络结构,使其更适合小目标检测
特征做的更细致,融入多持续特征图信息来预测不同规格的物体
先验框更丰富了,3种scale,每种3个规格,一共9种
softmax改进,可以预测多标签任务
YOLO系列-yolov3_第1张图片

多scale

为了能检测到不同大小的 物体,设计了3个scale
在yolov2中为了能检测更小的物体,它把不同大小的特征图融合做成一个向量。这样做的弊端是可能会把一些特征图突出的特征变得不突出
在yolov3中设计了3个scale,分别用来检测小中大三种不同大小的物体,每种scale还有3个先验框,所以 一共是9个
大中小的scale大小分别是:52*52、26*26、13*13
但是怎么得到大小不同的scale呢,是从一个CNN网络中直接拿到这些大小的scale吗,但是这样越小的scale学到的东西会越多,越大的scale学到的越小,显然我们大的scale还需要借鉴小的scale

scale经典方法

左图是图像金字塔,把原始输入调整分辨率然后去做预测,这样做会导致速度很慢,不符合yolo速度快的出发点
右图就是yolov1的做法,用最后结果预测
YOLO系列-yolov3_第2张图片
左图是对不同的特征图分别做预测,这样做的缺点是最上面的scale最小的特征图能做的最好,因为学到的东西最多,而且下面的特征图学到的东西不完成,等于就是说学到一半就拿去做预测了,效果肯定不太好。
右图是每一层的特征图都会融合上面所有的特征图,但是这里尺寸大小不一样,这里就是用到了上采样,比如2626的特征,想要融合1313的特征图,就需要先把1313的特征图做一个上采样变成2626的在与原本26*26的融合。
YOLO系列-yolov3_第3张图片

残差链接-resnet思想

现在很多的网络都用了残差网络的思想,v3中也用了resnet的思想,堆叠更多的层来提取特征
resnet的主要思想就是为了防止网络越学越差的情况,因为vgg网络层数越高存在error遇到的情况,而resnet就是解决了这一问题,一些网络层如果学的结果是更差了则会跳过这一层。

核心网络架构

yolov3的网络又叫做darknet53
这个没有池化和全连接层,全部都是卷积。池化把特征图压缩了,可能会效果不好。
之前的池化层目的是为了把网络缩小成二分之一,那么只用卷积该怎么操作呢,我们知道sride为1的时候特征图大小不变,stride为2的时候特征图大小也会变成原来的一半,那么当我们需要下采样的时候stride为2就行,不需要下采样stride为1就行
从下图可以看到最终的输出结果有52*52、26*26、13*13的特征图大小分别用来检测小中大不同的物体,中间一些就用到了上采用操作
YOLO系列-yolov3_第4张图片
如下图当输入数据后做完卷积后的结果。如果你检测目标大小是13*13的,最后的结果应该是13*13*3*85,这里的13*13就是格子大小,v1的网格大小是7*7,v2是13*13,v3有三种52*52、26*26、13*13.3的意思是每个格子的三个先验框,85=80+4+1 4是预测出框的x,y,w,h,1是当前是物体还是背景,80是当前数据集中60个类别得判断是哪个类别
YOLO系列-yolov3_第5张图片

先验框设计

yolo-v2中选了5个,v3中有9个
v2中用到了聚类算法提取先验框,这样更符合实际的情况,在v3中还是这样做的
这里不是每一个格子都预测9种,而是分成了三类,比如聚类算法提取到的先验框是116*90的,这个框比较大,适合用13*13的特征图去做,因为特征图大小越小感受野越大,能检测的物体越大,其余两个种类也是这样分的。
在这里插入图片描述

softmax改进

物体检测任务中可能物体有多个标签
用logistic激活函数来完成,这样能预测每一个类比是还是不是
这个函数是一个log函数,损失越小接近于0说明x接近于1,说明预测正确的概率越大
对于每一个类都预测是还是不是
YOLO系列-yolov3_第6张图片

你可能感兴趣的:(深度学习,计算机视觉,深度学习,人工智能)