久しぶりに物体検出アルゴリズムをしてみることにしました。
Haar like特徴量を用いたものを昔やっていたのですが、deep learningでもチャレンジ。
最新のモデルではありませんが、Faster RCNNの実装に取り組んでみました。
色んな方のブログ、まとめに助けてもらったので、一応備忘録として。
結果。
KerasでFaster RCNN 参考サイト
https://aerials.hatenablog.com/entry/2019/02/06/155055
英語サイト20200310追加*別画像での方法?やQ&Aが豊富
https://
www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/
上のサイトはUbuntuなので、導入に際してはコマンドの読み替えが必要です。
wget→bitsadmim.exe /TRANSFER ~~~
mv→move
とかですね。
Tensorflow, kerasあるあるですが、ドはまりしたポイントのまとめは、
kerasのバージョン依存です。ResNet50が動かなかったし、VGG16は学習できたものの、認識が上手くいきませんでした。原因はkeras 2.2.4を使っていたことのようです。
エラーメッセージ:
“ValueError: Shape must be rank 1 but is rank 0 for ‘bn_conv1_7/Reshape_4’ (op: ‘Reshape’) with input shapes: [1,1,1,64], [].”
一応、Anacondaの仮想環境で行っていましたが、バージョン合わせとライブラリのインポートにはcondaでは上手くいかず、pipで成功しました。
普段、condaを使うのでかなりビビっていたのですが。。(他のライブラリを入れる可能性もあるので、まだわからない)
コマンドプロンプトから仮想環境をactivateして、
pip install tensorflow-gpu == 2.2.0
pip == 1.8.0
で、
python
from tensorflow.python.client import device_lib
device_lib.list_local_devices
GPUの認識に成功したことを確認。cuDNN, CUDAのあたりはpipでうまく解消してくれたみたいです...?
しかし、opencvが無かったので動かず
pip install opencv-python
これで成功!!numpyやmklなどがぶつかっていたらどうしようもないところでした。
自前のデータでするにはまだまだ障壁がありますが、梅雨までには1個発表できるAI作りたいですね。