当前位置: 首页 > news >正文

【mmcv自己理解】

mmcv自己理解

  • 一、TPVformer为例理解注册机制
  • 二、deformable为例理解注册机制
    • 1
    • 2 同样,DetrTransformerEncoder类中__init__函数有

一、TPVformer为例理解注册机制

config文件

self_cross_layer = dict(type='TPVFormerLayer',attn_cfgs=[dict(type='TPVCrossViewHybridAttention',tpv_h=tpv_h_,tpv_w=tpv_w_,tpv_z=tpv_z_,num_anchors=hybrid_attn_anchors,embed_dims=_dim_,num_heads=num_heads,num_points=hybrid_attn_points,init_mode=hybrid_attn_init,),dict(type='TPVImageCrossAttention',pc_range=point_cloud_range,num_cams=_num_cams_,deformable_attention=dict(type='TPVMSDeformableAttention3D',embed_dims=_dim_,num_heads=num_heads,num_points=num_points,num_z_anchors=num_points_in_pillar,num_levels=_num_levels_,floor_sampling_offset=False,tpv_h=tpv_h_,tpv_w=tpv_w_,tpv_z=tpv_z_,),embed_dims=_dim_,tpv_h=tpv_h_,tpv_w=tpv_w_,tpv_z=tpv_z_,)],feedforward_channels=_ffn_dim_,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'cross_attn', 'norm', 'ffn', 'norm')
)self_layer = dict(type='TPVFormerLayer',attn_cfgs=[dict(type='TPVCrossViewHybridAttention',tpv_h=tpv_h_,tpv_w=tpv_w_,tpv_z=tpv_z_,num_anchors=hybrid_attn_anchors,embed_dims=_dim_,num_heads=num_heads,num_points=hybrid_attn_points,init_mode=hybrid_attn_init,)],feedforward_channels=_ffn_dim_,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'ffn', 'norm')
)
model = dict(type='TPVFormer',use_grid_mask=True,tpv_aggregator=dict(type='TPVAggregator',tpv_h=tpv_h_,tpv_w=tpv_w_,tpv_z=tpv_z_,nbr_classes=nbr_class,in_dims=_dim_,hidden_dims=2*_dim_,out_dims=_dim_,scale_h=scale_h,scale_w=scale_w,scale_z=scale_z),img_backbone=dict(type='ResNet',depth=101,num_stages=4,out_indices=(1, 2, 3),frozen_stages=1,norm_cfg=dict(type='BN2d', requires_grad=False),norm_eval=True,style='caffe',dcn=dict(type='DCNv2', deform_groups=1, fallback_on_stride=False), # original DCNv2 will print log when perform load_state_dictstage_with_dcn=(False, False, True, True)),img_neck=dict(type='FPN',in_channels=[512, 1024, 2048],out_channels=_dim_,start_level=0,add_extra_convs='on_output',num_outs=4,relu_before_extra_convs=True),tpv_head=dict(type='TPVFormerHead',tpv_h=tpv_h_,tpv_w=tpv_w_,tpv_z=tpv_z_,pc_range=point_cloud_range,num_feature_levels=_num_levels_,num_cams=_num_cams_,embed_dims=_dim_,encoder=dict(type='TPVFormerEncoder',tpv_h=tpv_h_,#200tpv_w=tpv_w_,#200tpv_z=tpv_z_,#16num_layers=tpv_encoder_layers,#5pc_range=point_cloud_range,#[-51.2, -51.2, -5.0, 51.2, 51.2, 3.0]num_points_in_pillar=num_points_in_pillar,# [4, 32, 32]num_points_in_pillar_cross_view=[16, 16, 16],return_intermediate=False,transformerlayers=[self_cross_layer,self_cross_layer,self_cross_layer,self_layer,self_layer,]),positional_encoding=dict(type='CustomPositionalEncoding',num_feats=_pos_dim_,#[24, 24, 16]h=tpv_h_, #200w=tpv_w_, #200z=tpv_z_ #16)))

TPVFormer函数实现在tpvformer.py里

#通过注册创建tpv_head类
self.tpv_head = builder.build_head(tpv_head)
self.img_backbone = builder.build_backbone(img_backbone)
self.img_neck = builder.build_neck(img_neck)

tpv_head、img_backbone、img_neck是函数名字,具体实现TPVFormerHead、ResNet、FPN
调用tpv_head

img_feats = self.img_backbone(img)
img_feats = self.img_neck(img_feats)
outs = self.tpv_head(img_feats, img_metas)#img_feats[1,6,3,928,1600]

TPVFormerHead函数的实现注册在tpv_head.py里

TPVFormerHead类中用到encoder函数,encoder具体实现在TPVFormerEncoder

self.encoder = build_transformer_layer_sequence(encoder)
tpv_embed = self.encoder([tpv_queries_hw, tpv_queries_zh, tpv_queries_wz],#[14000,64][13200,64][13200,64]feat_flatten,#[6, 30825, 1, 64]feat_flatten,#[6, 30825, 1, 64]tpv_h=self.tpv_h,#200tpv_w=self.tpv_w,#200tpv_z=self.tpv_z,#16tpv_pos=tpv_pos,#[14000,64][13200,64][13200,64]spatial_shapes=spatial_shapes,#[4,2]level_start_index=level_start_index,#尺寸4,值[0, 23200, 29000, 30450]img_metas=img_metas,)

TPVFormerEncoder类中应包含transformerlayers函数,transformerlayers具体实现在self_cross_layer(即TPVFormerLayer)

二、deformable为例理解注册机制

1

config文件

bbox_head=dict(type='DeformableDETRHead',num_query=300,num_classes=2,in_channels=2048,sync_cls_avg_factor=True,as_two_stage=False,transformer=dict(type='DeformableDetrTransformer',encoder=dict(type='DetrTransformerEncoder',num_layers=1,transformerlayers=dict(type='BaseTransformerLayer',attn_cfgs=dict(type='MultiScaleDeformableAttention', embed_dims=256),feedforward_channels=1024,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'ffn', 'norm'))),decoder=dict(type='DeformableDetrTransformerDecoder',num_layers=6,return_intermediate=True,transformerlayers=dict(type='DetrTransformerDecoderLayer',attn_cfgs=[dict(type='MultiheadAttention',embed_dims=256,num_heads=8,dropout=0.1),dict(type='MultiScaleDeformableAttention',embed_dims=256)],feedforward_channels=1024,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'cross_attn', 'norm','ffn', 'norm')))),

在这里插入图片描述

transformerlayers中DeformableDetrTransformer类__init__函数有

       encoder=dict(type='DetrTransformerEncoder',num_layers=1,transformerlayers=dict(type='BaseTransformerLayer',attn_cfgs=dict(type='MultiScaleDeformableAttention', embed_dims=256),feedforward_channels=1024,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'ffn', 'norm'))),decoder=dict(type='DeformableDetrTransformerDecoder',num_layers=6,return_intermediate=True,transformerlayers=dict(type='DetrTransformerDecoderLayer',attn_cfgs=[dict(type='MultiheadAttention',embed_dims=256,num_heads=8,dropout=0.1),dict(type='MultiScaleDeformableAttention',embed_dims=256)],feedforward_channels=1024,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'cross_attn', 'norm','ffn', 'norm')))),

