Macでセグメンテーション技術Mask R-CNNを動かす

投稿者: | 2018-05-23

画像セグメンテーション(Semantic segmentation)技術として注目を集めている「Mask R-CNN」をMacで動かす機会があったのでその手順を紹介します。

Python3, TensorFlow, Kerasを使った実装(「Mask R-CNN for Object Detection and Segmentation」)を利用し、学習済みのパラメタを使うことで簡単にセグメンテーションを試すことができました。

実行環境

以下の環境で動作をさせています。

  • Mac: MacBook Air 2013 Mid
  • OS: High Sierra
  • Anaconda 5.0.1

GPUは搭載されていないのでCPUのみでMask R-CNNを動かします。

Python環境の構築

まずMask R-CNN用の環境を作成します。環境管理コマンドcondaを使って

$ conda create -n mask_rcnn python=3.6 pip
$ source activate mask_rcnn

とPython仮想環境を作成します。

Mask R-CNNの設定

ここではPython3, TensorFlow, Kerasを使った実装(「Mask R-CNN for Object Detection and Segmentation」)を利用します。まず、

(mask_rcnn) $ git clone https://github.com/matterport/Mask_RCNN.git
(mask_rcnn) $ cd 

としてレポジトリのクローンを取得します。

次に必要なパッケージのインストールとセットアップをします。

(mask_rcnn) $ pip install -r requirements.txt 
(mask_rcnn) $ python setup.py install

提供されているデモ用ノートブック(samples/demo.ipynb)を動かすにはpycocotoolsというパッケージが必要なので

(mask_rcnn) $ git clone https://github.com/pdollar/coco.git
(mask_rcnn) $ cd coco/PythonAPI
(mask_rcnn) $ make
(mask_rcnn) $ make install
(mask_rcnn) $ python setup.py install
(mask_rcnn) $ cd ../..

でインストールします。最後に事前学習済みのモデルをダウンロードします。

(mask_rcnn) $ wget https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5

Mask R-CNNの実行

(mask_rcnn) $ jupyter notebook

でJupyter notebookを立ち上げて「samples」>「demo.ipynb」を選択します。メニューの「Cell」>「Run All」を選ぶと「images」ディレクトリの画像がランダムに選ばれセグメンテーションの結果が表示されます。

(1990年代の大阪 日本橋ですね。person, carの多さが当時の活況ぶりを表していますね。)

手元の画像を使いたい時は「Run Object Detection」の直後のセルの

file_name = random.choice(file_names)

file_name = (画像パス)

に変えればできます。例えば、

「トリケラトプスの模型に颯爽と近くドキンちゃんカバンを背負った四歳児」

の画像を与えると

という結果が得られます。

  • ドキンちゃんカバンが「handbag」(「backpack」の方が適切)
  • トリケラトプスの模型が「cow」(牛)

だったりとしますが、トリケラトプスが四足歩行でツノのある動物と考えれば「牛」も当たらずとも遠からずという気がします。それ以上に各物体の領域をきちんと切り出せていてて思わず感動してしまいました。

論文やプレスでは上手くいったごく一部の例だけがピックアップされていることも多いのですがMask R-CNNは手元の画像でも安定して納得感のある結果を出してくれるので試してみると面白いと思います。

スポンサーリンク


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です