keras-yolo3でRuntimeError: get_session is not available when using TensorFlow 2.0.のエラーの解決方法

6月 28, 2020

事の発端

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をインストールします。