はじめに

最新の物体検出手法というMask R-CNN(keras版)を動かしてみます。
せっかくなので、Google Colaboratoryでやってみることにしました。

実行ソースはこちら→GitHub

Mask R-CNN

物体検出、セグメンテーションのみならず、人の骨格推定も可能なようです。
mask_rnn.PNG
mask_rnn2.PNG

出典:https://arxiv.org/pdf/1703.06870v1.pdf

処理内容についての説明は、以下サイトを参考に

環境

Google Colaboratory(python3/GPU)

Google Colaboratoryのノートブックを新規作成し、「ランタイム」「ランタイムのタイプを変更」で、python3/GPUを選択。
colaboratory.PNG

インストール

今回試すのは、こちら→Github
ReadMeの「Installation」に従って、作業を進めていきます。

■1.Clone this repository

githubからソースを取得します。

maskRnn-keras.ipynb
# gitからソースを取得
!git clone https://github.com/matterport/Mask_RCNN.git

# 確認
!ls

■2.Install dependencies

Mask_RCNN-master/requirements.txt に記載されている関連ライブラリをインストールします。

maskRnn-keras.ipynb
# フォルダへ移動
%cd Mask_RCNN

# 確認
!ls

# ライブラリを取得
!pip install -r requirements.txt

■3.Run setup from the repository root directory

Mask_RCNN-master/setup.py を実行します。

maskRnn-keras.ipynb
# フォルダへ移動
%cd Mask_RCNN

# setup.pyを実行
%run -i setup.py install

■4.Download pre-trained COCO weights (mask_rcnn_coco.h5)

学習済の重み (mask_rcnn_coco.h5)を取得します。

maskRnn-keras.ipynb
# フォルダへ移動
%cd Mask_RCNN

# 重みを取得
!wget https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5

■5.MS COCO install

Microsoft COCO が提供する画像データセット用APIをインストールします。

maskRnn-keras.ipynb
# COCO 用ソースを取得
!git clone https://github.com/waleedka/coco.git

# 確認
!ls

# cythonをインストール
!pip install cython 

# python用APIをインストール
%cd Mask_RCNN/coco/PythonAPI
%run -i setup.py build_ext --inplace
%run -i setup.py build_ext install

上記で問題ないようなのですが、、、インストールしたpycocotoolsがない、とエラーになってしまうので、
パスを設定しました。

maskRnn-keras.ipynb
import sys
sys.path.append('/content/Mask_RCNN/coco/PythonAPI')

デモを実行

■1.kerasをインストール

Google Colaboratoryにはデフォルトで入っていないkerasをインストール

maskRnn-keras.ipynb
!pip install keras

■2.demo.ipynbを実行

https://github.com/matterport/Mask_RCNN/blob/master/samples/demo.ipynb をコピペして実行

実行結果。キリンとシマウマを見分けてます。

colaboratory-run.PNG

人物検出

openCVとKerasで画像から人物検出 でも使ったスポーツシーンの画像で試した結果
mask-rnn-keras.PNG

まとめ

同じ形状のものが重なっている場合にうまく検出できていない?
(人が重なっている場合に、別人と判定したり、人が検出できていなかったり)
ただ、前回試したSSDでは検出できなかったボールやバット、グローブなど小さな形状まで検出できていて、すごい。
利用目的に合わせて、使い分けるのがよいのかな??

参考サイト

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.