写在前面

本文主要参考教程:tensorflow版的Mask_RCNN,这个教程也是跑通github上Mask_RCNN项目的教程,为了在避免不必要的废话和原教程可能改变之间trade off,本教程将简述主要步骤,详情请参考原教程,但是同时记录需要注意的点和一些坑。
同时考虑到各种兼容性问题,有必要说明一下我的软硬件环境:
操作系统:Windows10 家庭中文版
CPU:i5 8700 8核 8G内存
GPU:GTX 1060 6G显存
conda version:4.8.2
时间:2020-03-04 (考虑到未指定版本的包默认下载最新版本,故声明时间点)

一步一步来

1.git clone项目

关于怎么git项目,这里不再赘述。
clone后第一步去看看项目READ.md(当然在github上也可以直接看),为了节省时间,这里列出几个值得注意的地方:

  • python版本要求
  • 使用requirements.txt安装包和其他注意事项

    这里只是提醒一下,这几点具体怎么处理我在下面会仔细阐述,不用担心。
2.conda创建好环境
  • conda下载使用
    conda可以快速简单地创建python环境,推荐使用,但同时考虑到conda的库不够全,推荐使用pip下载包(下面介绍的requirements.txt安装方式也是要使用pip),即“conda创建环境+pip安装包”的方式。关于conda和pip的下载使用这里不再赘述,感兴趣的可以参考我写的关于conda和pip使用的介绍:
    Anaconda初探conda的基本命令使用pip安装包Python,pip,conda和Anaconda 安装好Anaconda和pip以后,做好进行永久性换上境内镜像,不然之后的install总是会报timeout错误。
  • 创建python=3.5.2环境
    conda创建环境需要指定
    前面也看到过项目环境要求介绍:
  • maskrcnn训练结果map怎么看 maskrcnn代码_python

  • 即Python 3.4,但是因为之前跑Keras-yolo3使用的是Python 3.5.2不想再下载其他包了,就直接使用的Python 3.5.2,(据说>=3.4都可以):
conda create -n mask_rcnn python=3.5.2
3.pip安装包

之前就注意到:

maskrcnn训练结果map怎么看 maskrcnn代码_Mask_RCNN教程_02


所以接下来不用按教程一个一个包单独下载,直接使用项目目录下的requirements.txt安装即可,但是经实测,有几点需要注意:

  • 升级好pip:
python -m pip install --upgrade pip
  • 升级好setuptools
python -m pip install --upgrade setuptools
  • 使用requirements.txt安装包
    看下项目目录下的requirements.txt:

    经实测,我的机器上直接安装tensorflow>=1.3.0会报和tensorflow_board兼容性错误:

    在requirements.txt中直接指定:
tensorflow==1.6.0

可以成功安装(这也是我跑Keras-yolo3的环境),这个问题应该不是普遍的,不报错就不用改。
回到之前,指定tensorflow版本之后,开始安装:

cd 项目目录
python -m pip install -r requirements.txt

这里记录一个“奇怪”的坑:
在windows server上使用Anaconda创建python环境安装requirements.txt时,总是报:

ERROR: Could not find a version that satisfies the requirement tensorflow==1.6.0 (from versions: none)
ERROR: No matching distribution found for tensorflow==1.6.0

更奇怪的是

python -m pip search tensorflow

也没有1.6.0的版本
pip换成Alibaba的源后,又报错:

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output

无语,最后解决:
卸载掉Anaconda32位,安装64位,pip仍使用Tsinghua的源,又ok了。完全可以找到安装1.6.0。

4.下载官方模型

下载好mask_rcnn_coco.h5,下载路径有很多,之前说的REAM.md注意点中就有:

maskrcnn训练结果map怎么看 maskrcnn代码_tensorflow_03


但国内的github下载速度很慢(这个挺大,251M),可以在网上找其他的资源,我就是使用tensorflow版的Mask_RCNN给的百度网盘的链接下载的。

下载好后,放入项目目录。

5.运行demo

官方给的教程建议直接运行项目目录下/samples/demo.ipynb:

maskrcnn训练结果map怎么看 maskrcnn代码_tensorflow_04


但是由于我没怎么使用过Jupyter notebook(好吧,其实我试了一下,但是Jupyter切换自己使用的kernel总是有问题,索性放弃),也为了更好的适用性,现将demo.ipynb转为demo.py:

maskrcnn训练结果map怎么看 maskrcnn代码_Mask_RCNN教程_05


注:ipynb转py指令 —— jupyter noconvert --to script xxx.ipynb,会在当前目录下生成xxx.py。生成后:

maskrcnn训练结果map怎么看 maskrcnn代码_Mask_RCNN教程_06


直接运行:demo.py:

maskrcnn训练结果map怎么看 maskrcnn代码_maskrcnn训练结果map怎么看_07


