Google ColabでMask R-CNNを試す

最近のARのオクルージョン処理、あるいはバーチャル背景の実装の裏側には、Image Segmentationの技術が使われているようだ。こういう機能には、カメラの深度センサーを使うものだろうと思っていたが、2D映像からの解析で十分なスピードと精度が出るとは意外だった。

調べていたところ、Google Colabで学習済みのMask R-CNNのモデルを使ってImage Segmentationを動かすための記事があったので、これを元にImage Segmentationを試してみた。

記事内で参照されているプロジェクトはTensorflow 1.x系で作られているが、2020年現在Google Colabで標準で選択されるTensorflowのバージョンは2.x系となっているためそのままでは動作しない。%tensorflow version magicを使って、明示的に1.x系を使うように指定をすると無事動作した。

%tensorflow_version 1.x

Noteの先頭にこの一行を追加してやれば良い。

Google Driveにアップロードした自前の画像でもImage Segmentationを試してみる

一通りNoteを実行し、サンプル画像でImage Segmentationがちゃんと動いているのを確認した後、自前の画像でImage Segmentationを試してみることにした。

from google.colab import drive
drive.mount('/gdrive')

Google ColabのNote上にファイルを読み込む方法はいくつかあるが、今回は複数の画像を試したかったのでGoogle Driveから読み込む方法を選んだ。Noteの先頭でGoogle Driveを/gdriveというパスで参照できるようにマウントしておく。

# IMAGE_DIR = os.path.join(ROOT_DIR, "images")
IMAGE_DIR = os.path.join("/gdrive", "My Drive", "mask-rcnn", "images") # My Drive/mask-rcnn/images/*.jpeg

その上で、解析する画像が含まれるディレクトリを指定しているIMAGE_DIRの参照先をGoogle Driveのフォルダに書き換える。なお、画像はサイズが大きいと処理に膨大な時間がかかってしまうため、640×480ピクセルに縮小した。

適当に選んだ画像だったが、どれも比較的しっかりとセグメンテーションが行われた。

Pocket

コメントを残す

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