yoloV3论文解读及应用注意事项

xiaoxiao2021-02-28  28

一、yolov3论文解读

论文连接地址: 点击打开链接

1. yolov3实现的idea

1.1 边界框的预测(Bounding Box Prediction)

与之前yolo版本一样,yolov3的anchor boxes也是通过聚类的方法得到的。yolov3对每个bounding box预测四个坐标值(tx, ty, tw, th),对于预测的cell(一幅图划分成S×S个网格cell)根据图像左上角的偏移(cx, cy),以及之前得到bounding box的宽和高pw, ph可以对bounding box按如下的方式进行预测:

在训练这几个坐标值的时候采用了sum of squared error loss(平方和距离误差损失),因为这种方式的误差可以很快的计算出来。

yolov3对每个bounding box通过逻辑回归预测一个物体的得分,如果预测的这个bounding box与真实的边框值大部分重合且比其他所有预测的要好,那么这个值就为1.如果overlap没有达到一个阈值(yolov3中这里设定的阈值是0.5),那么这个预测的bounding box将会被忽略,也就是会显示成没有损失值。

说一下我在应用中的事:yolov3它的训练轮数是50200,我的数据量比较小,因此迭代到900轮的时候,每一轮训练完显示的损失值都是nan,其原因可能就是上边因为阈值他直接忽略掉了这个bounding box导致没有loss,之前的版本我使用时貌似不是这样的。

1.2 分类(Class Prediction)

每个框预测分类,bounding box使用多标签分类(multi-label classification)。论文中说没有使用softmax分类,只是使用了简单的逻辑回归进行分类,采用的二值交叉熵损失(binary cross-entropy loss)。

1.3 跨尺度的预测(Predictions Across Scales)

yolov3在三个(num=3)不同的尺度预测boxes,yolov3使用的特征提取模型通过FPN(feature pyramid network)网络上进行改变,最后预测得到一个3-d tensor,包含bounding box信息,对象信息以及多少个类的预测信息。论文给出是这样子的:(N×N×[3*(4+1+80)])这里的80即是80类物体。

FPN结构如下:

yolov3使用这样的方式使得模型可以获取到更多的语义信息,模型得到了更好的表现。

yolov3依然使用k-Means聚类来得到bounding box的先验,选择9个簇以及3个尺度,然后将这9个簇均匀的分布在这几个尺度上。

1.4 特征提取(Feature Extractor)

yolov3的特征提取模型是一个杂交的模型,它使用了yolov2,Darknet-19以及Resnet,这个模型使用了很多有良好表现的3*3和1*1的卷积层,也在后边增加了一些shortcut connection结构。最终他有53个卷积层,因此作者也把它们叫成Darknet-53。它们的结构是这样的:

最后论文说明这个模型的优良之后还说了一句,Resnet模型后边有太多层并且不是很有效。抱歉,我可是KaiMing的迷弟,哈哈,说的委婉一点多好。

1.5 训练

最后论文说它们训练的时候使用了很多方法,诸如数据增强,BN等等,具体怎么训练的给出了一个引用,在论文的【12】可以找到。

2. yolov3做了些什么?

就说yolov2有个毛病就是对小物体的检测不敏感,关键在于它那个cell预测时导致的毛病,而如今增加了多尺度预测之后yolov3在对小物体检测方便有了好转,但是现在的毛病是对中、大size的物体表现的不是那么好,这还得需要我们去努力做。然而在论文中yolov3各种表示的还行。

3. yolov3那些尝试过并没有提升表现的想法

① 想对Anchor box的x,y偏移使用线性激活方式做一个对box宽高倍数的预测,结果发现没有好的表现并且是模型不稳定。

②对anchor box的x, y使用线性的预测,而不是使用逻辑回归,实验结果发现这样做使他们模型的mAP掉了。

③使用Focal loss,测试结果还是掉mAP。(想法的确挺好的)

4. yolov3测试表现的一些截图

二、yolov3应用到自己的项目中

训练自己数据之后检测的结果:

如何使用yolov3训练自己的数据,如何做出修改,这里我给出一个教程文档,这个文档一步步的指示如何去制作一个VOC格式的数据集去跑yolov,需要注意的是yolov3模型结构有所改变,这个文档在数据集的制作上没问题,但是在说如何训练yolo?它给出的是训练yolov2的教程,但是大差不差,可以通过上面论文解读自己修改yolov3里边的参数去训练自己的数据,就当做是一个练习吧!

教程地址:点击打开链接

转载请注明原文地址: https://www.6miu.com/read-1750401.html

最新回复(0)