YOLO (I)算法的原理和发展
我们知道YOLO实际上是你只看一次,也就是说你只需要看它一眼就可以知道位置和物体。个人觉得挺生动的。他不需要更快RCNN的RPN结构。事实上,他选择了anchor来保留候选框,并将图片分成7×7的网格,每个网格允许两个不同的边界框。这样,从一开始,我们就有了7x7x2的候选框,大致覆盖了图像的整个区域。他的想法是,即使更快的RCNN第一阶段有回归盒,第二阶段还是需要微调,不如做一个粗略的回归盒。
让我们好好看看这个模型。
首先,模型结构
事实上,这个模型的简单词汇是:
那30是怎么形成渠道规模的呢?
A.2个边界框的位置(8个通道)
每个包围盒需要四个数值来表示其位置,(Center_x,Center_y,width,height),即(包围盒中心点的x坐标,y坐标,包围盒的宽度和高度),两个包围盒* * *需要八个数值来表示其位置。
B.2个边界框的置信度(2个通道)
C.20分类概率(20个通道)
再来说说剩下的20维分类通道。每个通道代表一个类别的分类概率。因为YOLO支持识别20种不同的物体(人、鸟、猫、汽车、椅子等。),有20个值代表任何物体存在于这个网格位置的概率。但我们只能预测一组图片中的49个对象,可以理解为一个grid2有两个锚,只有一个对象预测准确(也就是IOU比最大的锚),所以有7×7个对象。
图中自行车的位置放在包围盒1中,但实际上在训练过程中网络输出后,两个包围盒与自行车实际位置的IOU进行比较,自行车的位置(实际包围盒)放在IOU较大的包围盒中(图中假设是包围盒1),包围盒的置信度设置为1。
第二,损失函数
一般来说,网络输出和样本标签内容之间的误差平方和作为样本的总误差。
损失函数中的几项对应于输出30维向量的内容。
三、YOLO v1缺陷
注意:
详细信息:
YOLO的最后一层采用线性激活函数,其他各层都是漏ReLU。在训练中使用退出和数据增强来防止过拟合。更多细节请参考原论文。
在67 FPS时,YOLOv2在PASCAL VOC 2007上获得了76.8%的地图。在40 FPS时,YOLOv2获得了78.6%的mAP,这比使用ResNet和SSD的更快的R-CNN要好。取得如此优异的成绩,YOLOv2于2017年在CVPR出版,获得超过1000次引用。YOLO有两个缺点:一是定位不准确,二是与基于区域提议的方法相比召回率较低。所以YOLOv2主要是在这两个方面进行改进。此外,YOLOv2并没有通过加深或拓宽网络来提高效果,而是简化了网络。
下面主要从两点来介绍YOLO v2的推广。更好更快。
1、暗网-19
在YOLO v1中,作者采用的训练网络是基于GooleNet的。在此,笔者对GooleNet和VGG16做一个简单的对比。GooleNet在计算复杂度上优于vgg 16(82.5亿次运算vs 30.69亿次运算),但前者的top-5精度略低于后者(88。在YOLO v2中,作者采用了一种新的分类模型作为基本网络,即Darknet-19。表6是最终的网络结构:Darknet-19只需要55.8亿次运算。这个网络包含19个卷积层和5个最大池层,而YOLO v1使用的GooleNet包含24个卷积层和2个全连通层,因此Darknet-19比YOLO v1使用的GoogleNet具有更少的卷积运算,这是减少计算量的关键。最后用平均池层代替全连通层进行预测。这个网络达到了965438+ImageNet上top-5的0.2%的准确率。
2、分类培训
上面说的第二部分和第三部分是训练处理的小技巧。这里用于分类的训练是在ImageNet上的预训练,主要分两步:1,从头开始训练Darknet-19,以ImageNet为数据集训练160 epoch,输入图像大小为224 224,初始学习率为0.1。此外,训练中采用了随机裁剪、旋转、色度、亮度调整等标准数据增加方法。2.微调网络。此时使用448,448个输入,除了历元和学习率之外参数不变。这里学习率改为0.001,训练10个历元。结果显示,微调后的top-1和top-5的准确率分别为76.5%和93.3%,而按照原训练方法,Darknet-19的top-1的准确率为72.9%,top-5的准确率为91.2%。因此可以看出,1和2步分别从网络结构和训练模式两个方面提高了主网络的分类精度。
3、检测培训
经过前面的步骤2,我们开始移植网络进行检测,并开始根据检测到的数据进行微调。先去掉最后一个卷积层,再加三个3/3的卷积层。每个卷积层有1024个滤波器,每个卷积层用1 1连接。1 1卷积的滤波器数量取决于要检测的类别。例如,对于VOC数据,因为每个网格单元需要预测5个盒子,每个盒子有5个坐标值和20个类别值,所以每个网格单元有125个过滤器(与YOLOv1不同,在YOLOv1中,每个网格单元有30个过滤器。还记得7 7 30矩阵吗,在YOLOv1中,类别概率是由网格单元预测的,也就是说一个网格单元对应的两个盒子的类别概率是相同的,但是在YOLOv2中,类别概率属于盒子,每个盒子对应一个类别概率,不是由网格单元决定的。所以这里每个盒子对应25个预测值(5个坐标加20个类别值),而在YOLOv1中,一个网格单元的两个盒子的20个类别值是相同的)。另外作者还提到了将最后3 ^ 3 * 512卷积层与倒数第二个卷积层连接起来。最后,作者在测试数据集上对微调模型进行了160个历元的预训练,学习率为0.001。在第60和90个时期,学习率除以10,权重衰减为0.0005。
Yolo v3相比yolo v2有三点:1。使用多尺度特征来检测对象。2.调整基础网络结构。