原文链接:https://blog.csdn.net/shenkunchang1877/article/details/105648111

    PS:这篇文章是自己学习纪录下的笔记,主要是通过阅读 paddle 复现的 yolov3 源码,其中代码注释和图例非常详细。

    https://www.paddlepaddle.org.cn/tutorials/projectdetail/356456#anchor-21

    不对的地方还请指正!! 感谢

    网上有很多优秀博客,介绍了 yolov2 的设计思想以及实现过程。绝大部分我都翻阅了一遍,也看了论文,找了视频看了。

    这篇文章只说明 anchorbox 和 boundingbox 之间的关系,想学习 YOLOv2 和 v3 整体的过程可参考这个:https://zhuanlan.zhihu.com/p/47575929

    https://www.jianshu.com/p/d13ae1055302

    首先看了 yolov1 过程都比较直接,直接对框位置进行回归,选择最大 IOU,还算好理解。随后我看了 yolov2 的博客和论文,卡在了聚类生成 anchorbox,框回归得到偏移值 t 后,如何确定位置这里。

    我一直以为是类似 RCNN 中,先对每一个 anchor 点周围生成 9 种 anchorbox,再框回归得到偏移量去调整框的位置得到 boundingbox,最后利用 BBox 和 GT 的 IOU 去筛选框。深受这种思想的影响,所以我带着这种主观意识去看 YOLO 真的看得我头昏脑大。

    先上论文的图:

    [转载]YOLO v2/V3 中anchor box和bounding box的理解 - 图1

    yolo v2 借鉴了 RPN 的技巧,但是是略有不同的。

    anchor box:就是上图的黑色虚线框,我觉得这个图有点误导人,这个是框回归产生偏移之后的结果,但是 anchorbox 也随着变动了位置,具体原因见下面的分析。

    BoundingBox:蓝色框,通过回归得到偏移值后,以 anchorbox 为基准进行尺度缩放变换后的框。

    其实通过聚类得到的只是先验框又叫锚框(anchorbox)的高宽 (是一个固定值),(网上有些博客把 anchorBox 和 boudingBox 混淆了,让我以为 anchorbox 是每一次都在变化调整的,搞晕了),只是用几个固定的宽高比例来描述 anchorbox 的尺寸信息的,所以论文中聚类得到的是 5 种 box 的高宽,不需要中心坐标!那么 “中心坐标” 在哪呢? 回忆,我们在 yolo 中是将图片划分成 N*N 的块,每一块都是原图片的一小块(如上图的红色小块),而 anchorbox 的这个所谓的中心点其实可以看作是每一块的左上角坐标,如上图的箭头所指点 C,其中 Cx 和 Cy 是 C 点的坐标,这里先假设 tx,ty,tw,th 是网络输出的预测值,这个是代表坐标的偏移值(图上的σ定义为 sigmoid 激活函数(将函数值约束到[0,1]),这样就可以使得偏移后的 C 点也就是中心点落在红色这一块中)。而计算 bw 和 bh 就是我们唯一用到’anchorbox’的地方,这里我们只用到了它的宽高 (Pw 和 Ph)。exp(tw),exp(th) 代表着缩放比例, 将 exp(tw),exp(th) 和 (Pw,Ph) 相乘后得到缩放后的长宽(参考上图),最后得到的这个(bx,by,bw,bh)就是描述的 BoundingBox(预测框)的信息。

    那么如何去描述他们的损失呢?

    首先,yolo 按照上面同样的方式先用 GroundTruth(真实框)和 anchorbox(先验框, 锚框)算出偏移和缩放比,设为 dx,dy,dh,dw,这个即标签 label,

    然后网络输出的 BoundingBox(预测框)是 tx,ty,th,tw 四个值,用来代表和 anchorbox(先验框, 锚框)的偏移和缩放比。

    我们的目标是通过学习 (tx,ty,tw,th) 这四个值去微调 anchorbox(先验框, 锚框)得到 BoundingBox(预测框),使得 BoundingBox 不断接近 GroundTruth(真实框)也就是 (tx,ty,tw,th) 不断的接近(dx,dy,dh,dw),梯度下降的目标也就是缩小这两者的 LOSS,这就是 yolov2 中的回归方法。 (具体 YOLO 损失函数可以网上搜索)

    [转载]YOLO v2/V3 中anchor box和bounding box的理解 - 图2

    图片来源:https://zhuanlan.zhihu.com/p/77051828
    https://blog.csdn.net/shenkunchang1877/article/details/105648111