训练的分离loss设计

2022-05-15  本文已影响0人  Yah_da

(03-16) 21d
这个方法本身可能不起效

实验方法

资源:
192@pengxk/TOV_mmdetection/

1、按实例分离loss

def get_targets(gt_inds_valid_list=None,):
        ### add by fei ##
        if gt_inds_valid_list is None:
            gt_inds_valid_list = [None for i in range(num_imgs)]
        ### add by fei ##

def _point_target_single(gt_inds_valid=None,):
        ### filter code here ##

RepPointsHead Pipline: loss() --invoke->get_target()--invoke-> _point_target_single()

改进:filter改为soft方式(weight[filtered] = 0>>weight[filtered] = soft

2、按图片分离loss

原则:图片不同dr对应loss的权值,与图里目标的尺度分布有关。
要求:一张图片里的所有目标的权值处理一致,最终效果相当于给loss加了权值(pos_ins与neg_ins对应的权值都要同步修改)。\color{blue}{[TODO]}\ \color{red}{no}
Bug注意:由于两个stage(initrefine)assigner不同、匹配策略不同,造成它们输出的匹配上的(matched)proposals数量不同。


细节proposal: valid_flagsunmap_outputs==True:由于生成的anchor可能不在图片里(inside_flag==False),因此匹配前先去掉这些proposal,匹配完返回前再映射回最初的proposals。

用什么区间、mean or median、什么soft_weight函数形式、...都是消融实验的问题,首先能肯定是:这是有性能提升的
而现在最需要验证的是:分离loss与FPN分层相结合,是否有效

3、FPN assigned by layers

[\color{blue}{TODO:} Here]

4、Predictor

卡住没啥进展,就会感觉抑郁


实验记录 (倒序)

Separate-instance
0.01\_2b8g epoch
1

2
...
9

10

11

12
mmAP mmAP_{s} mmAP_{m} mmAP_{l}
soft(258.5)_{(wrong)} 23.2 23.3 ... 27.9 28.1 28.0 28.5 29.6
soft(258.5)_{(3e-1)} 23.4 23.5 ... 27.9 28.2 28.2 28.6
FPN 29.4
FPN+wrong 24.0 24.3 ... 27.9 28.2 28.1 28.7 29.3

说明:1)instance:对soft_weight敏感,0.3优于0.9
2)似乎FPN与soft此消彼长 1+1<1

Separate-image
0.01\_2b8g epoch
1
2 3 4 5 6 7 8 9 10 11 12 上界
median_{(95)} 25.0 24.8 25.0 23.7 24.4 23.5 23.3 23.9 28.4 29.0
median_{(258.5)} 24.9
24.8
24.6
25.4
24.9
25.2
24.6
23.8
24.7
24.6
24.5
23.9
23.6
23.8
24.2
23.7
28.2
27.4
28.0
27.4
28.1
27.4
28.4
-
29.0
median_{(258.5)}+0.25 28.4 29.0

说明:image:对soft_weight不敏感

0.01\_2b\color{blue}{4g} epoch
1
2 3 4 5 6 7 8 9 10 11 12
\color{brown}{median_{(258.5)}} 21.7 21.7 21.7 21.1 22.2 22.0 21.4 21.7 27.0 27.3 27.3 28.0
\color{brown}{median_{(95.084)}} 21.0 21.6 21.5 21.2 21.5 24.6 24.1 23.7 27.5 27.6 27.7 28.0
mean_{(258.5)}
mean_{(114.951)} 21.1 21.1 20.7 - - - - - - - - -
min_{(258.5)}

说明:区间95比258将样本集合划分地更松散,区间95对应小目标(dr=0.5)的范围更小,猜测具有更好的区分度

AP:PR面积
mAP:某iou_thr下所有类别的AP
mmAP:所有iou_thr
\color{blue}{GPU越多,学习率设置越大}

input: dr in [0.25, 0.33, 0.5]

key: 根据dr,选出对应的proposals
    [x] 从backbone传dr至head.loss
        or 计算f_map得dr
    [] label,gt_weights = filter_weights(dr, label_weights: (b, w, h), bbox_weights: (???))

key1: 算dr
    # 传dr
    # AnchorFreeHead :: BaseDenseHead.forward_train()
    # ResNet_DR.forward(x, dr) ??? dr from who
key2: for layer in 多层:



参考:
[1] 多尺度训练 web
[2] python区间 interval(1,2)

上一篇 下一篇

猜你喜欢

热点阅读