Mask-RCNNとは?
急きょ、Mask-RCNNを勉強する必要があり、勉強した内容を記録しようと思いました。機械学習などこのような分野は慣れていない分野なので用語などすぐ忘れてしまいます。現状の理解ではここまでどまりですが、理解が進んだ中で更新はしていこうと思います。
用語を細かく見ていきます。
CNNとは
Convolutional Neural Networkは畳み込みニューラルネットワークと訳します。どのような考え方かというと以下のページがわかりやすく、参考になりました。
Convolutional Neural Networkとは何なのか(qiita.com)
R-CNNとは
R(Region)-CNNとのことで、ざっくり言うと類似する領域をグルーピングする手法です。物体検出などに使われるようです。
以下のページがとても参考になりました。
最新のRegion CNN(R-CNN)を用いた物体検出入門 ~物体検出とは? R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN~(qiita.com)
Mask R-CNNとは
R-CNNの結果に対して、物体にマスクをしていると理解しました。
Mask R-CNNを動かしてみる
まずは、既存のものを動かして理解しようと思い、以下を参照しました。
すでにPython、anaconda、PyCharmは使える前提です。
Mask-RCNNで参考としたgitリポジトリです。
learnopencv
こちらは英語のサイトで、以下は、実際に動かして内容を共有していただいているサイトです。
5分でMask-RCNNを試す
進めます。早速、gitからクローンしてRead.me通りに実行しています。
しかし、OpenCVを入れないと、モジュールがないといわれるのでインストールします。
$ conda install opencv
しかし、エラーがでました。
$ python mask_rcnn.py --image=cars.jpg
Traceback (most recent call last):
File "mask_rcnn.py", line 105, in <module>
net = cv.dnn.readNetFromTensorflow(modelWeights, textGraph);
cv2.error: OpenCV(3.4.2) /opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/dnn/src/tensorflow/tf_graph_simplifier.cpp:659: error: (-215:Assertion failed) !field.empty() in function 'getTensorContent'
どうやらopencv 3.4.3以上に上げないといけないらしいです。
ということで2020/03/7時点の最新版を見ると、3系は3.4.4が新しいのでこちらにアップデートしました。
アップデートに苦戦したので、作業内容をそのまま残しておきました。
$ conda update opencv=3.4.4
できない。それでは・・・
$ conda uninstall opencv
$ conda install opencv=3.4.4
できない
$ conda install -c conda-forge opencv=3.4.4
できそう
改めて
$ python mask_rcnn.py --image=cars.jpg
出ました!
動画も入っているので、確認してみたところ普通のPCだと遅すぎなので諦めました。
$ python mask_rcnn.py --image=cars.mp4
まとめ
とりあえず動かすことはできました。理解が進んだらまた更新していきたいと思います。