LoginSignup
37
42

More than 5 years have passed since last update.

Mask R-CNN(keras)で人物検出 on Colaboratory

Last updated at Posted at 2018-04-17

はじめに

最新の物体検出手法という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では検出できなかったボールやバット、グローブなど小さな形状まで検出できていて、すごい。
利用目的に合わせて、使い分けるのがよいのかな??

参考サイト

37
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
42