Upgrade to Pro — share decks privately, control downloads, hide ads and more …

お茶の子さいさいおすすめ超最短物体検出

SIOSTech
November 30, 2020
230

 お茶の子さいさいおすすめ超最短物体検出

SIOSTech

November 30, 2020
Tweet

Transcript

  1. © SIOS Technology, Inc. All rights Reserved.
    ~洗濯表示で洋服仕分けの巻~
    お茶の子さいさいおすすめ
    超最短 物体検出
    PSSL Tech Event 2020
    エンジニア・クリエイターCoE PS SL
    萩原奈苗
    サイオステクノロジー株式会社

    View Slide

  2. © SIOS Technology, Inc. All rights Reserved.
    自己紹介
     萩原奈苗
     2019年4月入社 2年目
     エンジニア・クリエイターCoE PS サービスライン
     普段のお仕事
     アプリケーション開発エンジニア
     現在はTypeScript, Reactを使った医療システムの開発チームに参加
    2

    View Slide

  3. © SIOS Technology, Inc. All rights Reserved.
    弊社は原則リモートワーク
     コロナ禍がきっかけで弊社は原則リモートワーク
    3

    View Slide

  4. © SIOS Technology, Inc. All rights Reserved.
    リモートワークの弊害
     リモートワークでおうち時間が増えて家事をする機会UP
     家事で唯一、外出が減ったため洗濯をする機会DOWN
     家庭科で習った洗濯表示を忘れていった
    久々に着た服を洗濯機に回していいのかわからない
    4

    View Slide

  5. © SIOS Technology, Inc. All rights Reserved.
     洋服のタグをカメラに写して
    特定の洗濯表示を識別して洗えるか判断するシステムがほしい
    理想
    イメージ図
    OR

    View Slide

  6. © SIOS Technology, Inc. All rights Reserved.
     洋服のタグをカメラに写して
    特定の洗濯表示を識別して洗えるか判断するシステムがほしい
    理想
    イメージ図
    OR
    その洋服が洗えるのかどうかを判断する
    洗濯表示を動的に検出する (物体検出) プログラムを作成

    View Slide

  7. © SIOS Technology, Inc. All rights Reserved.
    物体検出とは
     一枚の画像から任意の物体の位置やカテゴリーを抽出する仕組み
     深層学習の一つ
    7

    View Slide

  8. © SIOS Technology, Inc. All rights Reserved.
    物体検出の仕組みを作るのは大変そう…
    8
    学習モデルの構築って
    どうやるの?
    物体検出って深層学習でしょ?
    深層学習って難しそう…
    精度を上げるには
    膨大なデータが必要なんでしょ?

    View Slide

  9. © SIOS Technology, Inc. All rights Reserved.
    そんな時は転移学習
    転移学習なら学習データを自分で用意するだけで
    そこまで知識が無くてもオリジナルの物体検出モデルを作成可能
    転移学習(Transfer Learning)
     ある領域で学習したこと(学習済みモデル)を別の領域に役立たせ、効率的に学
    習させる機械学習の手法
    転移学習のメリット
     モデルの構築・学習時間短縮
     少ない学習データでも高い精度
    9

    View Slide

  10. © SIOS Technology, Inc. All rights Reserved.
    転移学習対象モデル・ライブラリ
     物体検出を行うYOLOv3の学習モデルを
    PythonのライブラリKerasで実装したGitHubリポジトリ(keras-yolo3)を使用
     GitHub:https://github.com/sleepless-se/keras-yolo3
     参考資料:https://sleepless-se.net/2019/06/21/how-to-use-vott/
     Python・主要ライブラリのバージョン
    10
    実装した環境 推奨環境
    Python 3.8.5 3.5.2
    tensorflow 2.3.1 1.6.0
    Keras 2.4.3 2.1.5

    View Slide

  11. © SIOS Technology, Inc. All rights Reserved.
    作成手順
    1. 学習用データ画像の収集
    2. 学習用データ画像のアノテーション
    3. 既存の学習済モデルのダウンロード
    4. 学習プログラムの実行
    5. 自作推論モデルを使った物体検出
    参考資料:https://sleepless-se.net/2019/06/21/how-to-use-vott/
    11

    View Slide

  12. © SIOS Technology, Inc. All rights Reserved.
    プロセス概要
    12
    アノテーション済の
    学習用データ画像
    プログラムA
    既存の学習済モデル
    (学習済み重みファイル)
    オリジナルの
    推論モデルを作成
    PCのカメラでタグを認識 プログラムB
    オリジナルの
    推論モデルを使って
    物体検出
    洗濯できない

    View Slide

  13. © SIOS Technology, Inc. All rights Reserved.
    洗濯できる/できないの判定
    13
    4種のマークを覚えられたらわざわざ物体検出するまでもない
    この4種類の洗濯表示を物体検出するのが目標
    液温は30 ℃を限度とし、
    洗濯機で洗濯出来る
    液温は40 ℃を限度とし、
    洗濯機で洗濯出来る
    液温は40 ℃を限度とし、
    手洗いができる
    家庭での洗濯禁止
    洗える 手洗いならOK 洗えない

    View Slide

  14. © SIOS Technology, Inc. All rights Reserved.
    1. 学習用データ画像の収集
     1ラベルにつき大量の学習用データ画像を手作業で集めるのは大変
     OpenCVを用いたプログラムを使ってデータ拡張を行う
     現実ではきれいに整った画像ファイルを用いることは稀のため、
    意図的に画像加工をして、学習用データ画像を水増しする
    各種画像加工を組み合わせて
    202枚 × 4ラベル = 1008枚 の画像データを作成
    14
    元画像 回転 ぼかし ノイズ 暗転

    View Slide

  15. © SIOS Technology, Inc. All rights Reserved.
    2. 学習用データ画像のアノテーション
     画像のここにこの物体があるよと指定してあげる (アノテーション) 作業が必要
     VOTTというアプリケーションを使用
    15
    洗濯表示の
    範囲を指定
    各ラベル
    (ラベル:指定した範囲内の物体の名前)
    ■Yes-30 ■Yes-40
    ■no
    ■hand

    View Slide

  16. © SIOS Technology, Inc. All rights Reserved.
    3. 既存の学習済モデルのダウンロード
     YOLOv3用の学習済モデルをダウンロードし、今回の学習用プログラムで使えるように
    ファイル変換を行う
     ダウンロード先:https://pjreddie.com/media/files/yolov3.weights
    16
    アノテーション済の
    学習用データ画像
    プログラムA
    既存の学習済モデル
    (学習済み重みファイル)
    オリジナルの
    推論モデルを作成
    これ
    $ python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

    View Slide

  17. © SIOS Technology, Inc. All rights Reserved.
    4. 学習プログラムの実行
     GitHabからダウンロードした学習プログラムtrain.pyを実行して、
    オリジナルの推論モデル(trained_weights_final.h5)を作成
     第一引数は画像サイズ, 第二引数はバッチサイズを指定することが可能
     画像サイズ:128 x 128
     バッチサイズ:8
    17
    $ python train.py 128 8
    $ ls ./logs/000
    (前略)
    trained_weights_final.h5
    アノテーション済の
    学習用データ画像
    プログラムA
    既存の学習済モデル
    (学習済み重みファイル)
    オリジナルの
    推論モデルを作成
    これ

    View Slide

  18. © SIOS Technology, Inc. All rights Reserved.
    5. 自作推論モデルを使った物体検出
     yolo_video.pyを用いて自作推論モデル (trained_weights_final.h5) で物体検出を行う
     PC内蔵カメラを使用する場合
    1. yolo_video.pyに一部コードを追加する
    2. 以下を実行
    18
    71 parser.add_argument(
    72 "--camera", nargs='?', type=int, required=False, default=0,
    73 help="Web camera input path"
    74 )
    (中略)
    87 elif "camera" in FLAGS:
    88 detect_video(YOLO(**vars(FLAGS)), FLAGS.camera, FLAGS.output)
    $ python yolo_video.py --camera 0

    View Slide

  19. © SIOS Technology, Inc. All rights Reserved.
    デモ動画
     PC内蔵カメラでタグを判定してみた
    20

    View Slide

  20. © SIOS Technology, Inc. All rights Reserved.
    まとめ
     洗濯機で洗えるかどうかはタライのマークで判断できる
    21
    液温は30 ℃を限度とし、
    洗濯機で洗濯出来る
    液温は40 ℃を限度とし、
    洗濯機で洗濯出来る
    液温は40 ℃を限度とし、
    手洗いができる
    家庭での洗濯禁止
    洗える 手洗いならOK 洗えない
    わざわざ物体検出しなくても判断可能なので
    覚えて帰ってください

    View Slide

  21. © SIOS Technology, Inc. All rights Reserved.
    まとめ2
     keras-yolo3を用いた転移学習で推論モデルを自作して物体検出できた
     洗濯表示はちゃんと識別したが、任意の洗濯表示以外のものにも反応してし
    まった
     1008枚の学習データ画像を用意したけど足りなかったのが原因
     沢山画像を用意して精度を高められるか試したい
    22

    View Slide