目录
- 一、开发环境
- 二、论文代码
- 三、导入项目
- 四、数据准备
- 五、训练模型
- 六、tensorboard可视化训练结果
- 七、测试模型
- tips
一、开发环境
windows10+Anaconda3+Python3.6+CUDA10.0+Pytorch1.0+Pycharm
二、论文代码
三、导入项目
1、通过git下载或者zip网页下载,二选一
2、导入项目至pycharm
四、数据准备
1、数据集
从官网上下载数据集,并解压至目录 ./ProcessedData
ShanghaiTech下载链接
UCF-QNRF下载链接
UCF_CC_50下载链接
2、导入数据集到项目
3、resize图片并且产生training labels.
- 进入到./datasets/XXX/ 运行prepare_XXX_mod64.py
- 以SHHB为例,其他数据集相信大家能举一反三,打开prepare_SHHB_mod64.py
- 先处理一些肉眼可见的问题,第9行
- 第81行,改成和20行同样的代码风格
- 第15行的路径做适当修改
- 还有一个特别荫蔽的错误,get_density_map_gaussian.py需要修改一行代码,第10行改成 h w c,通道位置有错需要改正,否则,运行网络会出现通道不匹配的问题。
- 第11行里面只填train或者test,分别对应处理train数据集,test数据集
- 修改上面一行代码,右键run,preapre_SHHB_mod64.py,分别处理好train数据集,和test数据集。
- 处理好SHHB数据集之后的目录
4、预训练的模型下载
一些计数网络(例如VGG,CSRNet等)在ImageNet上采用了预先训练的模型。
所以我们需要从torchvision.models下载vgg16-397923af.pth
- 下载链接
- 把下载好的vgg16-397923af.pth,放在目录./models/Pretrain_Model/
- 目录
五、训练模型
1,训练代码呢?
- 很遗憾,在前文提到的AMRNet代码链接中,原作者并没有公布训练代码和训练代码相关的说明材料。
- 因为这个原因,这个项目我迟迟没有成功复现,不过我在同门的提醒下,在ECCV2020官网检索这篇文章。
- 找到了这篇文章,肯定的,因为这篇文章是发在ECCV2020年的。但是让我兴奋的是下面有个附加材料按钮!!
- 下载下来一看,不就是我一直苦苦寻找的训练模型的代码和文字说明材料吗?恭喜我发现了原作者留的彩蛋,感谢我同门的提醒。哈哈。
- 把框中的三个文件复制到我们的项目中,README文件直接替换掉。最后三块拼图终于归位了!
- 看完整的目录结构
- 为了大家方便,补充材料,我给一个云盘链接。
- 链接:https://pan.baidu.com/s/1x01abMKFrW6L1THPb89hqQ 提取码:tlyf
2,训练模型
- 根据最新的README文件,进行操作。
- 在train_config.py里和./datasets/XXX/setting.py设置相应参数。这里我们依然以SHHB作为例子,即打开./datasets/SHHB/setting.py。
- train_config.py第14行,改成VGG16_LCM_REG
- train_config.py第18行
- train_config.py第46行,epoch默认设置为500,我为了减少训练时间,epoch改成了100
- setting.py设置训练batchsize,这里我们根据自己显卡的情况,默认值是1
- 在命令行输入命令:python train.py
- 出现一个问题,排查解决之后,就再次运行命令python train.py
- 问题1:ModuleNotFoundError: No module named ‘config’
- 解决1:SHHB.py第13行,直接注释,没有起作用的一行导包
- 成功进入了训练的流程,漫长的等待过程之后,会得到一个性能最好的模型
- 经过漫长的训练,终于训练完了100epoch。上图
六、tensorboard可视化训练结果
- 开始训练模型的时候,会在根目录生成exp文件,里面保存着每次迭代性能更好的权重文件和tensorboard的events文件,我们就需要用到这个events文件。
- 通过命令行来启动tensorboard
- 成功启动tensorboard后,命令行窗口会出现一个网址,复制到浏览器地址栏访问,上图看结果。
七、测试模型
1,修改test_config.py
- 第16行,修改数据集为SHHB
- 第23行,添加上我们刚训练好的模型路径
- 输入命令行:python test.py,可以看到成功在用模型来测试了
- 测试完毕,通过命令行窗口查看结果,看起来和我们训练100epoch的结果差不多。
tips
- ok各位,以上就是这篇文章的全部内容了,非常感谢你能看到这里。如果你觉得这篇文章对你有所帮助求赞求收藏求评论求转发,别忘了点一个大大的关注,各位的支持就是我最大的动力,再见!邮箱:734140820@qq.com