TensorFlow MASK R-CNN Demo Windows 无痛搭建 (CPU版)
依赖库版本
版本很重要, 错了不一定能跑起来
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), 不就是运行一下pip3 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文件夹下就可以了