Mask R-CNNをGithubから持ってきてGoogle Colabで動かしてみる

物体検出+セグメンテーションを一緒くたにやってくれるMask R-CNNを使ってみたいと思います。

実装はGithubの以下のレポジトリにあるものをお借りします。

https://github.com/matterport/Mask_RCNN

今回は、クローンしてきて、手元のサンプル画像をアップロードして推論させる、というところを見ていきたいと思います。

最後に繁華街の写真を推論させて、人間が何人いるかどうか出力します。

 

まずはGoogle Colabで環境合わせ

Colabで新しいノートブックを立ち上げ、ランタイムをGPUに設定します。

ランタイム>ランタイムのタイプを変更>GPU

レポジトリをクローンします。

これで様々なファイルがColabにできました。

環境合わせのために以下のコマンドを実行します。

 

demo.ipynb をなぞる

このレポジトリはdemo.ipynb  で簡単な推論のチュートリアルを用意してくれているので、それをなぞろうと思います。

ということで、まずはこのファイルがあるところに移動しましょう。

 

以下、説明はさみながら基本demo.ipynb通りに進めていきます。

主にパスをざっとして、学習済みの重みファイルをダウンロードします。

学習済みモデルを再現します。

今回はMicrosoft COCOデータセットを用いて学習されたものです。

81種類の分類ができます。

 

テスト画像を読み込んで表示させます。

テスト画像は、images フォルダにある画像がランダムに選択されます。

推論は以下の通り

推論結果は、rois, masks, class_ids, scoresの辞書が入ったリストとして返ってきます。

結果の表示も関数化されており、以下の通り。

 

サンプル画像で推論してみる

適当な画像を用意して、推論させてみようと思います。

以下のサイトから歩行者天国のフリー画像を入手します。

秋葉原の歩行者天国2

できたら、Colabにアップロードして、パスを指定します。

いい感じに予測をしてくれました!

ちなみに、この写真の中に何人いるのだろうと思ったので、調べてみます。

ということで36人検出できたということで終わりにしようと思います。

 

このレポジトリ、新しいデータセットで学習させるノートブック等、Getting Startedが充実しているので、興味がある方は目を通してみるとよいことがあるかもしれません。

最後まで読んでいただきありがとうございました。