0


Faster R-CNN遇到的所有坑及解决方法

最近项目要求,需要跑一些两阶段算法作为对比,首先选经典的 Faster R-CNN 作为开头,一年前跑过,想着应该很简单就跑上了,没想到配环境 + 跑通用了一个晚上的时间。先放图,零点顺利跑通训练上:

在这里插入图片描述
话不多说,上问题和解决方法。

问题1 到底用 torch1.0.0 还是 torch0.4.0(torchvision同理)

这个问题可以说是最关键,也是坑最多的了。选择对版本已经成功了一半。我这次用的是Github官网上 pytorch 版本的 jwyang/faster-rcnn.pytorch ,最开始我选择的是 pytorch0.4.0 版本的项目代码:

https://github.com/jwyang/faster-rcnn.pytorch

它的 README 中这样描述:

在这里插入图片描述
注意,千万不要用 python2.7 ,惨痛的教训

首先, pytorch0.4.0 第一个坑就是安装,目前torch官网支持安装指令的最老版本是 pytorch0.4.1 ,想要安装 0.4.0 版本,一个方法是下载 .whl 文件,另一个方法就是全网找指令(当时我用了这个方式成功安装了 0.4.0 版本)

在这里插入图片描述
还有一个关键的问题就是版本之间的冲突问题,包括代码的冲突。pytorch0.4.0 版本过老,导致很多 python3.6 安装包版本与其冲突,包括但不限于 scipy、opencv、torchvision 等。此外,在 pytorch0.4.0 版本的 Faster R-CNN 项目中,有些 import 操作是基于老版本写的,想解决这种问题就又回到了版本匹配问题上(全是坑)

后来找到 Faster R-CNN 的 pytorch1.0.0 版本代码,柳暗花明:

https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0

强烈推荐大家用这个版本,顺利太多了。官网上 torch1.0.0 与对应的 torchvision 安装指令一气呵成(cuda10.0版本):

conda install pytorch1.0.0 torchvision0.2.1 cuda100 -c pytorch

安装好最关键的 torch 之后,后面就按部就班 pip install -r requirements ,建好数据集、预训练权重、遇到 no module named ’ ’ 问题 pip install 即可。

问题2 AttributeError: ‘version_info’ object has no attribute ‘version

pip install pyparsing==2.4.7

问题3 libmkldnn.so.0: undefined symbol: cblas_sgemm_alloc

pip install mkl==2019

问题4 TypeError: load() missing 1 required positional argument: ‘Loader‘

找到对应代码位置,将 yaml.load() 改为 yaml.safe_load()

问题5 ImportError: cannot import name ‘imread’

将 scipy 版本降为 1.2.1 :先 uninstall scipy, 之后 pip install scipy==1.2.1

问题6 ImportError: cannot import name ‘_mask’

pip install pycocotools

问题7 KeyError: ‘uav_s’ 、KeyError: ‘uav_l’

最后重点说一下这个问题。

在 lib/datasets/pascal_voc.py 中,定义自己训练数据的类别:

self._classes =('__background__',# always index 0'UAV_L','UAV_S')

这里小小提醒一下,不能删除 ‘background’ 类。之所以会遇到 KeyError 是因为 pascal_voc.py 中定义的类别与 xml 标签不对应,这里提示我 xml 中存在我未定义的 ‘uav_s’ 和 ‘uav_l’ 两类。然而,利用 ultraedit 软件检查标签并没有发现这两类,困惑了很久,最后尝试直接在类别定义中加入 ‘uav_s’ 和 ‘uav_l’ 两类:

self._classes =('__background__',# always index 0'UAV_L','UAV_S','uav_l','uav_s')

竟然成功了…

这里的问题我分析可能是因为项目代码不区分大小写,导致小写的类别对应不上报错,有更好解决方案的朋友欢迎指导~

以上就是一晚上的收获了,训练完还要看一下效果如何(肯定不好,哈哈)

参考
Faster-RCNN.pytorch的搭建
Github faster-rcnn.pytorch-issue


本文转载自: https://blog.csdn.net/sp7414/article/details/125160112
版权归原作者 sp7414 所有, 如有侵权,请联系我们删除。

“Faster R-CNN遇到的所有坑及解决方法”的评论:

还没有评论