YOLOX:SimOTA算法细节

        SimOTA的思想是:以最小的代价cost得到最好的学习效果。

 

        SimOTA首先进行预筛选,与FCOS类似,YOLOX有一个类似于FCOS中subbox的概念,称为fixed center area,也就是说,当样本点同时落入GT和fixed center area时,才会通过筛选,如下图所示,橙色√为通过筛选的样本点。下图引用自@太阳花的小绿豆。

        计算prediction-gt对的匹配度,即这个对(pair)的cost,计算公式为:

YOLOX:SimOTA算法细节_第1张图片

        其中λ为平衡系数,Lcls为gt和prediction之间的类别损失,Lreg为gt和prediction之间的回归损失。在代码中并未按这个公式计算,代码中的计算如下所示:

cost = (
            pair_wise_cls_loss
            + 3.0 * pair_wise_ious_loss
            + 100000.0 * (~is_in_boxes_and_center)
        )

         然后开始构建矩阵,一个矩阵是筛选出的样本点与所有GT的cost矩阵,另一个矩阵时筛选出的样本点与所有GT的IoU矩阵,如下图所示:

YOLOX:SimOTA算法细节_第2张图片

        IoU矩阵横向求和并向下取整后得到的值即为该GT所要分配的正样本数k,这种策略在OTA一文中称为dynamic k estimation。对于GT1而言,需要分配3个正样本,那么在cost矩阵中GT1一行中将cost由小到大排序后选择前三个样本点作为正样本,即样本点1、样本点6、样本点2。以此类推对GT2和GT3的正样本进行分配。

        值得注意的一种特殊情况是:若某一个样本点被同时分配给了多个GT,比如样本点3倍同时分配给了GT2和GT3,那么这时候那个GT的cost小,就由哪个GT进行分配。

        YOLOX论文链接:YOLOX: Exceeding YOLO Series in 2021​​​​​​​

        OTA论文链接:OTA: Optimal Transport Assignment for Object Detection(孙剑大佬:想不到吧,YOLOX是我写的,OTA还是我写的)

你可能感兴趣的:(YOLOX论文笔记,深度学习,人工智能,算法)