これ↓を参考にして、
自前の画像をVoTTでアノテーションしてkeras-yolo3に呪腕のハサンを学習させる - Qiita
独自の物体認識を試してみた。
学習も無事完了したので、
python yolo_video.py --image
で静止画像(jpeg)を認識してみると結構いい感じ
で認識できている。そこで、静止画像の切り出し元
である動画で認識してみると、
「あまり認識していない.....」
なぜ?どうして?結局は同じ画像なはずだけど?
とあれこれ悩んだ結果、原因は「yolo.py」の
動画の認識処理が変じゃね?という結論に
至った。
動画での認識処理の流れは、
1. OpenCVで動画ファイルを開く
2. OpenCVで1フレームずつ画像(データ)を取得
3. 2.のデータからPILのImageを生成
4. 3.Imageで静止画像からの認識処理を実行
5. Imageに認識結果(矩形)を描画して結果にする
6. 5.で生成された結果を再度OpenCVで動画ファイルに出力
となっているのだが、
2.でOpenCVでフレームデータを取得すると色の並びがBGRなのだが、
PILのImageではRGB並びを想定している。でもyolo.pyでは
BGR→RGB変換をしないまま、Imageを生成しているので、変な
色味の画像を用いて認識処理をしてしまっている。
認識がうまくいかないのはこれが原因。
ひとまずこれで認識処理はうまくいくのだが、結果を動画
に出力するのもOpenCVを使っているので、5.と6.の間で
RGB→BGR変換をしないと、今後は出力された結果動画の
色味がおかしくなってしまう。
ということで、yolo.pyに
・BGR→RGB
・RGB→BGR
変換を追記しないとおかしくね?と思った次第。
ちなみに、
python yolo_video.py --image
だとうまくいくのは、JPEGファイルをPILで直接
取得しているため、終始RGBならびをキープできてる
からのようだ。

- 作者: Francois Chollet,巣籠悠輔,株式会社クイープ
- 出版社/メーカー: マイナビ出版
- 発売日: 2018/05/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る