はじめに
最新の物体検出手法というMask R-CNN(keras版)を動かしてみます。
せっかくなので、Google Colaboratoryでやってみることにしました。
実行ソースはこちら→GitHub
Mask R-CNN
物体検出、セグメンテーションのみならず、人の骨格推定も可能なようです。
出典:https://arxiv.org/pdf/1703.06870v1.pdf
処理内容についての説明は、以下サイトを参考に
環境
Google Colaboratory(python3/GPU)
Google Colaboratoryのノートブックを新規作成し、「ランタイム」「ランタイムのタイプを変更」で、python3/GPUを選択。
インストール
今回試すのは、こちら→Github
ReadMeの「Installation」に従って、作業を進めていきます。
■1.Clone this repository
githubからソースを取得します。
# gitからソースを取得
!git clone https://github.com/matterport/Mask_RCNN.git
# 確認
!ls
■2.Install dependencies
Mask_RCNN-master/requirements.txt に記載されている関連ライブラリをインストールします。
# フォルダへ移動
%cd Mask_RCNN
# 確認
!ls
# ライブラリを取得
!pip install -r requirements.txt
■3.Run setup from the repository root directory
Mask_RCNN-master/setup.py を実行します。
# フォルダへ移動
%cd Mask_RCNN
# setup.pyを実行
%run -i setup.py install
■4.Download pre-trained COCO weights (mask_rcnn_coco.h5)
学習済の重み (mask_rcnn_coco.h5)を取得します。
# フォルダへ移動
%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をインストールします。
# 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がない、とエラーになってしまうので、
パスを設定しました。
import sys
sys.path.append('/content/Mask_RCNN/coco/PythonAPI')
デモを実行
■1.kerasをインストール
Google Colaboratoryにはデフォルトで入っていないkerasをインストール
!pip install keras
■2.demo.ipynbを実行
https://github.com/matterport/Mask_RCNN/blob/master/samples/demo.ipynb をコピペして実行
実行結果。キリンとシマウマを見分けてます。
人物検出
openCVとKerasで画像から人物検出 でも使ったスポーツシーンの画像で試した結果
まとめ
同じ形状のものが重なっている場合にうまく検出できていない?
(人が重なっている場合に、別人と判定したり、人が検出できていなかったり)
ただ、前回試したSSDでは検出できなかったボールやバット、グローブなど小さな形状まで検出できていて、すごい。
利用目的に合わせて、使い分けるのがよいのかな??