MMDetection3调试技巧查看Backbone Neck Head 输出---MMDetectionv2迁移

参考:MMDetection issue #9479

查看 Backbone :

# 骨架网络构建
# from mmengine.registry import Registry
import torch
import numpy as np
from mmdet.registry import MODELS


if __name__ == '__main__':
    backbone=dict(
        type='ResNet',
        depth=50,
        num_stages=4,
        out_indices=(0,1,2,3), # 返回四个特征图的索引
        frozen_stages=1,       # 冻结stem和第一层
        # 表示全部的BN需要梯度更新
        norm_cfg=dict(type='BN', requires_grad=True), 
        norm_eval=True,       # 且全局网络的BN进入eval模式
        style='pytorch')
    
    
    backbone=MODELS.build(backbone)
    neck=MODELS.build(dict(
        type='GlobalAveragePooling',
        kernel_size=(8, 4), stride=1))
    head=MODELS.build(dict(
        type='LinearReIDHead',
        num_fcs=1,
        in_channels=2048,    # 2048
        fc_channels=1024,
        out_channels=128,
        num_classes=380,            ### 如何确定?? 
        loss_cls=dict(type='mmpretrain.CrossEntropyLoss', loss_weight=1.0),
        loss_triplet=dict(type='TripletLoss', margin=0.3, loss_weight=1.0),
        norm_cfg=dict(type='BN1d'),
        act_cfg=dict(type='ReLU')))
    
    x = torch.randn(2,3,256,128)
    
    all_backbone_outputs = backbone(x)
    for out in all_backbone_outputs:
        print(out.shape)
    backbone_outputs = (all_backbone_outputs[-1],) # [2,2048,8,4]
    
    neck_outputs = neck(backbone_outputs)   # [2,2048] 全部展开
    print(neck_outputs[0].shape)
    
    # 经过 Neck(GAP) 后输出的向量维度应与 head.in_channel 一致
    head_outputs = head.forward(neck_outputs)
    print(head_outputs.shape)
    
    

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值