###※2020/05/18追記
下記の記事で新しい解決方法を紹介しています!
[Mask R-CNNのdemoでtensorflowのバージョンをダウングレードした話。] (https://qiita.com/skperfarming/items/f1442b0d45dd02e348c9)
#Mask R-CNNを実装してみたかった
深層学習超初心者がエラーを解決した話です。
誰かの助けになればと思い、記事を書きました。
画像認識でMask R-CNNを使ってみたい場合、matterport社のMask_RCNNというコードを利用するのが近道です。
これだけ読んでも良くわからなかったので、下記のサイトを読みながら、
Google colaboratory上でdemo.ipynbを実行しようとしました。
https://tech-blog.optim.co.jp/entry/2019/03/28/173000
http://maruo51.com/2020/02/22/mrcnn/
しかし!
そのまま実行しようとしても、
AttributeError: module 'tensorflow' has no attribute 'log'
が発生してしまうのです。(2020年4月20日時点)
そこで、これを解決するために2日間くらい試行錯誤したので、
書き記しておきます。
#解決方法(仮)
参考になるのは、以下に示すgithubのお悩み相談箱みたいなものです。
全部英語なのですが、頑張って読み進めたところ、ヒントになるような投稿を見つけました。
tf.log() -> tf.math.log()
tf.sets.set_intersection() -> tf.sets.intersection()
tf.sparse_tensor_to_dense() -> tf.sparse.to_dense()
tf.to_float() -> tf.cast([value], tf.float32)
どうやら、tensorflowのバージョンが違ってメゾットが変更になっていることに起因するエラーのようです。
この通りに、mrcnn/model.pyの該当箇所を書き直せばいいはずです。
#注意点!
注意すべきは、エラーが出る最後まで行ってからmodel.pyを変更するのではなく、
最初にレポジトリをクローンした直後にmodel.pyを書き換えてしまうことです。
修正後のmodel.pyでsetupとかを進めることで解決できたようでした。
(なんか、その場しのぎな解決方法な気がするので、
本当の原因を知っている人がいたら教えてください。)
一件落着!
参考になったらいいねお願いします!