【Deep Learning】YOLOv3 An Incremental Improvement 原理

匿名 (未验证) 提交于 2019-12-02 23:03:14
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34784753/article/details/85301169

【Deep Learning】YOLOv3: An Incremental Improvement 原理

yolo_v3 发布了,由于今年找工作,最近才又好好的看了一遍,这里记录一下这篇论文的大概原理。


1. 综述

as accurate as SSD but three times faster.

因此总的来说,这是现阶段一种非常好的目标检测方案,尤其是在应用到实际项目中的时候,往往对网络的实时性具有比较高的要求,因此大多数时候会考虑这种实时性效果比较好的方案。

2. 改进方案

2.1 Bounding Box Prediction

在 bounding box 的坐标预测方式上 yolo_v3 还是延续了 yolo_v2 的方法,也就是依然使用下面这个公式进行计算:
bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pheth b_x=\sigma(t_x)+c_x\\ b_y=\sigma(t_y)+c_y\\ b_w=p_we^{t_w}\ \ \ \ \ \ \ \\ b_h=p_he^{t_h}\ \ \ \ \ \ \ \ \
上面的公式中,tx,ty,tw,tht_x,t_y,t_w,t_h 也就是模型的预测输出,其中 cx,cyc_x,c_y 表示 grid cell 的坐标,比如某层的feature map大小是13*13,那么grid cell就有13*13个,第 0 行第 1 列的 grid cell 的坐标 cxc_x 就是 0,cyc_y 就是 1。pw,php_w,p_h 表示的是预测前bounding box 的 size,bw,bhb_w,b_h 就是预测得到的 bounding box 的中心坐标和 size,对于上述的坐标回归使用的损失函数是平方误差损失。(如果一些坐标真实值是 t^\hat t_*,而网络的预测值是 tt_*,则梯度为 t^t\hat t_*-t_*)。

2.2 Class Prediction

在进行类别预测方面,主要的改变是将原来的单标签分类改为多标签分类,再具体实现上,将原来网络中的 softmax 替换为多个相互独立的 逻辑回归。这种做法在其余网络中也已经使用过(没记错 FPN ,Mask R-CNN 中也使用了类似的方案)。这样做的好处是,在使用 softmax 时候,我们默认了每个目标仅属于一个类别标签,但是在实际应用中,对于一些比较复杂的场景,一个目标可能同时属于多个类别,比如 dog 可以同时属于 dog 类 和 anmial 类。在实现上,使用多个相互独立的 sigmoid 函数来代替 softmax 函数,应为 sigmoid 可以很方便的将输出约束到 0~1 范围内,而且也十分用以理解,当一个目标最后经过 softmax 后,如果输出的结果大于 0.5,则说明该目标属于这个类别。

2.3 Predictions Across Scales

2.4 Feature Extractor

具体网络结构如下所示:

2.5 Training

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!