图片和部分文字内容来自互联网,对于未标注出处的内容,若有侵权请联系作者删除
1. Yolov1
1.1 网络结构
(1)整体网络修改了GoogleNet,输入图像为448*448
(2)卷积得到7*7*1024(提取特征),过全连接4096(预测概率与坐标),全连接1470*1,reshape得到7*7*30
7*7*30的含义:每个grid cell对应5+5+20,其中x、y是中心点位置(对应gridcell的比例归一化),w、h是宽高(相对原图宽高归一化的值,confidence是bbox包含物体的概率:不包含则是0,包含则是iou值,或者说 pr(object)*iou,希望靠近1*iou,如果标注的物体gt中心落在gridcell里,则该gridcell负责预测这个物体)
注意:confidence是bbox包含物体的概率,没有说类别,一共7*7*2个bbox,每个bbox的confidence会分别和20个类别预测结果相乘,得到的才是包含某类物体的概率score。
20*(7*7*2)的矩阵中,每一行是同一个类别,需要做nms(先按score排序,再按阈值剔除一些bbox),再按列找,对每个bbox找到score最高的类别,作为他预测的物体类别)
(3)损失函数
(3.1)位置损失:gt包含物体时才需要计算位置损失,且令其系数大一些
①中心坐标(x,y)的平方和损失
②宽高(w,h)开根号后再求平方和损失:拉开差距,例如原来w=10,h=20,预测出来w=8,h=22,跟原来w=3,h=5,预测出来w1,h=7相比,其实前者的误差要比后者小,但是如果不加开根号,那么损失都是一样:4+4=8,但是加上根号后,变成0.15和0.7。
(3.2) Bbox的confidence的平方和损失:由于正负样本不均衡,于是在gt不包含物体时,减小系数。
(3.3) 类别平方和损失:只在包含物体时算。
(4)测试时:需要confidence*cls得到最终的confidence score。
1.2 缺点
①对相互靠的很近的物体(挨在一起且中点都落在同一个格子上的情况),还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。
②测试图像中,当同一类物体出现的不常见的长宽比和其他情况时泛化能力偏弱。
2.Yolo9000
采用了DarkNet19,主要与yolov1做对比,原文中采用了better,faster,stronger三个形容词。
Better
(1)bn:加了bn当然收敛快又好
(2)预训练:yolov1是224*224的低分辨率上训,检测时再转换为448*448,不仅切换为检测算法也改变了分辨率;yolo9000直接用448*448的输入先在ImageNet上训练,提高分辨率, 让网络有足够的时间调整filter去适应高分辨率的输入。然后fine tune为检测网络
(3)不用全连接,改用anchor boxes:yolov1的全连接直接reshape会丢失空间信息,所以借鉴了Faster R-CNN中的anchor思想:直接在卷积特征图上滑动窗口采样,每个中心预测9种不同大小和比例的建议框,由于都是卷积不需要reshape,很好的保留的空间信息,最终特征图的每个特征点和原图的每个cell一一对应;且预测偏移量代替直接预测坐标。
具体做法:
- 去掉最后的池化层确保输出的卷积特征图有更高的分辨率。
- 缩减网络,让图片输入分辨率为416 * 416,目的是让后面产生的卷积特征图宽高都为奇数,这样就可以产生一个center cell。因为作者观察到,大物体通常占据了图像的中间位置,可以只用一个中心的cell来预测这些物体的位置,否则就要用中间的4个cell来进行预测,这个技巧可稍稍提升效率。
- 使用卷积层降采样(factor 为32),使得输入卷积网络的416 * 416图片最终得到13 * 13的卷积特征图(416/32=13)。
- 把预测类别的机制从空间位置(cell)中解耦,不再让类别的预测与每个cell(空间位置)绑定一起,而是让全部放到anchor box中,示意图如下:
加入了anchor boxes后,可以预料到的结果是召回率上升,准确率下降。我们来计算一下,假设每个cell预测9个建议框,那么总共会预测13 * 13 * 9 = 1521个boxes,而之前的网络仅仅预测7 * 7 * 2 = 98个boxes。具体数据为:没有anchor boxes,模型recall为81%,mAP为69.5%;加入anchor boxes,模型recall为88%,mAP为69.2%。这样看来,准确率只有小幅度的下降,而召回率则提升了7%,说明可以通过进一步的工作来加强准确率,的确有改进空间。
(4) 纬度聚类:对数据集中的ground truth box做聚类,找到ground truth box的统计规律=>以聚类个数k为anchor boxs个数,以k个聚类中心box的宽高维度为anchor box的维度。
上面左图: 随着k的增大,IOU也在增大(高召回率),但是复杂度也在增加。所以平衡复杂度和IOU之后,最终得到k值为5。上面右图:5聚类的中心与手动精选的boxes是完全不同的,扁长的框较少瘦高的框较多。
(5)位置预测:
这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束(也就是tx 没有数值限定,可能会出现anchor检测很远的目标box的情况,效率比较低,正确做法应该是每一个anchor只负责检测周围正负一个单位以内的目标box),作者就没有采用预测直接的offset的方法,而使用了预测相对于grid cell的坐标位置的办法,把ground truth限制在了0到1之间,利用logistic回归函数来进行这一限制。
最终形式:
Yolov3
新的网络结构DarkNet-53
利用多尺度特征进行对象检测
9种尺度的先验框
对象分类softmax改成logistic
预测对象类别时不使用softmax,改成使用logistic的输出进行预测。这样能够支持多标签对象(比如一个人有Woman 和 Person两个标签)。