10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

情報通信システム工学科Advent Calendar 2018

Day 4

Mask R-CNN をwindowsで環境構築

Last updated at Posted at 2018-12-03

はじめに

自身のWindows端末でMask R-CNNを動かしてみようと思ったとき、一部戸惑ったところがあったので、ほんのちょっとしたことですが記事にします。

実行環境

  • Windows10
  • Anaconda

環境構築

一連の流れは色々な方がすでに記事にしてはいますが、流れにそって紹介します。

c:/~/> conda create -n r_cnn python=3.6
c:/~/> active r_cnn

まずはAnacondaで仮想環境を作成し、起動します。


続いてこちらからクローンします

(r_cnn)c:/~/> git clone https://github.com/matterport/Mask_RCNN.git

次に必要なライブラリを一括インストールするために

(r_cnn)c:/~/> cd Mask_RCNN
(r_cnn)c:/~/Mask_RCNN> pip install -r requirements.txt 
(r_cnn)c:/~/Mask_RCNN> python setup.py install

これで環境構築自体は完了なのですが、サンプルプログラムを動かすにはpycocotoolsというモジュールが必要なので、こちらもクローンし、インストールします

(r_cnn)c:/~/Mask_RCNN> git clone https://github.com/pdollar/coco.git
(r_cnn)c:/~/Mask_RCNN> cd coco/PythonAPI
(r_cnn)c:/~/Mask_RCNN/coco/PythonAPI> python setup.py install

これで、環境構築は完了できます。また、学習済みサンプルモデルも別途にあります。


環境構築が完了したので、sample/demo.ipynb を実行すれば、サンプルプログラムが動き、実際にサンプルで入ってる画像にオブジェクト検知とセグメンテーションを行うはずです。

Windows環境で起きた問題

本来、この手順で環境構築は完了し、サンプルプログラムが正常に実行されるはずなのですが、このようなエラーが出てしまいました。

ModuleNotFoundError: No module named 'pycocotools'

先ほど、cocoapiというモジュールをインストールしたはずなのに、このエラーが出てしまいました。再度インストールしなおしても、改善はされませんでした。

解決方法

こちらの記事を参考にさせていただきました。

引用;Mask R-CNNをWindows+Keras環境で動かす
(http://blog.livedoor.jp/tmako123-programming/archives/51025848.html)

Mask_RCNN/coco//PythonAPI/setup.py
#14行目
extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],
#修正後
extra_compile_args=['-std=c99'],

この修正を行ってから、再度

(r_cnn)c:/~/Mask_RCNN/coco/PythonAPI> python setup.py install

を実行することで、エラーが解消され、正常に実行することが出来ました。

手持ちの画像で実行

蛇足ではありますが、サンプル画像ではなく、自分自身が所持している画像で実行する方法の紹介です。

サンプルプログラムの最初のセル(jupyter-notebookで開いた場合)の最終行の

sample/demo.ipynb
IMAGE_DIR = os.path.join(ROOT_DIR, "images")

こちらのディレクトリ名やパスを変更し、また最終セルの

sample/demo.ipynb
file_names = next(os.walk(IMAGE_DIR))[2]
image = skimage.io.imread(os.path.join(IMAGE_DIR, random.choice(file_names)))

もともとimagesフォルダの中からランダムに画像を選択。となっているので、ここに手を加えれば、好きな画像をセグメンテーション出来ます。


また、少々強引ではありますが、そもそものサンプルで指定されているimagesフォルダの中身を全部消去し、新たに好きな画像を追加すれば、頭を使わずに好きな画像で実行することが出来ます。

10
10
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
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?