【YOLOv3】的那些事儿
本文为个人学习笔记总结,涉及部分图片、文字来源于网络,侵删~~
YOLOv3的重要知识点
论文分为:Bounding Box Prediction、 Class Prediction、 Predictions Across Scales、Feature Extractor、Training几个部分展开叙述的。
-
So get ready for a TECH REPORT!所以准备一份技术报告吧!
-
Bounding Box Prediction:During training we use sum of squared error loss.在训练中,我们使用误差平方和损失。
-
YOLOv3 predicts an objectness score for each bounding box using logistic regression. YOLOv3使用logistic回归预测每个边界框的客观评分。
-
We do not use a softmax as we have found it is unnecessary for good performance,instead we simply use independent logistic classifiers. 我们不使用softmax,因为我们发现它对良好的性能是不必要的,而只是使用独立的逻辑分类器。
-
Class Prediction:During training we use binary cross-entropy loss for the class predictions.在训练过程中,我们使用二元交叉熵损失进行类预测。
-
Predictions Across Scales:YOLOv3 predicts boxes at 3 different scales. YOLOv3预测3种不同尺度的盒子。
-
We still use k-means clustering to determine our bounding box priors. We just sort of chose 9 clusters and 3 scales arbitrarily and then divide up the clusters evenly across scales. 我们仍然使用k-means聚类来确定我们的边界框优先级。我们只是任意选择了9个簇和3个尺度,然后在尺度上均匀地划分簇。
-
Darknet-53。
-
We use multi-scale training, lots of data augmentation, batch normalization, all the standard stuff. We use the Darknet neural network framework for training and testing.我们使用多尺度的训练,大量的数据扩充,批量规范化,所有标准的东西。我们使用Darknet神经网络框架进行训练和测试。
YOLOv3的网络结构
YOLOv3网络结构如图上图所示。
这是一个引入了残差直连的主干网络,最左侧的一列数字是残差单元的个数,最右侧的output是特征图的尺寸,这个结构和ResNet50很像,但是它没有用瓶颈层设计,也不是朴素的残差单元设计,而是每个残差单元里有2个卷积,不是三个,第一个卷积层是一个1×1的卷积,第二个是3×3的卷积,每进一次残差单元,第一个卷积总是会把通道先降下来,然后第二个再负责升上去,以降低网络的计算量。此外,这个网络除了最后的全局平均池化外,再没有别的池化层,下采样都靠stride=2的卷积来完成。
YOLOv3问题总结
- 残差网络Residual的结构形式?有什么作用?为什么采用残差网络?
darknet53中的残差卷积就是进行一次3X3、步长为2的卷积,然后保存该卷积layer,再进行一次1X1的卷积和一次3X3的卷积,并把这个结果加上layer作为最后的结果, 差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。
- FPN架构是什么?有什么用?
特征图金字塔网络FPN(Feature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。
- 论文中的Bn Ops和BFLOP/s是什么含义?
在论文中Bn Ops和BFLOP/s的解释分别是“billions of operations”和“billion floating point operations per second”,分别代表着网络一个需要多少个10亿次的计算以及这个结构在同一平台下每秒可以跑多少次10亿次计算,这两个值就决定了FPS,这个硬件平台是Titan x。
- 相比于YOLOv2,YOLOv3主要有哪些改动?
- YOLOv3的主干网络又变了,设计了基础网络结构Darknet-53;
- YOLOv3终于加入多层分支了,一共拉取了三层;
- YOLOv3选择了更多的archor box先验;
- YOLOv3类别损失换了,由SoftMax换成了Logistic。
YOLO总结
- YOLOv1:YOLO的开山之作,提出了划分网格目标检测方法,设计了巧妙的损失函数。
- YOLOv2:在v1版本上进行了改进,做了很多小实验,提出了自己的主干网络darknet-19,使用了anchor机制,直接预测坐标,多尺度训练等。
- YOLOv3:在v2版本上改进darknet网络,多尺度预测,小目标检测。
值得推荐的博文: