从0开始——跑起Mask-RCNN Demo

从0开始——跑起Mask-RCNN Demo

本教程适用于0基础入门机器学习的Coder,阅读完之后你将能在你的电脑上跑起来Mask-RCNN官方的Demo噢!

俗话说: 再🐮的理论也要首先通过实践,把项目跑起来才是硬道理,代码可以之后慢慢研究!

基于以上原则,本教程:

  • 只专注于Demo运行的环境配置
  • 不带有任何机器学习原理的代码原理讲解

本文Demo运行的外部环境: Win10(64bits) + Anaconda3(2020.11版)

MaskRCNN

简介

​ 大名鼎鼎的 Mask RCNN 一举夺得 ICCV2017 Best Paper,名声大造。Mask RCNN 是何恺明基于以往的 Faster RCNN 架构提出的新的卷积网络,实现高效地检测图中的物体,并同时生成一张高质量的每个个体的分割掩码,即有效地目标的同时完成了高质量的语义分割。

论文地址: https://arxiv.org/abs/1703.06870

项目下载

项目开源地址: https://github.com/matterport/Mask_RCNN

在开源地址的项目release发布页内:

  • Mask R-CNN 2.1中下载balloon_dataset.zip、mask_rcnn_balloon.h5、 Source code(zip/tar.gz)

  • Mask R-CNN 2.0中下载mask_rcnn_coco.h5

本次教程需要用到的只有Source code和mask_rcnn_coco.h5,其他下载的文件在进一步学习中会用到。

下载完成后,解压Source code,然后将mask_rcnn_coco放在主目录下:

完成以上步骤后就做好了项目前期准备,本文的目的就是要__让Demo.ipynb成功运行__

Anaconda[Python环境配置]

Anaconda官网下载地址: https://www.anaconda.com/products/individual#Downloads

安装较为简单,这里不花笔墨叙述如何安装Anaconda,不会可以自行百度Anaconda安装教程。

Q :我已经安装了python了,安装Anaconda会有冲突么,需要卸载python再安装Anaconda么?

A :不会冲突,放心安装。Anaconda可以与现有的python版本共存,只要二者都配置了环境变量即可。

给Anaconda换国内源,可以解决下载缓慢的问题=>Conda换源

[注]:以下安装命令中所有环境和库的版本,最好与本文版本相同,以免出现不必要的麻烦。

Python虚拟环境

安装好Anaconda,并配置好环境变量后,打开cmd或Anaconda Prompt。

进行以下操作:

Step1: 创建python3.6版本的虚拟环境

conda create -n `[虚拟环境名]` python=3.6

弹出(y/n)时,输入y即可。

Step2: 虚拟环境基础操作命令

激活虚拟环境:

activate `[虚拟环境名]`

退出虚拟环境:

deactivate

删除虚拟环境:

conda remove -n `[虚拟环境]`

激活了虚拟环境后,使用conda/pip的安装命令只会给虚拟环境envs安装;

如果出现错误,可以选择直接删掉虚拟环境重来。

Jupyter Notebook配置

一般使用Anaconda创建的python虚拟环境自带Jupyter Notebook,使用以下命令打开:

jupyter notebook

但自带的会有不完善的地方,这里补全。

Step1: 安装nb_conda使Jupyter Notebook能够切换虚拟环境

conda install nb_conda

安装后打开jupyter notebook 可以看到Conda插件,并显示环境,如下图:

[笔者的电脑上有root(基础python)、Anaconda2020.11(Anaconda自带)、python3.6(虚拟环境envs))三种环境]

此处可能出现的相关错误:

打开jupyter notebook后,出现Dead Kenel

The kernel has died,and the automatic restart has failed.

Jupyter NoteBook如果出现问题,一定要看看控制台cmd报了什么错误,根据该错误网上搜索解决

Python库安装

Step1: 根据github上Mask-RCNN的ReadMe,要安装requirements.txt中的python库

然而各种库版本不对很容易导致各种问题,四处碰壁。这里推荐按本文的requirements.txt配置

可以点击这里直接下载:requirements.txt

编辑好requirements.txt后,然后使用以下命令安装

pip install -r requirements.txt

如果不按本文中的requirements.txt配置,请注意Tensorflow和Keras版本对应

Step2: 安装coco库

该步骤需要区分Window系统和Linux系统安装

Windows :

pip install pycocotools-windows

Linux :

【需要Linux已安装C语言编译器如cmaker】

方法1:

pip install git+https://github.com/waleedka/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI

方法2:

git clone https://github.com/waleedka/coco.git

cd coco/PythonAPI
make
sudo make install
sudo python setup.py install

Demo运行

Step1: cmd打开jupyter notebook

jupyter notebook

Step2: 打开项目目录下的demo.ipynb,并切换Kenel为你的python3.6虚拟环境

Step3: 一路Shift+Enter,即可

Import库时看到如下图,则说明没问题:

最后Run Object Detection时,首先会看到数据:

等待一会儿会出现训练测试图片:

如果以上步骤完美运行,那么恭喜你,成功跑起来了Mask-RCNN的Demo!

此处可能出现的相关错误:

  1. ImportError: No module named ‘pycocotools’

  2. AttributeError: ‘str’ object has no attribute ‘decode’

  3. AttributeError:module ‘cipy.misc’ has no attribute ‘imresize’

碰壁

Conda 换源

清华源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

中科大源

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/

# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

Jupyter Notebook配置相关

Dead Kenel内核死亡[ImportError: cannot import name ‘generator_to_async_generator’]

该内核死亡原因,查看cmd,抛出以下错误:

ImportError: cannot import name 'generator_to_async_generator'

解决方法: 参考网页

先执行2次,完全卸载ipython 和 prompt_toolkit

pip uninstall -y ipython prompt_toolkit

再重新安装ipython prompt_toolkit

pip install ipython prompt_toolkit

[AttributeError: module ‘dateutil.tz’ has no attribute ‘UTC’]

该错误不容易发现,在jupyer notebook中表现为运行无反应。查看cmd,抛出以下错误:

AttributeError: module 'dateutil.tz' has no attribute 'UTC'

解决方法: 参考网页

重新强制安装python-dateutil

pip install python-dateutil --upgrade --force

Demo运行相关

[ImportError: No module named ‘pycocotools’]

问题原因: coco库没有成功安装

解决方法: 安装coco库

[AttributeError: ‘str’ object has no attribute ‘decode’]

问题原因: h5py的版本过高,大于了3.0

解决方法: 参考网页

pip install h5py==2.10.0

安装时要关闭jupyter notebook以防止 h5py文件夹被占用,无法写入h5py2.10.0进行覆盖

[AttributeError:module ‘scipy.misc’ has no attribute ‘imresize’]

问题原因: scipy的版本过高

解决方法: 参考网页

pip install scipy==1.2.2

安装时要关闭jupyter notebook以防止 scipy文件夹被占用,无法写入scipy1.2.2进行覆盖

至此,本文结束,感谢阅读!