【YOLOv3】的那些事儿

本文为个人学习笔记总结,涉及部分图片、文字来源于网络,侵删~~

YOLOv3的重要知识点

论文分为:Bounding Box Prediction、 Class Prediction、 Predictions Across Scales、Feature Extractor、Training几个部分展开叙述的。

  1. So get ready for a TECH REPORT!所以准备一份技术报告吧!

  2. Bounding Box Prediction:During training we use sum of squared error loss.在训练中,我们使用误差平方和损失。

  3. YOLOv3 predicts an objectness score for each bounding box using logistic regression. YOLOv3使用logistic回归预测每个边界框的客观评分。

  4. We do not use a softmax as we have found it is unnecessary for good performance,instead we simply use independent logistic classifiers. 我们不使用softmax,因为我们发现它对良好的性能是不必要的,而只是使用独立的逻辑分类器。

  5. Class Prediction:During training we use binary cross-entropy loss for the class predictions.在训练过程中,我们使用二元交叉熵损失进行类预测。

  6. Predictions Across Scales:YOLOv3 predicts boxes at 3 different scales. YOLOv3预测3种不同尺度的盒子。

  7. 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个尺度,然后在尺度上均匀地划分簇。

  8. Darknet-53。
    【YOLOv3】的那些事儿

  9. 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问题总结

  1. 残差网络Residual的结构形式?有什么作用?为什么采用残差网络?

darknet53中的残差卷积就是进行一次3X3、步长为2的卷积,然后保存该卷积layer,再进行一次1X1的卷积和一次3X3的卷积,并把这个结果加上layer作为最后的结果, 差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。

  1. FPN架构是什么?有什么用?

特征图金字塔网络FPN(Feature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。

  1. 论文中的Bn Ops和BFLOP/s是什么含义?

在论文中Bn Ops和BFLOP/s的解释分别是“billions of operations”和“billion floating point operations per second”,分别代表着网络一个需要多少个10亿次的计算以及这个结构在同一平台下每秒可以跑多少次10亿次计算,这两个值就决定了FPS,这个硬件平台是Titan x。

  1. 相比于YOLOv2,YOLOv3主要有哪些改动?
  • YOLOv3的主干网络又变了,设计了基础网络结构Darknet-53;
  • YOLOv3终于加入多层分支了,一共拉取了三层;
  • YOLOv3选择了更多的archor box先验;
  • YOLOv3类别损失换了,由SoftMax换成了Logistic。

YOLO总结

  • YOLOv1:YOLO的开山之作,提出了划分网格目标检测方法,设计了巧妙的损失函数。
  • YOLOv2:在v1版本上进行了改进,做了很多小实验,提出了自己的主干网络darknet-19,使用了anchor机制,直接预测坐标,多尺度训练等。
  • YOLOv3:在v2版本上改进darknet网络,多尺度预测,小目标检测。

值得推荐的博文:

  1. https://blog.****.net/weixin_44791964/article/details/103276106
  2. https://blog.****.net/chaipp0607/article/details/99700184
  3. https://zhuanlan.zhihu.com/p/140036646?utm_source=wechat_session&utm_medium=social&utm_oi=987744333147299840