最近刚接触深度学习,做的一个项目目标是在YOLOv4-tiny+Deepsort的结构上进行优化。
Deepsort实现追踪的基本原理是利用运动信息通过卡尔曼滤波对下一帧中目标的位置进行预测;通过特征提取网络提取外观信息,利用这两种信息来做匈牙利匹配,该帧目标和前一帧的某目标匹配上时就可能生成追踪的轨迹。
学习时,想要将Deepsort的特征提取网络更换为fast-reid。但由于电脑上没有gpu,需要对官方下载下来的代码做一定的改动。
首先在github上下载官方代码:https://github.com/JDAI-CV/fast-reid
修改一些地方:
fastreid/data/build.py loc:89-96
train_loader = DataLoaderX(
comm.get_local_rank(),
dataset=train_set,
num_workers=num_workers,
batch_sampler=batch_sampler,
collate_fn=fast_batch_collator,
pin_memory=False,######修改True为False
)
fastreid/data/data_utils.py loc:127-132
#torch.cuda.set_device(self.local_rank)####
for item in self.generator:
if self.exit_event.is_set():
break
self.queue.put(item)
self.queue.put(None)
fastreid/engine/defaults.py loc:213-216
# AMPTrainer if cfg.SOLVER.AMP.ENABLED else
self._trainer = SimpleTrainer(
model, data_loader, optimizer, param_wrapper
)
fastreid/modeling/meta_arch/build.py loc:18-26
def build_model(cfg):
"""
Build the whole model architecture, defined by ``cfg.MODEL.META_ARCHITECTURE``.
Note that it does not load any weights from ``cfg``.
"""
meta_arch = cfg.MODEL.META_ARCHITECTURE
model = META_ARCH_REGISTRY.get(meta_arch)(cfg)
# model.to(torch.device(cfg.MODEL.DEVICE))
return model
训练:
python ./tools/train_net.py --config-file=./configs/market1501/AGW_R50.yml --num-gpus=0
其实基本就是哪里报错了就注释掉,但是在cpu上训练十分十分缓慢…