1.今天主要的任务是 跑通了 自定义数据集 可以跑自己标注的数据集进行实验应用啦
修改了一个模块 可以跑通了,如果在代码里面 写了代码 但是 下面forward的时候,没有使用到,可能会报错,尽量用到什么写什么就可以
# ---------------------------
self.gc128 = GlobalContextBlock(128,128)
# self.gc64 = GlobalContextBlock(64,64) 这里不注释 下文没有使用到的时候 会报错
# ---------------------------
## TODO: what is the number of mid chan ?
self.head = SegmentHead(128, 1024, n_classes, up_factor=8, aux=False)
if self.aux_mode == 'train':
self.aux2 = SegmentHead(16, 128, n_classes, up_factor=4)
self.aux3 = SegmentHead(32, 128, n_classes, up_factor=8)
self.aux4 = SegmentHead(64, 128, n_classes, up_factor=16)
self.aux5_4 = SegmentHead(128, 128, n_classes, up_factor=32)
self.init_weights()
def forward(self, x):
size = x.size()[2:]
feat_d = self.detail(x)
feat2, feat3, feat4, feat5_4, feat_s = self.segment(x)
# ----------------------------
feat_d=self.gc128(feat_d)
feat_s=self.gc128(feat_s)
# feat5_4=self.gc128(feat5_4)
3.在bisenetv2进行实验的时候,如果只是想简单测试一下,已经修改的模块是否可以跑通的时候,可以把epoch设置成低一些,这样的话,方便进行修改,如果设置过高的话,中间进行强制停止的时候,再次运行的时候,会报端口占用的错误。
在每一个主干特征之后,使用了 扩大感受野的模块进行了操作代码可以跑通了 ,但是在修改细节分支的时候,出现了错误的操作,主要原因是 预训练的模型参数和 我刚刚修改的不一样了,所以出现了这个问题,需要把 下面的代码这部分修改一下子:
def load_pretrain(self):
state = modelzoo.load_url(backbone_url)
for name, child in self.named_children():
if name in state.keys():
child.load_state_dict(state[name], strict=False) 修改这里为 False