MMdetection记录"/>
MMdetection记录
MMdetection官方文档:
.html
官方有原文
我只提取我在意的
模块详解
- 一个batch进来之后到backbone,例如ResNet
- 输出的单尺度或者多尺度特征图然后到neck进行特征融合或增强,例如FPN
- 上述多尺度特征最终输入到 head 部分,一般都会包括分类和回归分支输出
- 在整个网络构建阶段都可以引入一些即插即用增强算子来增加提取提取能力,典型的例如 SPP、DCN 等等
- 目标检测 head 输出一般是特征图,对于分类任务存在严重的正负样本不平衡,可以通过正负样本属性分配和采样控制
- 为了方便收敛和平衡多分支,一般都会对 gt bbox 进行编码
- 最后一步是计算分类和回归 loss,进行训练
- 在训练过程中也包括非常多的 trick,例如优化器选择等,参数调节也非常关键
backbone
源码在mmdet/models/backbones
如果要自己新建backbone,使用mmcv/utils/registry.py的注册机制,在class前加@BACKBONES.register_module(),然后再init文件中导入并加入__all__的声明。
和detectron2相似。
通过 dict 形式的配置来实例化任何已经注册的类,detectron2是通过yaml配置文件的方式
pretrained='torchvision://resnet50',
backbone=dict(type='ResNet', # 骨架类名,后面的参数都是该类的初始化参数depth=50,num_stages=4,out_indices=(0, 1, 2, 3),frozen_stages=1,norm_cfg=dict(type='BN', requires_grad=True), norm_eval=True,style='pytorch'),
neck
mmdet/models/necks
对backbone之后的特征进行加工
init文件中可以看到,常用的FPN
__all__ = ['FPN', 'BFP', 'ChannelMapper', 'HRFPN', 'NASFPN', 'FPN_CARAFE', 'PAFPN','NASFCOS_FPN', 'RFP', 'YOLOV3Neck', 'FPG', 'DilatedEncoder','CTResNetNeck', 'SSDNeck', 'YOLOXPAFPN'
更多推荐
MMdetection记录
发布评论