init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')), 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 具体配置在mmdet/model/backbones中的resnet.py文件中 Neck特征融合模块 该模块实际上执行的是通道维度变换操作。 具体配置在mmdet/model/neck中的ChannelMapper.py文件中 neck=dict( type...
1、定义一个新的backbone(以MobileNet为例) 首先建立一个新的文件:mmdet/models/backbones/mobilenet.py,在该文件中实现MobileNet的细节: importtorch.nnasnnfrom..builderimportBACKBONES@BACKBONES.register_module()classMobileNet(nn.Module):def__init__(self,arg1,arg2):# 细节跳过passdefforward(self,x):# ...
backbone=dict( type='Darknet', depth=53, # 指定darknet-53 out_indices=(3, 4, 5), # 最后backbone将输出序号为(3,4,5)的3个特征层 init_cfg=dict(type='Pretrained', checkpoint='open-mmlab://darknet53')) # 预训练模型地址 1.2 neck YOLOV3Neck其实就是FPN的魔改版,单个3*3卷积改为堆叠了...
在MMDetection中,所有的参数都使用字典dict的形式构建。 先看主要模型model,这里指定了backbone的结构,init_cfg为默认参数,后续载入模型会将其进行覆盖。 后面是train_pipeline和test_pipeline,定义了数据预处理的各种方式。 最后看第一行的_base_,这里相当于引用了另一个文件...
init_cfg=dict(type='TruncNormal',layer='Conv2d',std=0.03)),# 设置初始化方式 右滑查看完整代码 除了Neck 部分,SSD 的 head 也进行了重构,包括 head 的模型结构以及 SSD 的 AnchorGenerator。 首先,对 head 的模型结构增加了更多定制化的接口,包括可以配置是否使用深度可分离卷积以及是否堆叠单个 level 下 ...
首先运行了mmdet.__init__ 然后运行了mmdet.models.__init__ 然后里面 from.backbonesimport*# noqa: F401,F403from.registryimport(BACKBONES,DETECTORS,HEADS,LOSSES,NECKS,ROI_EXTRACTORS,SHARED_HEADS) 可以看到调用了其实已经开始注册 我也做了实验
backbone: 通常是FCN网络,用于提取特征图,例如ResNet。neck: backbones 和 heads之间的部分, 例如FPN, ASPP.head: 用于特定任务的部分,例如bbox 预测 和 mask 预测.roi 提取器: 用于从特征图中提取特征部分,例如RoI Align。我们还使用上述组件编写了一些通用的检测管道,例如SingleStageDetector 和 TwoStageDetector...
及对应的训练train_pipeline。builder.py依据mmcv.utils中的build_from_cfg定义了build_backbone,build_...
# cfg.model.backbone.frozen_stages = 4cfg.model.bbox_head.num_classes =6 # 单卡训练时,需要把 SyncBN 改成 BNcfg.norm_cfg = dict(type='BN', requires_grad=True) cfg.metainfo = {'classes': ('Rider','My bike','Moveable','Lane Mark...
先看主要模型model,这里指定了backbone的结构,init_cfg为默认参数,后续载入模型会将其进行覆盖。 后面是train_pipeline和test_pipeline,定义了数据预处理的各种方式。 最后看第一行的_base_,这里相当于引用了另一个文件./faster_rcnn_r50_fpn_1x_coco.py的内容 ...