寒假期间,研读了王立民老师的论文,决定去复现其文章中的代码:https://github.com/MCG-NJU/MOC-Detector。由于自己的显卡太过于垃圾,因此我将代码git到了学校的集群环境。但是在复现过程中仍出现很多问题。下面我将自己遇到的问题以及解决方法分享给大家,供参考。如有不足,希望大家补充。

实验环境
该代码在github上说明的环境是:
Ubuntu 16.04.1, Python 3.5.2, PyTorch 0.4.1, torchvision 0.2.1,NVIDIA TITAN XP with cuda 9.0。

刚开始在运行的时候,按照Readme创建了MOC的conda环境,环境的设置与github保持一致。但在执行make.sh的时候出现了几个错误:
(1)TypeError: dist must be a Distribution instance
出现这个错误,网上很多方案都是将setuptools降低到0.9.8,但是这个方法对我无效。在查看多个方案之后,最后的方法是将gcc降低到5.5.0。可能会有小伙伴有疑问,为什么会把gcc降低到5.5.0,实际上这个错误是与py35有关,

python3.7/distutils/cmd.py", line 57, in __init__
raise TypeError("dist must be a Distribution instance")

这是报错的原话。
如果大家选择更新pytorch那么这个问题任然会有,而且还会产生另外一个错误:ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
这个问题,有的博主也做了说明,这个是版本问题,高版本的语法规则改变了,因此做相应替换就可以了。但是,如果你觉得改代码麻烦,那就选择pytorch=0.4.1。
所以,上面的问题,用的方法就是将gcc降低到5.5.0,然后运行make.sh就可以了。至于你愿不愿意改代码,看个人喜好。如果你把orch.utils.ffi的相关代码改动了,在train的时候还会有no moudule _ext的问题出现。
(2)ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
这个问题参考一下博客:
https://blog.csdn.net/ShuqiaoS/article/details/88420326
说的十分详细。

**

在train的时候可能会遇到

**
(1)ImportError: /cm/shared/apps/gcc5/5.5.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.22’ not found

这个问题的产生就是因为我们在 bash make.sh的时候将gcc降到了5.5.0,低版本对应的GLIBCXX没有到3.4.22,然后你如果用gcc6.5.0,那么报错则是ImportError: /cm/shared/apps/gcc5/5.5.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26’ not found。所以最好的办法是将gcc升高点,我采用的是gcc9.2.0,这样train的这个报错就解决了
(2)依旧是train的时候,ImportError: cannot import name '_wrap_function’
这个问题就比较尴尬了。就是我问题二写的那里,如果只是替换部分代码可能对make.sh没影响,但是在train的时候会报错。这个问题该怎么解决呢,最好的办法是重写DCNv2的代码(我将这个代码重写了,当然是参照网上)。如果不愿意重写,那么你的pytorch就用0.4.1,显卡可能要低一点,20系列之下的应该都可以用。如果拟采用30系列的显卡去训练,那我还是推荐你去重写DCNv2的代码。
(3)ImportError: No module named '_ext’
这个问题是因为我重写的DCNv2代码,参考https://github.com/CharlesShang/DCNv2/issues/96。新修改的代码在build后生成了.so文件,但是没改名,所以才报错。解决办法就是在 ${MOC_PATH}/src/network/DCNv2下面创建一个ext文件夹,然后在ext文件夹下再创建一个dcn_v2文件夹,然后将生成的.so文件cp到这个文件夹下。这样这个问题就解决了
(4)RuntimeError: cuda runtime error (11) : invalid argument at /opt/conda/conda-bld/pytorch_15354919743
这个是因为cuda版本问题,对于30系列的显卡或者20系列的显卡,这个问题最好的解决方案就是重写DCNv2,将pytorch升级到1.4+。这里参考了https://blog.csdn.net/neudeep/article/details/113058729。我私聊该博主了,但是并没有回复我,所以我自己修改了DCNv2的代码,使得它可以兼容pytorch1.x的版本。
(5)undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE
这是由于torch的cuda版本和机器的cuda版本不同导致。利用conda install pytorch=1.5就可解决啦,如果不放心那就参考pytorch的官方安装指令。

我遇到的大概就这几个问题,核心就是修改DCNv2的代码(一劳永逸)。

