YoLo v1-v3、SSD

举报
qinggedada 发表于 2020/07/24 12:11:31 2020/07/24
【摘要】 如题目,这篇专栏介绍YoLo的1代到3代的模型以及SSD。基础概念首先一个非常重要的概念,one-stage与two-stagetwo-stage:基于区域提名的目标检测,将检测问题划分为两个阶段,首先产生候选区域,然后对其分类和位置精修。错误率低、漏识别率低但速度慢,不符合实时检测要求,以Faster-RCNN系列为代表。one-stage:基于端到端学习的目标检测,不需要生成候选区域,直...

如题目,这篇专栏介绍YoLo的1代到3代的模型以及SSD。

基础概念

首先一个非常重要的概念,one-stage与two-stage

two-stage:基于区域提名的目标检测,将检测问题划分为两个阶段,首先产生候选区域,然后对其分类和位置精修。错误率低、漏识别率低但速度慢,不符合实时检测要求,以Faster-RCNN系列为代表。

one-stage:基于端到端学习的目标检测,不需要生成候选区域,直接产生物体的类别概率和位置坐标,单次检测即可直接得到最终结果,又更快的检测速度,如YoLo系列、SSD。

1.jpg

YoLo-v1

Yolo-v1:利用整张图作为网络输入,将目标检测作为回归问题解决,直接在输出层回归羽轩框的位置以及其所属类别。下图为Yolo-v1结构图:

2.jpg

将Inception-v1提取出的特征图再经过4个卷积层和2个FC层,最后生成7*7*30的输出。

7*7网格内的每个Grid(网格、格子)对应大小不同的Bounding box,

每个Bbox坐标(x,y,w,h),x与y表示Bbox中心点与该格子边界的相对值,

w与h表示预测Bbox的宽高相对整个图像比例。(x,y,w,h)会限制在[0,1]之间,与训练数据集上标定的物体真实坐标(Gx,Gy,Gw,Gh)对比训练,每个Grid负责检查中心点落在该格子的物体。

这个置信度confidence只表达Bbox里有无物体的概率,类似Faster-RCNN中RPN层的softmax预测anchor是前景还是背景的概率,并不预测Bbox内物体属于哪一类。

3.jpg

下面看一下针对BoundingBox的置信度confidence,每个网格有两个BoundingBox故也有两个置信度confidence,confidence公式如下:

4.jpg

YoLo-v1预测工作流程:

1.每一个格子得到两个Bbox

2.每个网格预测的class信息和Bbox预测的confidence信息相乘,得到了每一个Bbox预测具体物体的概率和位置重叠的概率PrIOU

3.对于每一个类别,对PrIOU进行排序,去除小于阈值的PrIOU,然后做非极大值抑制。

5.jpg

Yolo-v1的缺点:

1.每个网格只有两个Bbox,物体长宽比不常见的物体效果差

2.原始图片只能划分为7*7,物体靠近识别差

3.最终每个网格只对应一个类别,容易漏掉其他物体

4.对小物体识别差

SSD

接下来按照时间年份,根据YoLo-v1缺点进行改进的SSD模型出现了,主结构为VGG16。后续专栏中会详细介绍VGG16模型,先放一个结构图:

6.jpg

SSD结构根据VGG16改造过来,如下图:

15-30神经网络优化.mp4_20200408_102043097.jpg

上述模型乍一看很复杂,下面提供一个更简洁的:

7.jpg

看完图介绍一下SSD的特征金字塔,如下图。SSD不仅获得不同尺度的特征映射,同时在不同的特征映射上面进行预测,增加运算的同时提高检测精度。不同的卷积层会输出不同的特征图,这是由于池化层会让图片的尺寸变小,浅层卷积层得到物体边缘信息,深层网络得到更抽象更细节的信息。

8.jpg

Match策略

在训练时,GroundTruth boxes与prior boxes按照如下方式配对:

1.寻找每一个与GroundTruth boxes有最大IOU的prior boxes预选框,保证一一对应

2.ssd之后将剩余没有配对的prior box与任意一个GroundTruth boxes尝试配对,只要二者IOU大于阈值就认定为match(SSD300阈值=0.5)

3.配对到GroundTruth的prior box就是positive,否则为negative

一般情况下negative default box >>positive default box数量,尽量控制positive:negative=1:3

SSD结果分析:

1.数据增强(图片变形转换)对于结果的提升非常明显

2.使用更多的default box,结果会更好

3.更多的feature map可以得到更好的结果

4.使用图片边界的标注框比不使用图片边界的标注框效果更好

5.使用Atrous空洞卷积/扩张卷积提供更大的感受野,用在实时图像分割中

SSD缺点:

1.需要人工设置prior box的最大值、最小值和aspect_ratio,预选框的基础大小和形状需要手工设置,每一层特征使用的预选框大小和形状不一样,导致调试依赖经验。

2.对小目标检测依然效果不好。

YoLo-v2

针对Yolo-v1的缺点,Yolo-v2结合了SSD模型做出了6点改进:

1.首先修改训练分类网络的分辨率为448*448,在ImageNet数据集上训练10个周期(epochs)。这个过程让网络有足够的时间去适应高分辨率的输入。

2.移除全连接层以获得更多空间信息,使用anchor boxes预测Bounding box,anchor box同时预测类别和坐标。移除全连接层的具体步骤如图:

9.jpg

加入anchor box后,每个cell预测9个anchor。总共预测13*13*9=1521个box,而之前YoLo-v1网络预测仅为7*7*2=98个box。

3.维度聚类,利用K-means方法对GroudTruth box做聚类,找到GroudTruth box的统计规律,以聚类个数k为anchor box个数,以k个聚类中心box的宽和高作为anchor box的宽和高。

4.直接位置预测

5.同一网络可进行不同分辨率的检测任务,小尺寸图片运行更快

YoLo-v3

最后介绍的是YoLo-v3,有3种不同特征尺度的输出,分别为13*13*255,26*26*255,52*52*255,一般使用416*416大小图片作为输入,最后得到特征图13*13,再大一点特征图为26*26,再大为52*52。COCO数据集目标检测有80种类,YoLO-v3中有3个box,每个box有(x,y,w,h,confidence)五个基本参数,故有3*(5+80)=255。

对于416*416的图片,YoLo-v2的Bbox有13*13*5=845个,YoLo-v3的Bbox有3*(13*13+26*26+52*52)=10467个。

10.jpg


 11.jpg


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。