1.运行结果展示一下 (小白教程,大佬勿喷)
运行很慢,离实时运行(>30FPS)差得很远,但最终跑起来了
2.环境(python2.7 + opencv2.4.11 + keras==2.0.9 + tensorflow==1.12.3)
对于python2.7.17,是我现在ubuntu18系统的一个版本,另一个也是系统自带的python3.6.9. 两个系统,默认的是python2,可以通过终端输入指令python查看 .如果不是该版本的可以查怎么切换,方法很多.
对于opencv2.4.11,opencv官网下载源码包.如果以前已经安装过其他高版本的opencv,没关系,不是基于py2装的.接下来,在上一步改变系统py指向py2后,进入opencv2.4下,输入指令
cmake -D WITH_FFMPEG=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF ..
参考这篇博客的opencv2.4设置
大神这篇博客写的较详细,其他我就不在写了,下面主要写我遇到的问题
3.大坑
1)python2下的pip安装: ubuntu系统装好之后,如果没有更改,py2和py3都有各自带的pip版本,而且都是9.0.1版本.如果更改过系统指向py3,用 pip -V 查看的时候,后面会显示基于py3,对于我们后面用pip装包的时候不是很方便.建议对pip进行更新,py2下的pip只能更新到20.3版本
2)mask-rcnn : 下载好后,解压进入,会发现一个requirements.txt文件,打开删掉keras 和 tensorflow 两项,因为前面在py2下单独装了,可以输入 pip list 查看(py3下用pip3 list)如下图
此为py2下的包. 然后mask-rcnn 目录下 输入 sudo pip install -r requirements.txt 安装其他的包,此过程中或许会有错,最大的可能是网络问题,如果不行就将文件中的各个包pip装,网不行就加个源 如: sudo pip install h5py -i https://pypi.tuna.tsinghua.edu.cn/simple/ 装包的时候还可能出现opencv-python这玩意找不到与py2对应的版本,这不管,去opencv-python官网,如图
复制黄色部分进行pip安装,先把mask-rcnn装好再说.到这儿,应该就没啥问题了
3)关于Check.py : 这是用来检查mask-rcnn装好,能否正常工作的文件.在这遇到了我编译过程中最大问题. 最终发现不同电脑上的py2根目录下有些文件是不一样的,导致出现了一个
DescriptorBase(metaclass = DescriptorMetaclass):
^
SyntaxError: invalid syntax
这样的语法错误,根本问题是py2的有些文件变了,具体路径为 /usr/local/lib/python2.7/dist-packages/google 如果有不同电脑上就可以发现,可以直接将另一台电脑的google文件夹全拷贝过来,放到自己用的这台电脑,到此问题解决.(当然不是每个py2都有问题,至于这个问题怎么产生的,就不知道了,唯一知道的是py2已经不再维护了.) 如果不复制文件,可以找到这个错误的地方,将该处语法改为 DescriptorBase(six.with_metaclass(DescriptorMetaclass))
上述改过后,应该就能工作了.
4)关于段错误(核心已转储): 我在编译完代码,跑数据集的时候,遇到加载mask-rcnn时,出现这个错误.网上有人说是没指定opencv2.4.11,我们装的那个版本 (其实这儿有个很有意思的地方,就是dynaslam文件下的cmakelists.txt文件中指定的版本全是跟py2有关的,但是编译的时候却索引到py3,这是我不懂的地方,看图.有懂的朋友可以评论区解惑)
对于这个问题的解决,办法很普通,就是强制添加py2索引路径,如图
最后关于opencv2.4指定,cmakelists.txt文件其实已经指定了,只要你安装好了就能找到.到此问题解决,能够专心开始下一段学习.