2 同样,DetrTransformerEncoder类中__init__函数有

在这里插入图片描述

       num_layers=1,transformerlayers=dict(type='BaseTransformerLayer',attn_cfgs=dict(type='MultiScaleDeformableAttention', embed_dims=256),feedforward_channels=1024,ffn_dropout=0.1,operation_order=('self_attn', 'norm', 'ffn', 'norm'))),

文章转载自:

http://9uZtMlzt.qhfdL.cn
http://PAn32sms.qhfdL.cn
http://ArqgrZNo.qhfdL.cn
http://agB0WIIQ.qhfdL.cn
http://UNeCEfk0.qhfdL.cn
http://WVmJcZg1.qhfdL.cn
http://M0z1Avp5.qhfdL.cn
http://DYoLJ2m4.qhfdL.cn
http://1Ua6nv5l.qhfdL.cn
http://6t7qi6PU.qhfdL.cn
http://aefFFgBS.qhfdL.cn
http://KbrWmEB5.qhfdL.cn
http://3310nX6Z.qhfdL.cn
http://VlMzTbsW.qhfdL.cn
http://tzives5x.qhfdL.cn
http://azY8UeWb.qhfdL.cn
http://7QvmP4Zm.qhfdL.cn
http://Hrj94slP.qhfdL.cn
http://qPAkv0Cf.qhfdL.cn
http://Ab5pWlfP.qhfdL.cn
http://8vUhu4KQ.qhfdL.cn
http://aK837uLF.qhfdL.cn
http://ee6Y9HqF.qhfdL.cn
http://aBsKbY1O.qhfdL.cn
http://3jo5tqIS.qhfdL.cn
http://65zqJAiF.qhfdL.cn
http://ENYcs3Qu.qhfdL.cn
http://MbCDE3n3.qhfdL.cn
http://vONgekoD.qhfdL.cn
http://OJg2oDSL.qhfdL.cn
http://www.dtcms.com/a/366556.html

相关文章:

  • 解密llama.cpp:从Prompt到Response的完整技术流程剖析
  • Python基础(①⑤heapq模块)
  • 大数据工程师认证推荐项目:基于Spark+Django的学生创业分析可视化系统技术价值解析
  • 出海马来西亚,九识智能携手ALS共同启动首个自动驾驶物流车公开道路试运行
  • AIcoding- Aider项目架构概览学习笔记
  • vue3 + vite + Element Plus项目中 SCSS 预处理器完整配置指南
  • CSS 优先级详解:理解选择器权重和层叠规则
  • 「IoC容器式学习法」:一种让知识按需注入的顶级思维模型
  • 前端基础(四十二):非固定高度的容器实现折叠面板效果
  • 【Element Plus 表单组件样式统一 CSS 文字特效实现指南】
  • HTML + CSS 创建图片倒影的 5 种方法
  • 解决 Rollup failed to resolve import “vue3-json-viewer/dist/index.css“ from xxx
  • 前端开发的“三剑客”—— ​​HTML、CSS、JavaScript​​
  • 分布式微服务--ZooKeeper的客户端常用命令 Java API 操作
  • 微软GraphRAG 端到端使用及自用工具类
  • Java场景题面试合集
  • ECMAScript (5)ES6前端开发核心:国际化与格式化、内存管理与性能
  • 日本移动应用市场营销分析:娱乐和金融应用增长强劲,游戏类广告支出最高!
  • UDS统一诊断服务
  • 服务器不支持node.js16以上版本安装?用Docker轻松部署Node.js 20+环境运行Strapi项目
  • Simulations RL 平台学习笔记
  • 基于华为云的STM32F103C8T6智能停车场管理系统
  • 分布式对象存储系统 Minio 之 Centos 环境安装
  • 不只是链接:我用“双向链表”思维做内容推广,效率飙升300%
  • 【Markdown转Word完整教程】从原理到实现
  • Matlab中的转置—— ‘ 和 .‘ 的区别
  • YOLOv8自定义目标检测模型训练与应用指南
  • 揭秘23种设计模式的艺术与技巧之结构型
  • Git常用命令大全:高效开发必备
  • Flowable——流程定义与部署(RepositoryService)