一. 依赖库版本
版本很重要, 错了不一定能跑起来
MASK R-CNN == 2.1
tensorflow == 1.15
keras == 2.0.8
scipy == 1.2.1
其他版本没有试过
二. 原材料
- Jupyter Notebook
安装教程移步到: Windows 下无痛安装 Jupyter Notebook与配置 - TensorFlow
安装教程移步到: Windows 下无痛安装 TensorFlow (CPU版) - MASK R-CNN 源代码
下载地址: https://github.com/matterport/Mask_RCNN/releases
点击 Source code(zip) 下载源码到本地, 解压后放到 Juyper Notebook 文件存放路径, 如 E:\Jupyter_Files, Jupyter Notebook 如何更改工作路径, 上面 Jupyter Notebook 安装教程里有讲
- COCO API
下载地址: https://github.com/cocodataset/cocoapi
如上图下载到本地, 解压后放到Juyper Notebook文件存放路径, 如 E:\Jupyter_Files
以上两个源码放到相同路径, 如下图, 我下载的 coco-master
- Microsoft Visual Studio 2015
网上一搜一大堆, 安装路径你喜欢就好, 注意, 选自定义安装, 编程语言把 C++ 勾上, 其他默认值, 以下就简称 VS2015 了
三. 运行步骤
- 打开 Jupyter Notebook
打开后可以看到刚才下载的两个文件夹已经显示出来
- 打开 Mask_RCNN-2.1->demo.ipynb, 打开 demo.ipynb 后部分截图如下
- 切换 Kernel
选择 Kernel->Change kernel, 切换到你想要的 Kernel
- 选择 Demo 源码的第 1 个 Code 单元格, 单元格边框会变成绿色, 绿色表示此单元格是可以编辑的, 蓝色表示不能编辑
- 激动人心的时刻来了, 按 Shfit + Enter 运行刚才选中的单元格, 看能不能运行, 答案是: NO!!!, 在单元格下面会输出一些错误信息, 这些信息就是我们这次要填的坑, 错误信息的顺序和上面 import 语句的顺序有关系
坑1: 看红框说的, 意思是你没有安装 skimage, 那先来填这个坑
打开你心爱的 Anaconda Prompt, 激活 Jupyter Notebook 选用的核所在的 Environment, 输入 pip install scikit-image 安装 skimage, 等待其安装完成
好不容易不 skimage 安装完成, 我们再选择第 1 个 Code 单元格, 按 Ctrl + Enter 运行试试看会怎样, OMG, 又来了一个坑, 此坑如下图
坑2: 红框是说你没有安装 matplotlib, 聪明的你是不是已经打开了 Anaconda Prompt, NO, NO, NO, 还有其他更容易的安装方法, 移步到 https://blog.csdn.net/yx123919804/article/details/84111774, 参照第6 步安装更方便
坑3: 安装完成 matplotlib 再来运行一次, 看还有没有坑, 果然还有
如何填? 参照安装 matplotlib 安装 keras
坑4: 填好了再运行一次, 这次显示的坑有两个, 不过先只填红框的那个
怎么填? 聪明的你可能已经看到了红框上面的这名话: # https://github.com/aleju/imgaug (pip3 install imgaug), 不就是运行一下 pip install imgaug 吗? 因为我们有选择运行的 Environment, 所以我们不这样做, 而是在 Anaconda Prompt 中激活 Environment, 然后输入 pip install imgaug 进行安装
坑5: 好, 现在已经填好了 4 个坑 s, 再来运行一次, 又来一个坑, 这次输出越来越多, 表示我们越接近成功了
这个坑可以仿 matplotlib 填, 但是搜索的名字不是 cv2, 而是 opencv, 哈哈, 被坑了吧
坑6: opencv 安装完毕, 再来运行一次, 你可能已经猜到还有坑, 恭喜你, 猜对了, 而且这个坑还有一点大, 说没有 pycocotools 这个模块
How Fill? 确保 Microsoft Visual Studio 安装成功了后, 打开Anacon Prompt, 并激活你选择的 Environment, 再将目录切换到 cocoapi, 怎么切换? 比如我的 cocoapi 在 E:\Jupyter_Files\cocoapi-master\PythonAPI, 那就先输入 E: 回车,切换到 E 盘, 再输入 cd E:\Jupyter_Files\cocoapi-master\PythonAPI 目录下
坑7: 目录切换完成, 再输入 python setup.py install, 就开始安装 pycocotools, 不过先告诉你又会来一个坑, 如下图
What the fuck~, 这个坑还是比较好填的, 大家跟我做, 在资源管理器中打开 E:\Jupyter_Files\cocoapi-master\PythonAPI, 里面有一个 setup.py 的文件
打开它, 怎么打开? 当然双击啊, 如果你电脑上没有 python 编辑环境, 可以用安装好的 VS2015 打开
把红框框的那一行改成 extra_compile_args=[] # originally was [‘-Wno-cpp’, ‘-Wno-unused-function’, ‘-std=c99’], 简单点说就是把 extra_compile_args 赋值一个空 list, 把后面的用 # 注释掉, 免得以后你想改回来, 改完后如下图
坑8: 再走一个 python setup.py install 试试? 来一个坑说无法打开源文件: “pycocotools/_mask.c”: No such file or directory
一步一步跟我填, 首先要问为什么打开不呢? 嗯~这个是还有一个依赖项没有安装, 仿安装 matplotlib 安装 Cython
安装完成后再打开坑7中的那个 setup.py文件, 在最开始增加两行
from distutils.core import setup
from Cython.Build import cythonize
然后再把 setup 里面的内容改成
setup(
name='pycocotools',
packages=['pycocotools'],
package_dir={'pycocotools': 'pycocotools'},
version='2.0',
ext_modules=cythonize(ext_modules)
)
改完后如下图
好了, 坑8 就这样被填好了, 再再走一个 python setup.py install 试试?
不出所料, 安装完成, 在 Environment 路径下生成一个 pycocotools 的文件夹, 就问你神不神奇!
如果在 site-packages 文件夹下找不到 pycocotools 文件夹, 那就到 D:\Anaconda3\envs\tf_cpu\Lib\site-packages\pycocotools-2.0-py3.7-win-amd64.egg 文件夹中看看, 你的 Anaconda 和 Environments 路径可能和我的不一样, 你知道意思就行
再用 Ctrl + Enter 运行第 1 个 Code 单元格试试? 已经没有错误输出了
最后还有一个不算坑的坑, 没有错误输出了后, 就要开始下载 mask_rcnn_coco.h5 了, 这个是训练的权重参数, 有 200 多 M, 网速慢的话要多等一下, In 旁边方括号里面的 * 号表示这个单元格正在执行, 执行完成后会显示一个数字, 下载完成再 Ctrl + Enter, 第 1 个 Code 单元格已经没有错误信息了
坑9: 第 1 个 Code 单元格是填完了, 但是 Demo 还是不能运行, 我们试一下, 点上方工具栏 Cell->Runn All, 运行全部单元格, 会看到第 3 个 Code 单元格下面有错误信息输出, 说没有 keras.engine.topology 没有 load_weights_from_hdf5_group_by_name 这个属性
这个也比较好填, 看上面错误定位的文件是 model.py, 那我们打开它, 搜索 “topology” 会有 3 个地方要改, 第 1 个如下图, 把 from keras.engine import topology 注释掉, 改成 from keras.engine import saving
再搜索 “topology”, 还有下图这个地方有两处要改
也是把 topology 改成 saving, 改完后保存, 如果有必要的话, 重新打开 Jupyter Notebook, 再打开 demo
至此, 所有的坑都填好了, 再 Run All 试一下, 是不是看到了科学都不能解释的现象, 图像中的物体被检测出来了, 就问你惊不惊喜, Run All 之后, 再次运行的话, 只运行最后那 Run Object Detection 单元格就可以检测了, 如果要检测自己的图像, 只要把图像放到 images 文件夹下就可以了