Actions as Moving Points复现相关推荐

  1. Actions as Moving Points

    论文下载地址:https://arxiv.org/abs/2001.04608 代码地址:https://github.com/mcg2019/MOC-Detector 论文创新点:当前存在的动作识别 ...

  2. hdu 4717 The Moving Points(三分+计算几何)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4717 说明下为啥满足三分: 设y=f(x) (x>0)表示任意两个点的距离随时间x的增长,距离y ...

  3. CodeForces - 1311F Moving Points(线段树+离散化)

    题目链接:点击查看 题目大意:给出 x 轴上的 n 个点,每个点都有一个位置和一个速度,每个点会根据速度在 x 轴上移动,现在规定dis( x , y )为点 x 和点 y 在移动过程中的最小距离,我 ...

  4. The Moving Points

    hdu4717:http://acm.hdu.edu.cn/showproblem.php?pid=4717 题意:给你n个点的坐标,然后每个点都有一个速度,求在什么时刻任意两个点的最大距离最小,以及 ...

  5. 【ECCV2020】接收论文列表part1

    ECCV2020将于2020年8月23-28日在线上举行,今年共接受了1361篇论文,本文是接收论列表的第一部分,第二部见链接 Paper ID Paper Title Category 267 Qu ...

  6. 2020AI顶会的腾讯论文解读 | 多模态学习、视频内容理解、对抗攻击与对抗防御等「AI核心算法」

    关注:决策智能与机器学习,深耕AI脱水干货 报道 |  腾讯AI实验室 计算机视觉领域三大顶会之一的 ECCV(欧洲计算机视觉会议)今年于 8 月 23-28 日举办.受新冠肺炎疫情影响,今年的 EC ...

  7. ECCV 2020开源项目合集 (ECCV 2020 paper list with code/data)

    文章转载自https://www.paperdigest.org/2020/08/eccv-2020-papers-with-code-data/,如有侵权,留言后删除. 以下表格列出了ECCV 20 ...

  8. 【汇总】行为识别、时序行为检测、弱监督行为检测、时空行为定位论文代码(持续更新!!!)

    视频行为识别与轻量化网络的前沿论文.代码等 https://zhuanlan.zhihu.com/c_1207774575393865728 CVPR 2020 行为识别/视频理解论文汇总 https ...

  9. VTK使用矢量数据弯曲几何体

    vtkWarpVector is a filter that modifies point coordinates by moving points along vector times the sc ...

最新文章

  1. Spring原理总结
  2. 常考数据结构与算法:数组中未出现的最小正整数
  3. 待删除未删除 问题解决
  4. 带有权重的服务器SLB的实现
  5. 事件,信号量,互斥量
  6. Python【7】-数据分析准备
  7. MySQL学习笔记7:基本查询
  8. 随机森林做特征重要性排序和特征选择
  9. 为github帐号添加SSH keys
  10. java压缩图片等比缩放_java对图片进行压缩和resize缩放的方法
  11. 关于mongodb的可视化工具:nosql manager for mongodb
  12. Oracle在Linux平台安装时涉及的/etc/security/limits.conf
  13. Java多线程学习总结(5)——乐观锁和悲观锁的基本概念、实现方式(含实例)、适用场景及常见面试题
  14. Nginx 配置https证书认证
  15. PHP7通过yum源安装及性能测试
  16. Atitit 基于文件的数据库保存系统json文档数据库 目录 1.1. 一行数据一个文件,一个文件夹微数据表表 1 1.2. 保存C:\wamp\www\tisye\tisye.php 1 1.3
  17. linux 端口映射 命令
  18. cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client libr....
  19. 2022-04-08美团笔试练题
  20. 8 卷积神经网络——解决参数太多问题(1)

热门文章

  1. 15款js编辑器大全
  2. 绘制cos和sin图表
  3. 6JS库-前端框架(库)-jQuery选择器
  4. OpenCV的基本矩阵操作与示例
  5. 自动投注c语言,yy七周年自动挂机
  6. linux半夜三点半定时重启,linux 定时任务 crontab相关(三)
  7. qevent 事件的accept()和ignore()
  8. 卸载 Mac 默认的 Xcode 附带的 git
  9. 2020-06-11
  10. Loadrunner安装破解