在用fastReID做东西,做到哪儿写到哪儿。
pip安装一直失败,所以直接python setup.py install,听说会牺牲一定的性能。
FastReID定义的Dataloader把数据封装成一个字典
return {
"images": img,
"targets": pid,
"camids": camid,
"img_paths": img_path,
}
数据的解包和归一化在baseline类里面处理,所以最好别直接在主函数里替换model。
训练部分的代码被封装在train_loop和defaults两个文件里。调试的时候,堆栈显示DefaultTrainer调用的是AMPTrainer的run_step(),里面包含前向和反向的代码。
build_model好像只提供了一个BaseLine类,里面封装了对上面数据的处理和backcone,head。
fastreid封装的很好,不太想动他的源码部分。要把backbone改成Darts的训练代码,我不太会改,直接继承了BaseLine,改了下__init__,反正能用。
其实应该调nn.module的构造函数,再把init重写一遍的。
class NasBaseline(Baseline):
def __init__(self,cfg):
super().__init__(cfg)
# backbone
genotype=PCDARTS
self.backbone=Network(32,1000,14,0,genotype)