[MCNN] Crowd Counting 人群计数 复现过程记录

目录

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

一、开发环境

二、论文代码

三、导入项目

  • 通过Git或者网页下载器下载代码(二选一)
    第一个箭头:获取git链接,通过git下载;第二个箭头:通过网页下载器下载
  • 解压代码,import进PyCharm
    在这里插入图片描述

四、数据准备

  • 下载数据集ShanghaiTech;
  • 百度网盘: 链接:https://pan.baidu.com/s/1cC4wkHAWfJ15VKwG2qjJ6A
    提取码:i0xa
    在这里插入图片描述
  • 创建目录,以项目所在的目录为ROOT目录,建立一系列目录结构ROOT/data/original/shanghaitech/
    在这里插入图片描述
  • 把数据集文件 “part_A_final” 放在 ROOT/data/original/shanghaitech/
  • 把数据集文件 “part_B_final” 放在 ROOT/data/original/shanghaitech/

五、测试模型

1.下载预训练模型

  • 为了方便大家快速上手,节约训练模型的时间。论文代码链接下面的备注直接给出了已经训练好了的模型。
    在这里插入图片描述
  • 为了大家方便,我把权重文件放在我百度云盘上,供大家下载。
  • 链接:https://pan.baidu.com/s/1KfwXIq1FiclurA1q7oyKMQ 提取码:i851
    在这里插入图片描述

2.通过matlab创建测试数据的ground_truth文件

  • 通过matlab打开文件ROOT/data_preparation/create_gt_test_set_shtech.m在这里插入图片描述
    在这里插入图片描述
  • 这一步的操作,是把数据集中的图片送入matlab,创建测试数据的ground_truth文件(保存到test_data下一级)。在这里插入图片描述
    在这里插入图片描述

3.在pycharm中准备运行test.py()

  • 将test.py中save_output值修改为true
    在这里插入图片描述
  • 右键运行test.py

4.解决各种报错问题(每解决一个问题,就再次运行test.py)

  • 错误0:需要在anaconda下载一个包opencv
    在这里插入图片描述

  • 解决0:之后代码中的import cv才不会报错
    在这里插入图片描述

  • 错误1:print无小括号List item

  • 解决1:print之后的内容放在小括号中(之后相同的错误如法炮制)在这里插入图片描述

  • 错误2:找不到名为network的模块在这里插入图片描述
    在这里插入图片描述

  • 解决2:这个地方是路径的问题,在报错模块前加上路径在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  • 错误3:再次遇到print的问题在这里插入图片描述

  • 解决3:找到对应文件data_loader.py,参照【解决1】进行修改
    在这里插入图片描述
    在这里插入图片描述

  • 错误4:数据格式问题
    在这里插入图片描述

  • 解决4:cv2.resize内的参数是要求为整数,而python3中的’/’(除法),最后的结果自动转为浮点数
    所以使用’//'运算在这里插入图片描述

  • 错误5:没有找到as_matrix属性
    在这里插入图片描述

  • 解决5:老版本的pandas才有as_matrix属性,替换成values在这里插入图片描述

  • 错误6:又出现一个新老版本差异的问题在这里插入图片描述

  • 解决6:volatile已经无效,去掉括号内最后这个参数,并且在上面加上with torch.no_grad():
    在这里插入图片描述

5.成功调通了测试代码,并输出正确的评估值在这里插入图片描述

六、训练模型

  • 上面的内容是下载别人已经训练好的模型,进行预测。接下来我们自己手把手对模型进行训练。

1.创建训练和验证集的ground truth相关文件

  • 在matlab中打开ROOT/data_preparation/create_training_set_shtech.m
  • 同样的,'A’运行一次,'B’运行一次
    在这里插入图片描述
    在这里插入图片描述

2.一系列问题的出现和解决

  • 运行train.py文件(每解决一个问题,就重新运行一次train.py文件)
  • 问题1:由于路径,没有找到模块的问题
    在这里插入图片描述
  • 解决1:和之前类似
    在这里插入图片描述
  • 问题2:新老版本属性差异
    在这里插入图片描述
  • 解决2:maxint改成maxsize
    在这里插入图片描述
  • 问题3:关于range返回类型和list不匹配的问题
    在这里插入图片描述
  • 解决3:range() 返回的是“range object”,而不是实际的list 值。需要进行强转操作。网上很多朋友不知道在哪里进行强转,不是在random.py进行操作,而是data_loader.py。我试出来的。
    在这里插入图片描述
  • 问题4:新老版本产生的索引问题
    在这里插入图片描述
  • 解决4:loss.data[0]改成loss.item()
    在这里插入图片描述

3.代码运行成功,在不断训练模型了(激动!!!)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述4.代码中修改训练参数
在这里插入图片描述

tips

  • 第一次复现的论文,16年的CVPR。过程肯定有所不足,在这个过程中借鉴了很多博客的解决办法。当然这个记录会有很多纰漏和不足,如果朋友们有什么问题或者建议可以和我发邮件讨论,谢谢大家。734140820@qq.com
  • 39
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wpw5499

若有帮助,不妨请博主一杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值