【まずは画像から】Keras版のYOLOv3を試してみた

はじめに

こんにちは、がんがんです。今回はkeras版のYOLOv3を試してみたのでその備忘録です。
yolo.pyが動かなかった、どうしようって人にも参考になるかもです。

追記【2018.11.23】

STEP2の項に
$ python3 yolo_video.py --image
を追加しました。
後々見た時にまたミスしそうなので追加しました。

追記【2019.01.15】

ありがたいことに
鹿児島大学生 Advent Calendar 2018の10日目
Keras Advent Calendar 2018の22日目に参加させて頂きました。

コメント、ミスなどあれば指摘のほどよろしくお願いします。

参考記事

こちらは本家の方のようです。
qiita.com


以下は試してみた方の記事です。
qiita.com

pynote.hatenablog.com

arkouji.cocolog-nifty.com

動作実験(画像)

STEP1 動かない…

実験をやってみたのですがまったく動かなかったです…

$ python3 yolo.py
Using TensorFlow backend.

画像では、参考記事にて皆さんが言っているInput image filename:がまったく出てこなかったです…

yolo.pyの中身をざっと見た感じだと、YOLOクラスしかなく呼び出し部分が記述されていなかったのでそれが原因?
yolo_video.pyには呼び出しの記述が存在してました。とりあえず、READ MEを見てみます。


STEP2 動いた!

改めてGitHubのREAD MEを見返してみました(以下、GitHubです)。
GitHub - tanakataiki/keras-yolo3: A Keras implementation of YOLOv3 (Tensorflow backend)

すると、Quick Startの項にこのように書いていました(以下、引用)。

Quick Start

  1. Download YOLOv3 weights from YOLO website.
  2. Convert the Darknet YOLO model to a Keras model.
  3. Run YOLO detection.
wget https://pjreddie.com/media/files/yolov3.weights
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
python yolo_video.py [OPTIONS...] --image, for image detection mode, OR
python yolo_video.py [video_path] [output_path (optional)]

For Tiny YOLOv3, just do in a similar way, just specify model path and anchor path with --model model_file and --anchors anchor_file.

なるほど、参考記事で皆さんが実験された後にいろいろと改良されていたようですね。その結果、皆さんみたいにInput image filename:でないと…

まあ、とりあえずはREAD MEに従いながら実験を進めてみました。

$ python3 yolo_video.py --image
model_data/yolo.h5 model, anchors, and classes loaded.
Input image filename:person.jpg
(416, 416, 3)
Found 3 boxes for img
horse 1.00 (395, 135) (604, 351)
dog 0.99 (63, 266) (207, 347)
person 1.00 (191, 94) (277, 370)
2.056847349000236
Input image filename:


無事に動作してくれてよかった!!今回はYOLOのdemoでお馴染みのperson.jpgを使用しました。

f:id:gangannikki:20181104211956p:plain

まとめ

とりあえず無事に動作してよかったです。時間を見つけて、動画への動作実験や学習も行っていきます。

また、解決方法を模索していた時に別の方が作られたYOLOv3も見つけたのでそちらも後々実験してみます。
GitHub - xiaochus/YOLOv3: Keras implementation of yolo v3 object detection.

物体検出系は結果に出やすいため、やってて楽しいですね。
SSDとかも試したいです。