Open Hgg12 opened 7 months ago
tinyvit中使用的PWCorr_SE_SCF31_IAB11_Concat_Release和mobilnetv2版本中的pwcorr_se_scf_sc_iab_sc_concat是一样结构,直接在yaml文件里面改一下名就能使用的,然后我将会后续的更新中修复这些小问题的
def forward(self, z, x): if self.training: z = self.backbone(z) x = self.backbone(x)
opt = self.fusion(z, x)
out = self.head(opt)
else:
z = self.backbone(z) #这行是我自己加的
return self.forward_tracking(z, x)
return out
#
def forward_backbone(self, z):
z = self.backbone(z)
return z
def forward_tracking(self, z_feat, x):
x = self.backbone(x)
opt = self.fusion(z_feat, x)
out = self.head(opt)
return out
训练过程中训练到验证集时会报错,为了使训练继续进行在tracker_model.py中我加了一行代码z = self.backbone(z),似乎是验证集走的是和训练集一样的模块,z需要先经过主干,不知是否是代码上传错误?
我找到了问题,这个是我之前为了方便部署,然后修改了一些模型,导致在评估时,传入ECM模块的是原始的图像信息而不是提取的特征,具体修改如下 class LightFC(nn.Module): def init(self, cfg, env_num=0, training=False, ): super(LightFC, self).init()
if cfg.MODEL.BACKBONE.TYPE == 'MobileNetV2':
self.backbone = MobileNetV2()
elif cfg.MODEL.BACKBONE.TYPE == 'tiny_vit_5m_224':
self.backbone = tiny_vit_5m_224()
self.training = training
if self.train:
load_pretrain(self.backbone, env_num=env_num, training=training, cfg=cfg, mode=cfg.MODEL.BACKBONE.LOAD_MODE)
self.fusion = pwcorr_se_scf_sc_iab_sc_concat(num_kernel=cfg.MODEL.FUSION.PARAMS.num_kernel,
adj_channel=cfg.MODEL.FUSION.PARAMS.adj_channel
)
self.head = repn33_se_center_concat(inplanes=cfg.MODEL.HEAD.PARAMS.inplanes,
channel=cfg.MODEL.HEAD.PARAMS.channel,
feat_sz=cfg.MODEL.HEAD.PARAMS.feat_sz,
stride=cfg.MODEL.HEAD.PARAMS.stride,
freeze_bn=cfg.MODEL.HEAD.PARAMS.freeze_bn,
)
def forward(self, z, x): if self.training: z = self.backbone(z) x = self.backbone(x) opt = self.fusion(z, x) out = self.head(opt) else: z = self.backbone(z) # 这里是要修改的地方 return self.forward_tracking(z, x) return out
# def forward_backbone(self, z): z = self.backbone(z) return z
def forward_tracking(self, z_feat, x): x = self.backbone(x) opt = self.fusion(z_feat, x) out = self.head(opt) return out
好的,感谢!我还有一个疑问,就是代码推理时所走ecm模块跟训练时一样,并不是论文中所说的推理时ecm模块中scf变为conv3x3
是的,推理时候不需要再额外转换,实际上转换后的模型也节省不了多少参数
为什么我训练默认是在CPU上进行的,按照说明设置的参数。但测试就是在gpu上跑的
您好,请问tinyvit版本中的ecm模块中的PWCorr_SE_SCF31_IAB11_Concat_Release是否未更新在代码库中,现在的ecm模块中还是mobilnetv2版本中的pwcorr_se_scf_sc_iab_sc_concat。