YOLO:
googlenet+4个卷积+2个全连接层
网络输出大小7730
流程解释:
默认将图片分成网格,每个网格预测两个bbox,NMS。
单元格:
77个像素值,49个单元格
每个单元格负责预测一个物体类别,直接预测物体的概率值
每个单元格预测两个bbox位置,两个bbx置信度
一个bbx,xmin ymin xmax ymax confidence
30:两个bbx 42+2=10
20个输出代表20类的预测概率结果
网格的输出筛选:
一个网格有两个bbx 但是在训练时只有一个bbx负责预测概率
20类别概率代表网格中的一个bbx
通过置信度大小比较:
如果单元格里面有物体 则置信度是 bbx和gt的iou乘积
无物体,则置信度就是0
两个bbx的4个值都与gt进行iou计算 都得到两个iou 取最大的 20个类的预测结果和iou最大的相联系
判断有无object:如果obj的gt中心点坐标在单元格中,那么这个单元格包含这个obj,obj预测由该单元格负责 该概率不属于任何一个bbx属于该单元格预测的类别
yolo 框 概率值都由网络直接输出7730
训练过程:
预测框会找到目标值的标记
损失:两个点4个值的损失+confidence损失+20个类别的损失
优点:速度快
缺点:准确率打折扣,对靠的很近的物体预测效果不好。
SSD(single shot multibox detector)2016:
结合了yolo的回归思想和faster -rcnn中的anchor 机制,使用全图各个位置的多尺度区域进行回归
核心:在不同尺度的特征图上采用卷积核来预测一系列的default bbx 类别坐标 偏移
网络结构:
Vgg-16为基础,用Vgg的前五个卷积,后面增加从conv6开始的5个卷积结构,输入图片要求300*300(保留前六次卷积的特征图)
每个特征图都会经过一个detector classifier
流程:
输入图片--Vgg--38*38*512(特征图)--Vgg--19*19*1024--conv--10*10*512--conv--5*5*256--conv--3*3*256--conv--1*1*256
| | | | | |
归一化 detector classifier DC DC DC DC
| | | | | |
detector classifier 6 6 6 6 4
(38*38*4个候选框) |
|
NMS
不同的feature map 所有特征点上使用prior box层(dc)
dc:
·得到候选框 default box
·吸取yolo的优点 输出每个框的4个位置,类别预测概率 置信度
·priorbox : 生成default 默认候选框
·conv33 生成loc 4个位置的偏移量、
·conv33 confidence 21个类别的置信度(背景前景)
5*5*256 (假设每个像素预测3个框)
|
default box conv3*3 conv3*3 (75个框都要预测20+1的值)
| | |
75个候选框 12个3*3*256的feature 5*5*63
|
5*5*12(75个框的4个位置)
更正位置 边界 分类和过滤
NMS
8732 个候选框
候选框生成结果之后利用4个(xmax xmin ymax ymin)prior variance 做微调
在不同尺度的特征图上面进行dc容易使得 SSD观察到更小的物体
训练和测试过程:
输入图–输出7308框–结果与gt标记样本回归损失计算–反向传播计算权重
样本标记 将候选框和gtbox匹配进行标记正负样本(iou>0.5为正样本)正负样本比1:3
损失:
置信度采用softmax loss
位置回归采用smoothL1 Loss
测试:
输入–输出7308–NMS–输出框