[AMRNet] Adaptive Mixture Regression Network 复现过程记录

目录

  • 一、开发环境
  • 二、论文代码
  • 三、导入项目
  • 四、数据准备
  • 五、训练模型
  • 六、tensorboard可视化训练结果
  • 七、测试模型
  • tips

一、开发环境

windows10+Anaconda3+Python3.6+CUDA10.0+Pytorch1.0+Pycharm

二、论文代码

AMRNet代码链接

三、导入项目

1、通过git下载或者zip网页下载,二选一
[AMRNet] Adaptive Mixture Regression Network 复现过程记录_第1张图片
2、导入项目至pycharm
[AMRNet] Adaptive Mixture Regression Network 复现过程记录_第2张图片

四、数据准备

1、数据集
从官网上下载数据集,并解压至目录 ./ProcessedData
ShanghaiTech下载链接
UCF-QNRF下载链接
UCF_CC_50下载链接
2、导入数据集到项目
[AMRNet] Adaptive Mixture Regression Network 复现过程记录_第3张图片
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数据集之后的目录
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第4张图片

4、预训练的模型下载
一些计数网络(例如VGG,CSRNet等)在ImageNet上采用了预先训练的模型。
所以我们需要从torchvision.models下载vgg16-397923af.pth

  • 下载链接
  • 把下载好的vgg16-397923af.pth,放在目录./models/Pretrain_Model/
  • 目录
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第5张图片

五、训练模型

1,训练代码呢?

  • 很遗憾,在前文提到的AMRNet代码链接中,原作者并没有公布训练代码和训练代码相关的说明材料。
  • 因为这个原因,这个项目我迟迟没有成功复现,不过我在同门的提醒下,在ECCV2020官网检索这篇文章。
  • 找到了这篇文章,肯定的,因为这篇文章是发在ECCV2020年的。但是让我兴奋的是下面有个附加材料按钮!!
    在这里插入图片描述
  • 下载下来一看,不就是我一直苦苦寻找的训练模型的代码和文字说明材料吗?恭喜我发现了原作者留的彩蛋,感谢我同门的提醒。哈哈。
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第6张图片
  • 把框中的三个文件复制到我们的项目中,README文件直接替换掉。最后三块拼图终于归位了!
  • 看完整的目录结构
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第7张图片
  • 为了大家方便,补充材料,我给一个云盘链接。
  • 链接: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
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第8张图片
  • 出现一个问题,排查解决之后,就再次运行命令python train.py
  • 问题1:ModuleNotFoundError: No module named ‘config’
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第9张图片
  • 解决1:SHHB.py第13行,直接注释,没有起作用的一行导包
    在这里插入图片描述
  • 成功进入了训练的流程,漫长的等待过程之后,会得到一个性能最好的模型
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第10张图片
  • 经过漫长的训练,终于训练完了100epoch。上图
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第11张图片

六、tensorboard可视化训练结果

  • 开始训练模型的时候,会在根目录生成exp文件,里面保存着每次迭代性能更好的权重文件和tensorboard的events文件,我们就需要用到这个events文件。
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第12张图片
  • 通过命令行来启动tensorboard
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第13张图片
  • 成功启动tensorboard后,命令行窗口会出现一个网址,复制到浏览器地址栏访问,上图看结果。
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第14张图片
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第15张图片

七、测试模型

1,修改test_config.py

  • 第16行,修改数据集为SHHB
    在这里插入图片描述
  • 第23行,添加上我们刚训练好的模型路径
    在这里插入图片描述
  • 输入命令行:python test.py,可以看到成功在用模型来测试了
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第16张图片
  • 测试完毕,通过命令行窗口查看结果,看起来和我们训练100epoch的结果差不多。
    [AMRNet] Adaptive Mixture Regression Network 复现过程记录_第17张图片

tips

  • ok各位,以上就是这篇文章的全部内容了,非常感谢你能看到这里。如果你觉得这篇文章对你有所帮助求赞求收藏求评论求转发,别忘了点一个大大的关注,各位的支持就是我最大的动力,再见!邮箱:[email protected]

你可能感兴趣的:(神经网络,pytorch)