keras-yolo3でRuntimeError: get_session is not available when using TensorFlow 2.0.のエラーの解決方法
事の発端
2020年6月某日、yolo3でサンプルを実行しようとしたが、RuntimeError: get_session is not available when using TensorFlow 2.0.のエラーが出た。実行しようとしたのは以下のgithub
https://github.com/tanakataiki/keras-yolo3
参考サイトは以下の通り。参考サイトでは問題なくできているのに自分はエラーになりました。
https://qiita.com/yoyoyo_/items/10d550b03b4b9c175d9c
http://nw.tsuda.ac.jp/lec/DeepLearning/keras/YOLO_v3/Keras_YOLO_v3.html
エラーの原因
tensorflow2.0以降は、get_sessionがなくなっていることが原因でした。しかし、厄介だったのは、ここでtensorflowをダウングレードしても、今度はkeras2.1.5より後のバージョンだとtensorflow2.0以上を使えというエラーが出ます。そのため、condaコマンドを使って以下のようにkerasとtensorflowのバージョンを合わせることでエラーが解消されます。
解決方法
condaでkerasとtensorflowのバージョンをあわせます。
とりあえず、anacondaで新しい仮想環境を作ります。このとき、pythonのパージョンは3.6を選びます。3.7はダメです。
それから、以下のコマンドをAnacondaプロンプトで入力して下さい。
conda install tensorflow==1.15
conda install keras==2.1.5
conda install pillow matplotlib
それから、以下のコマンドで実行します。
python yolo_video.py --image
yoloが動作することを確認して下さい。
おまけ
この後、
python yolo_video.py
を実行したい場合は、ここままではopenCVがなくてエラーになるので、
conda install -c menpo opencv
を実行してopenCVをインストールします。
