以下链接是个人关于DG-Net(行人重识别ReID)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号− 海量资源。 \color{blue}{ 海量资源}。 海量资源。
行人重识别0-04:DG-GAN(行人重识别ReID)-目录-史上最新最全:https://blog.csdn.net/weixin_43013761/article/details/102364512
极度推荐的商业级项目: \color{red}{极度推荐的商业级项目:} 极度推荐的商业级项目:这是本人落地的行为分析项目,主要包含(1.行人检测,2.行人追踪,3.行为识别三大模块):行为分析(商用级别)00-目录-史上最新无死角讲解
训练教师网络首先我们还是和之前一样,阅读README.md: 上面说,我们可以直接使用他们的预训练模型,也可以选择自己去训练教师网络,其中给除了自己训练数据的链接。
本人暂时还不想去自己训练一个教师模型,所以这里直接使用其训练好的预训练模型。如果后续有时间,我会带着大家一起去训练好一个教师模型。下面就是我们的核心,DG-Net的训练了。
Train DG-Net上面叫我们,首先检查一下configs/latest.yaml文件,然后改变其中的data_root,把他改成你准备好数据的目录,如…/Market-1501/pytorch,本人设置如下:
#data_root: ../Market/pytorch/ # Dataset Root
data_root: E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15_bk/pytorch
然后就可以开始训练了,按照说明执行
python train.py --config configs/latest.yaml
报错如下
FileNotFoundError: [Errno 2] No such file or directory: './models\\best\\opts.yaml'
只需要把下载好的预训练模型拷贝一份再项目根目录即可: 然后重新运行,依旧会报错如下:
in _check_not_importing_main
is not going to be frozen to produce an executable.''')
RuntimeError:
解决办法是在源码中添加如下:
然后再重新运行即可,打印信息类似如下:
比较尴尬奥,又报错了:
RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU 0; 8.00 GiB total capacity; 5.81 GiB already allocated; 28.04 MiB free; 102.55 MiB cached)
这里报错的原因是GPU的内存不够,然后我重新修改了configs/latest.yaml文件:
#batch_size: 8 # BatchSize
batch_size: 4 # BatchSize
然后再重新运行,这下就没有保存了,打印信息类似如下:
L_total: 56.3308, L_gan: 2.8830, Lx: 4.4244, Lxp: 4.8421, Lrecycle:0.0000, Lf: 0.0000, Ls: 0.0000, Recon-id: 8.2262, id: 17.8089, pid:18.1462, teacher: 0.0000
Elapsed time in update: 0.973396
Epoch: 00 Iteration: 00000080/00100000 DLoss: 2.9394 Reg: 0.0099
L_total: 52.1151, L_gan: 3.4995, Lx: 4.6391, Lxp: 4.5101, Lrecycle:0.0000, Lf: 0.0000, Ls: 0.0000, Recon-id: 7.2401, id: 15.7984, pid:16.4279, teacher: 0.0000
Elapsed time in update: 0.993365
Epoch: 00 Iteration: 00000081/00100000 DLoss: 3.1002 Reg: 0.0084
L_total: 51.3723, L_gan: 2.9243, Lx: 4.1254, Lxp: 4.8870, Lrecycle:0.0000, Lf: 0.0000, Ls: 0.0000, Recon-id: 7.4951, id: 15.3315, pid:16.6091, teacher: 0.0000
Elapsed time in update: 0.977385
Epoch: 00 Iteration: 00000082/00100000 DLoss: 2.9976 Reg: 0.0083
L_total: 47.5834, L_gan: 3.1881, Lx: 4.1713, Lxp: 4.6657, Lrecycle:0.0000, Lf: 0.0000, Ls: 0.0000, Recon-id: 6.7660, id: 14.2492, pid:14.5431, teacher: 0.0000
Elapsed time in update: 0.996337
Epoch: 00 Iteration: 00000083/00100000 DLoss: 3.0359 Reg: 0.0089
L_total: 46.5247, L_gan: 3.0651, Lx: 3.8544, Lxp: 4.2617, Lrecycle:0.0000, Lf: 0.0000, Ls: 0.0000, Recon-id: 7.0247, id: 14.0054, pid:14.3136, teacher: 0.0000
这样,我们的模型就开始训练了。下面我们就要开始去分析代码了,当然先分析的还是训练代码,相信这也是大家最关注的地方。
这里给大家说一个事情,每次我再讲解一个新项目的时候,都是告诉大家如何先把代码跑起来,然后再去分析。为什么要先跑起来再去分析呢?主要的原因在于,万一分析完之后,代码就没有办法训练,或者根本跑不起来,那样就白白浪费了我们的时间。