はじめに
前回の記事

で、anaconda+YOLOv4の環境構築を試みましたが、
Visual C++の導入前で一旦中断…
めんど やっぱり確立された環境でやりたいですよね、
環境作るのにハマりたくないですし
こちらの記事を参考にしました
https://tech-diary.net/keras-yolov3/
うん、簡単にできそうな予感!
(モデルをダウンロードする時点で5分では終わらないと思いますが)
もちろんベンチマークとしてはYOLOv4の方が高いんですが、
今回はお遊びみたいなものなので。v3でも十分です
Anacondaで仮想環境を作る
ここまでは前回と同じです
Anaconda Powershell(Anaconda Prompt)を立ち上げ、
conda create --name yolov3
conda activate yolov3
そして、参考記事の通りに
conda install tensorflow==1.14.0 keras==2.2.4 pillow matplotlib
下手にバージョンを変えると危険なので、
情報があるものをそのまま使わせてもらいます
YOLOv3 のリポジトリからクローンする
gitをインストールしていなかったので、
以下URLからダウンロードし、インストールを行います
https://gitforwindows.org/
インストールしたらGit Bushを立ち上げ、
クローンしたい場所にcdで移動して、
git clone https://github.com/qqwweee/keras-yolo3.git
でリポジトリからソースコードをクローンします
学習済モデルをダウンロードする
ここで、こちらから学習済モデルをダウンロードしておきます
https://pjreddie.com/media/files/yolov3.weights
242MBあるのでそこそこ時間がかかりますね
置き場所はどこでもいいとは思いますが、
先ほど作成したkeras-yolo3の配下に置いておきました
モデルの変換
モデルを.h5のファイルに変換します
Keras用のモデルファイルですね
すでにconvert.pyというスクリプトが用意されているので、
それを実行すればいい模様(便利!)
Anaconda Powershellでさっきのkeras-yolov3に移動し、
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
を実行します
そうすると、model_dataのフォルダが作成され、
その下にyolo.h5というモデルファイルができています
テスト用画像を取得する
テスト用の画像は、参考URLと同じshibuya.jpegを使わせてもらいます
こちらも、keras-yolov3の配下に置いておきます
実行
再度Anaconda Promptから、
python yolo_video.py --image
を実行します
と、ここで。
エラー発生。
AttributeError: 'str' object has no attribute 'decode'
やっぱりか…すんなりとはいかせてくれないですね
調べてみると、同じと思われる現象がありました
最近発生し始めた、ライブラリのバージョン違いによるもののようですね
参考:
https://qiita.com/Hiroki-Fujimoto/items/b078bfb680fb710c38c1
これだからpythonは…
さて、どうもh5pyというライブラリが悪さをしていそうなので調べてみます
conda list
でh5pyを見ると、案の定3.2.1と最新バージョンがインストールされています
情報の通り、2.10.0にダウングレードしてみましょう
と、危ない、pipでインストールしようとしていました…
そういえばcondaでkerasとtensorflowはインストールしていました
condaとpipは「混ぜるな危険」です
conda install h5py==2.10.0
再実行
さて、気を取り直して、もう一度
python yolo_video.py --image
すると、
Input image filename:
と聞かれます。きた!
ここで、先ほどの画像「shibuya.jpg」と打ち込んでEnter
フォトが立ち上がり、次の画面が出ます
おー検出できている!
人もですし、信号機やバックパックも検出できている
ただこれ、一時的にフォトで検出画像を表示しているだけですね
今回使わせてもらったYOLOv3実装リポジトリのREADMEを読むと
input、output引数を指定すればvideoのinputとoutputができそうです
https://github.com/qqwweee/keras-yolo3
まとめ
anaconda+YOLOv3環境構築が 5分 1時間くらいでできました!
思ったよりハマらなくて良かったです!
次回は実際の監視カメラ動画(AVI)を検出してみたいと思います
(でも実際の動画は貼れないだろうから記事はどうしよう…)
その3に続く
