最近做项目需要用到Mask R-CNN,于是花了几天时间配置、简单跑通代码,踩了很多坑,写下来分享给大家。
首先贴上官方Mask R-CNN的Github地址:https://github.com/matterport/Mask_RCNN,源码可以从这里下载,READ ME里也有一些介绍。
0、Mask R-CNN环境
Mask R-CNN是基于Python3,Keras,TensorFlow。
- Python 3.4+(自行安装,本文为Python 3.6)
- Jupyter Notebook
- TensorFlow>=1.3.0
- Keras>=2.0.8
- numpy、scipy、Pillow、cython、matplotlib、scikit-image、opencv-python、h5py、imgaug、IPython[all]
1、clone代码到当前目录,代码文件夹名为Mask_RCNN-master
1 git clone https://github.com/matterport/Mask_RCNN.git
2、按Mask_RCNN-master/requirements.txt安装依赖环境
1 pip3 install -r requirements.txt
注:此步安装了numpy、scipy、Pillow、cython、matplotlib、scikit-image、tensorflow>=1.3.0、keras>=2.0.8、opencv-python、h5py、imgaug、IPython[all]
我在此步遇到了问题,安装shaply的时候报错,OS Error:找不到指定模块
用pip install单独安装shapely还是得到一样的错误。我的解决方法是:到https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely(一个非官方的扩展包下载地址,推荐),下载和你的python版本对应的shapely.whl:
这里cp27指的是python2.7,win32是32位,win_amd64就是64位。我的电脑是64位,python3.6,所以我选择了第六个:
接着运行如下命令:
1 python -m pip install Shapely-1.6.4.post1-cp36-cp36mwin_amd64.whl
安装成功。
3、下载训练好的COCO权重mask_rcnn_coco.h5
官网的下载地址为:https://github.com/matterport/Mask_RCNN/releases,下载下图第二个即可,把它放在Mask_RCNN-master目录下。
若网速太慢,可从网盘下载。网盘链接:https://pan.baidu.com/s/12A0E6h-mP4zl9oqoTvj6Ig,密码:4eks[1]
(网盘来源:https://blog.csdn.net/tanmx219/article/details/82828727)
4、安装pycocotools
pycocotools是coco训练集的api,如果你想使用coco训练、测试你的网络,就必须安装pycocotools。coco api提供了 Matlab, Python 和 Lua 的 API 接口,该 API 接口可以提供完整的图像标签数据的加载,parsing 和可视化。此外,网站还提供了数据相关的文章,教程等。[2]
MS COCO数据集主页:http://cocodataset.org/
Github主页:https://github.com/Xinering/cocoapi,仅Linux使用,Windows不适用
关于API更多细节:http://cocodataset.org/#download
首先说清楚,这是个巨坑。安装了三天,期间遇到许多问题,一一解决之后才发现,pycocotools的作者根本没考虑Windows。一番百度之后,网上有两种解决方式:第一种是继续使用Linux版,暴力删除无效参数Wno-cpp
和 Wno-unused-function
,详见:https://www.jianshu.com/p/de455d653301
但这种实在过于粗暴啊...好在大佬在Github上分享了windows可用版:https://github.com/philferriere/cocoapi
一句就能解决:
1 pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
注:必须安装Visual Studio C++。
5、安装jupyter notebooks
jupyter notebooks是一个web应用程序,你可以在上面编写、运行代码,可视化数据并查看结果,不仅如此,你的代码是被写入独立的单元中并被单独执行的,这允许用户测试项目中的特定代码块,而无需从脚本的开始执行代码。有关jupyter notebooks的基本介绍和用法:机器学习新手必看:jupyter notebooks入门指南
安装:
1 pip install jupyter
安装成功后,python36/scripts如下:
执行jupyter notebooks只需在命令行里输入:
1 jupyter notebook
小提示:这款软件叫jupyter notebooks,运行只需打jupyter notebook就好,不需要加s。
启动成功,浏览器会自动打开notebooks窗口。有的计算机不会自动跳转,比如我,命令行会提示如下:
复制最后一条网址:http://localhost:8888/?token=15771ade271dbc85b09003a6921e6029d9b3e6a153120465,浏览器打开即可。每次运行jupyter notebooks给的token都是不一样的,需要每次都复制打开。
6、运行demo.ipynb
至此Mask R-CNN的环境就全部配置好啦,我们可以从Mask_RCNN-master/samples/demo.ipynb开始运行。demo.ipynb展示了一个使用MS COCO预先训练的模型来分割自己图像中的对象的例子, 它包括在任意图像上运行对象检测和实例分割的代码,在代码中,demo分割的图像随机来源于Mask_RCNN-master/images。
打开jupyter notebooks,按下图右下角的upload,打开demo.ipynb
项目文件夹目录改成你的Mask_RCNN-master目录:
运行代码,最下方会出现可视化结果:
不知为何,我的运行示例是错误的...正常的应该是这样:
至此Mask R-CNN的简单示例运行就完成了。有问题可在下方留言。
参考资料:
[1]:https://blog.csdn.net/tanmx219/article/details/82828727
[2]:https://www.cnblogs.com/q735613050/p/8969452.html