在上一讲中笔者和大家介绍了 yolo v2,yolo v2 对 yolo v1 的各个缺陷做了大量改进并取得了相当好的结果。本节笔者将和大家介绍 yolo 系列算法的巅峰之作 —— yolo v3。相较于此前 R-CNN 那样严肃紧张的论文写作风格,yolo 系列论文让读者明显会感到随意,当然这种随意是指行文语言风格上的随意,论文本身的学术严谨性还是毋庸置疑的。到了这篇 yolo v3 这种活泼的语言风格更加强烈,随意体会一下:
另外再放一张 yolo 系列作者 Joseph Redmon 的照片:大胡子的外表下似乎有一颗萌萌哒的心~
下面笔者就简单介绍一下 yolo v3 相较于此前 v2 版本做出的一些更新和改进。
yolo v3 的改进和更新
yolo v3 汲取了此前同时期各种创新点并且尝试在新的网络结构上进行训练。具体来看:
1.边界框的预测
yolo v2 中使用维度聚类(dimension clusters )作为 anchor boxes 来预测边界框,使用平方误差作为损失函数,而 yolo v3 使用了逻辑回归来预测每个边界框的对象分数。
2.类别预测
yolo v3 在类别预测上将原来的单标签预测改进为多标签预测。所以在网络结构上 v2 的 softmax 层就改成多标签分类的 logistic 回归层。这样做就使得分类器能够处理一张图片属于多个类的情况,需要用逻辑回归来做多个二分类。
3.融合预测多个尺寸的边界框
yolo v3 融合了 3 种不同尺寸的边界框进行预测。这个有点类似于空间金字塔结构。从基本的特征提取器里面添加几个卷积层,最后一层预测边界框和目标物体类别。然后从之前的两层中得到的特征图进行 2 倍上采样,再从这两层之前的特征图中使用 element-wise- addition 将其与这两层的上采样特征进行合并来得到更加丰富的语义信息。
在生成先验候选框(anchor boxes)上仍然采用 v2 中 k-means 聚类的方式。
4.特征提取器
yolo v3 的特征提取网络是基于 v2 的 Darknet19 和残差网络综合之后的网络模型,作者将其命名为 Darknet-53。
Darknet-53 使用了大量的 3x3 和 1x1 卷积以及一些类似 resnet 中的 shortcut 连接。这使得 Darknet-53 性能要比 Darknet-19 好许多。
在网络的训练上 yolo v3 基本保持了 yolo v2 训练时的基本要素,这里不再赘述。
yolo v3 的表现
yolo v3 在 COCO 数据集上的表现如上表所示。就 mAP 指标而言,yolo v3 与 SSD513 相当,但是速度要快三倍。但是相较于 RetinaNet 来说还是要差一些。
yolo v3 自成一个象限,效果好到作者有 diss 其他网络的嫌疑~
也包括下面这张:
论文:
https://pjreddie.com/media/files/papers/YOLOv3.pdf
yolo v3 pytorch 开源实现:
https://github.com/ayooshkathuria/pytorch-yolo-v3
参考资料:
YOLOv3: An Incremental Improvement - Joseph Redmon
https://pjreddie.com/darknet/yolo/
往期精彩:
一个数据科学从业者的学习历程
长按二维码.关注数据科学家养成记