报错:

maskrcnn训练结果map怎么看 maskrcnn代码_cocoa_08


那就安装:

python -m pip install pycocotools

又报错:

maskrcnn训练结果map怎么看 maskrcnn代码_python_09


好吧,其实这是个大问题,潜藏在之前提到的注意点中:

maskrcnn训练结果map怎么看 maskrcnn代码_maskrcnn训练结果map怎么看_10


事情是这样的:在demo.ipynb(当然现在是demo.py了,是一回事)中有这么一句:

maskrcnn训练结果map怎么看 maskrcnn代码_cocoa_11


即demo.py是调用我们之前下载官方模型——COCO weights即mask_rcnn_coco.h5文件来进行测试,而使用上面也说了:

to train or test on MS COCO install pycocotools

如果要用MS COCO进行训练或测试就必须安装pycocotools这个包,这也是为什么requirements.txt安装没有报错,运行demo.py才报错的原因 —— 你可以不使用mask_rcnn_coco.h5进行训练测试,使用自己的数据训练模型或者其他的模型,这样就不用装pycocotools包。

好了,现在知道为什么要装pycocotools了,那么安装过程中为什么又会报Microsoft Visual C++ 14.0 is required的这个错误呢?

原因其实在上面的注意点的最后一行已经说了:

maskrcnn训练结果map怎么看 maskrcnn代码_maskrcnn训练结果map怎么看_10


安装pycocotools必须要有Microsoft Visual C++ 2015 build tools(其实就是14.0,2015对应14.0)

所以先去安装Microsoft Visual C++ 2015 build tools,这个东西网上可靠的资源还蛮少(某N上很多人利用这个公开资源赚币,嗯), 这里放上两个可靠的资源:

visualcppbuildtools_full.exevisualcppbuildtools_full.exe

安装好后,继续:

python -m pip install pycocotools

原错误消失,继续报错:

maskrcnn训练结果map怎么看 maskrcnn代码_Mask_RCNN教程_13


错误:

Command line error D8021 : invalid numeric argument ‘/Wno-cpp’

解决方案:

不再使用pip在线安装,采用本地编译安装:

  • 下载:cocoapi(内含pycocotools):
    https://github.com/cocodataset/cocoapi
  • 进入PythonAPI文件夹:

    修改setup.py文件:

    为:

    到setup.py目录下,执行:
python setup.py build_ext --inplace

把生成的pycocotools放入conda相应环境下的python的库目录下——%python安装路径%\Lib\site-packages,对于当前的conda环境:

先看环境位置:

maskrcnn训练结果map怎么看 maskrcnn代码_cocoa_14


库位置:C:\Users\apple.conda\envs\mask_rcnn\Lib\site-packages,放入:

maskrcnn训练结果map怎么看 maskrcnn代码_tensorflow_15

解决方案参考:

其实上面的pycocotools安装方式也是Mask_RCNN的READ.md中建议的:

maskrcnn训练结果map怎么看 maskrcnn代码_cocoa_16

6.注释掉get_ipython().run_line_magic()

安装好pycocotools后,回去运行demo.py:

python demo.py

报错:

maskrcnn训练结果map怎么看 maskrcnn代码_tensorflow_17


报错:get_ipython().run_line_magic(‘matplotlib’, ‘inline’)

查资料知,这是Jupyter notebook执行的语句,将ipynb文件转为py文件执行后就会报此错,粗暴的解决方式是,直接注释掉:

maskrcnn训练结果map怎么看 maskrcnn代码_python_18


再次运行,成功!





maskrcnn训练结果map怎么看 maskrcnn代码_python_19




Q&A

Q1:既然直接pip install pycocotools会报错,最终还是通过本地安装 —— git cocoapi中本地生成pycocotools包,导入python库,那么我们中间的解决的报错 —— Microsoft Visual C++ 14.0是不是多余的呢? 直接本地安装不就好了?
A1:经实测,不行,如果不安装Microsoft Visual C++ 14.0,那么本地通过cocoapi安装时还是会报错。这也印证了README.md

Q2:安装Microsoft Visual C++ 14.0后,除了还有其他方式安装吗?
A2:有的

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

看命令大致也知道,就是将git cocoapi和pip install命令合在一起,但经实测不起作用(命令行半天没反应,不知道是在下载cocoapi还是哪里出错了),所以只放在这里作为参考

Q3:如果通过Jupyter notebook运行demo.ipynb自然下面这行不会报错:

get_ipython().run_line_magic('matplotlib', 'inline')

A3:但是要先熟悉Jupyter notebook的用法,特别是如何在Jupyter notebook中使用conda环境。

Q4:requirements.txt中tensorflow不是cpu版本的,如果想使用gpu版本的呢?
A4:见我另外一门教程Mask_RCNN入门(三)—— 使用gpu进行训练和测试