修改源码
方法1:
从福哥编译镜像处学到的方法是,首先将mmdet正常编译,然后将编译后的mmdet移到主要工程目录下。运行程序时,为了调用工程目录下的mmdet,sh中需要加入下述命令:
1 | export PYTHONPATH=. |
由于python就近调用机制,所以可以直接调用工程目录下的mmdet
方法2:
根据王老板的方法,在mmdet外部构建一个修改包,将所有注册器都加载进去,
加载所有注册器为:
1 | from mmdet.models.registry import BACKBONES,NECKS,ROI_EXTRACTORS,SHARED_HEADS,HEADS,LOSSES,DETECTORS |
当我向对PIPELINES的loading增加函数方法时,可以:
1 | import os.path as osp |
加载修改包:
1 | import sys |
加载的都是当前工作目录下的mmdet和修改包
总体而言,感觉方法二更人性化,若要修改源码直接继承在修改包就行,不像方法一每次必须到源码处对应修改
参数
降低显存
1 | fp16 = dict(loss_scale=512.) #混合精度训练 |
跨卡BN
1 | norm_cfg = dict(type='SyncBN', requires_grad=True) #backbone+FPN+head中插入 |
增点
1 | #代替smoothL1Loss |