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

はじめに

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

参考記事

こちらは本家の方のようです。
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に従いながら実験を進めてみました。

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とかも試したいです。