美文网首页
训练的分离loss设计

训练的分离loss设计

作者: Yah_da | 来源:发表于2022-05-15 20:59 被阅读0次

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

实验方法

资源:
192@pengxk/TOV_mmdetection/

1、按实例分离loss

  • \color{blue}{目标: 改loss,实现不同size的目标实例用不同loss}
    --> algorithm: 根据dr修改bboxes_weight、labels_weight
  • \color{red}{Bug: mAP只有2}
    理论分析:原算法bboxes_gt, lables = filter(bboxes_gt, lables)导致大量漏检。因scale被滤掉的gt,导致其区域原本的正例被匹配为负例。
    \color{blue}{新算法: } 1)gt_valid = filter(bboxes_gt, lables)2)filter(sampling_result, gt_valid)
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()

  • \color{red}{Bug: mAP只有10}
    实验分析:将filter(dr=[0.25, 0.33, 0.5])的保留区间都设为全部(即不过滤),性能与之前一致。说明代码实现应该正确,可能是算法策略本身的问题。
    解决:尝试区间调参(按数量划分>>直接按\frac{1}{2}scale划分),性能上升至20+。

改进: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。
  • mmAP 提升惊喜
  • 疑问:效果!=给loss加权值 \color{red}{???}
  • \color{red}{Bug: 区间外\ losses\_pts\_refine\ 全0},在跟loss的过程发现
    FocalLoss
    origin
    weight: 0.7098
  • 区间外losses_pts_refine全0 [Bug]

用什么区间、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越多,学习率设置越大}

  • 修改pth文件的epoch

  • 按图片分开算loss

  • env对了 0.5h

  • 首次功能实现 24h

  • debug 24h *n
    \color{red}{爆显存} --> 新建多个不必要的高维tensor
    \color{red}{loss\ nan} --> loss\_cls, loss\_pts\_refine同步异常变大--> num_total_samples_refine=0?
    训几轮后出\color{red}{bug} --> if None: pass

  • \color{red}{Bug: mAP只有5,依旧低的离谱}
    分析:评测代码有bug?No 依赖的模型正确导入?算法本身bug(一张图多个实例共享一个dr)?

  • 算法:

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)

相关文章

  • 训练的分离loss设计

    (03-16) 21d这个方法本身可能不起效 实验方法 资源:192@pengxk/TOV_mmdetection...

  • 【面经】项目经验?

    1、一些loss怎么设计? 2、网络结构怎忙设计? 3、优化方法怎么理解? 4、训练方式? 5、一些框架设计理念?...

  • 深度模型常见加速训练策略架构篇(一)---分布式训练介绍

    一、当前模型训练速度的瓶颈 (一)、当前模型训练步骤 读取Mini batch,前向传播计算loss loss反向...

  • 2019-08-15工作进展

    昨天工作: mvdssm:网络训练完成,训练阶段网络的title loss基本上没有下降,pic loss表现的比...

  • 2019-03-04

    # 1. 过拟合表现: - 模型对训练集表现很好,对测试集拟合不好 - Loss(训练)小,Loss(测试)大 #...

  • CTC Loss反向传播

    单个样本的Loss定义: 训练集上CTC Loss定义: 将所有样本的loss求和: CTC目标函数 给定语音序列...

  • caffe训练报错集锦

    Caffe 训练时loss等于87.33或者NAN问题描述:训练过程中突然loss一直等于87.33原因:计算过程...

  • 卷积神经网络之GAN(附完整代码)

    不管何种模型,其损失函数(Loss Function)选择,将影响到训练结果质量,是机器学习模型设计的重要部分。对...

  • 【论文】Facenet:A Unified Embedding

    论文提出一种新的loss函数,名叫Triplet Loss。 训练方法 因此我们在训练的时候需要3张图片为一组。有...

  • 生成对抗网络训练心得

    训练WGAN的时候,有几个方面可以调参: a. 调节Generator loss中GAN loss的权重。 G...

网友评论

      本文标题:训练的分离loss设计

      本文链接:https://www.haomeiwen.com/subject/qrbarrtx.html