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

Google Colabを転移学習・モデル変換に使ったりAPIサーバーで使おうとした話 / YurufuwaML vol.6

Google Colabを転移学習・モデル変換に使ったりAPIサーバーで使おうとした話 / YurufuwaML vol.6

you(@youtoy)

April 08, 2021
Tweet

More Decks by you(@youtoy)

Other Decks in Technology

Transcript

  1. Google Colabを転移学習・モデル変換に
    使ったりAPIサーバーで使おうとした話
    2021年4月8日 (木)
    ゆるふわマシンラーニング vol.6
      豊田 陽介 ( @youtoy )

    View Slide

  2. 豊田陽介(@youtoy)
    自己紹介
    普段は、某通信会社の研究所勤務
    話題のものを
    たくさん購入
    してる気がする
    ビジュアルプログラミング・IoT
    関連など主催、運営・登壇も
    ガジェット好き
    その他
    IT系イベント主催・登壇・運営、多数参加
    子ども向けの活動いろいろ(IT系以外も)
    プライベートでの活動

    View Slide

  3. 過去のコミュニティ活動中
    での機械学習関連の話
    (学習を含むもの)

    View Slide

  4. Maker Faire出展で使った音の機械学習
    https://www.youtube.com/watch?v=Ve6TyzzmXck
    Googleさんの Teachable Machine
    の音を対象にした機械学習を利用
    (+Web Bluetooth API )

    View Slide

  5. 「小さい子でも分かる・
    楽しめる」を機械学習で実現

    View Slide

  6. 機械学習が使われた仕組み
    を活用した話

    View Slide

  7. ブラウザ上で両手を認識(+矩形描画)
    Googleさんの MediaPipe Hands
    のサンプルに少し矩形の描画処理
    を追加してみたもの

    View Slide

  8. ブラウザ上で両手を認識(+3D描画など)
    Googleさんの MediaPipe Hands
    と p5.js による 3D描画や画像の
    透過表示

    View Slide

  9. 某アニメの悪役の「とっておきの手品」
    Googleさんの MediaPipe Hands
    と p5.js による画像の透過表示

    View Slide

  10. 学習に関しては主に
    Teachable Machine
    後の活用事例のほうは
    TensorFlow.js

    View Slide

  11. 一方、今回の主役は
    Google Colab や
    TensorFlow Lite など

    View Slide

  12. タイトルに書いていた
    「転移学習・モデル変換・
    APIサーバー」の話へ

    View Slide

  13. View Slide

  14. 「TensorFlow Lite Model Maker」が便利!
    1)Google Colabでの転移学習
    モバイル向けなどの「TensorFlow Lite」の転移学習を簡単に
    行える仕組み(コードもすごくシンプル)

    View Slide

  15. 簡単に転移学習!(画像分類の例)
    1)公式チュートリアルを Google Colab
      で開く
    2)Google Colab にデータセットをアップ
    3)データ読み込み処理の記載を少し変更
    4)Google Colab上でボタンをポチポチ
    ※ 公式のデータセットを使うなら 2・3 は不要

    View Slide

  16. TensorFlow Lite はスマホ用公式サンプルがある
    機械学習モデルを作った後は

    View Slide

  17. 【余談】
    TensorFlow Lite の
    公式サンプルを
    流用してみた事例

    View Slide

  18. Teachable Machineとの組み合わせ
    機械学習モデルを「TensorFlow Lite(量子化済み)」で出力
    画面の下に認識結果や確信度の
    表示が出てくる(動的に変化)

    View Slide

  19. モデルの出力の部分
    TensorFlow Lite > 量子化済み を選択

    View Slide

  20. 転移学習がクラウド上
    での処理のみで完了!

    View Slide

  21. 次は「モデル変換:Core ML
    Tools(Lobe)」の話

    View Slide

  22. とある事情により、初心者向けの「機械学習による
    画像分類 + 独自データセットによる転移学習 +
    iPhone上での推論実行」をあれこれ探してた
    先ほどの話をやり始めた背景
    そんな中、Microsoftさんの
    Lobe のスタータープロジェクト
    の話を(ニュースレターより)

    View Slide

  23. とりあえず、
    iPhoneで実機ビルド

    View Slide

  24. ふと思った ⇒ Lobe のサンプルのモデルを Lobe
           以外で作ったものにできるかな?
    2)Core ML Toolsでモデル変換
    【確認したり調べたり】
    ・Lobe のスタータープロジェクトのモデルは Core MLっぽい
    ・Core ML Tools という機械学習モデルをCore ML の形式に
     変換する Pythonパッケージがあるっぽい
    ・Python ってことは、Colab上で使えたりするかも?

    View Slide

  25. ちなみに、Core ML Tools の
    ページはこれ

    View Slide

  26. 再度Teachable Machineとの組み合わせ
    画面の下の結果表示は、
    TensorFlow Lite のサンプル
    とは違ってる

    View Slide

  27. 機械学習モデルの変換関連で行ったこと
    1)Teachable Machine のサイト上での学習
    2)モデルを TensorFlow > Keras で出力
    3)Google Colab上にモデルをアップロード
    4)Google Colab上に Core ML Tools を
      インストールし変換プログラムを書く
    5)変換後のモデルをゲット!

    View Slide

  28. モデルの出力・変換処理の一部

    View Slide

  29. 転移学習・モデル変換が
    クラウド上での処理のみで!

    View Slide

  30. 最後は「APIサーバ」の話
    ※ 道半ばの部分

    View Slide

  31. ふと思った ⇒ Google Colab を APIサーバー的に
           使う方法はないか?
    3)Google ColabでAPIサーバー
    結果:
    ▲▲ 73% ...
    結果:
    ●● 85% ...
    画像を受け取り、
    推論結果を返す

    View Slide

  32. ngrok + Webフレームワーク(Flask/FastAPI)
    で外部からのアクセス等ができた!
    外部からアクセス可能なサーバーにできる?

    View Slide

  33. 【余談】Colab上でNode.jsも動いた

    View Slide

  34. 外部から画像を受け取るところまではできた
    外部から POST で送った画像を Colab側で保存・表示
    あとは推論の処理をうまく
    組み込めれば!?

    View Slide

  35. 長期間の連続稼働は仕組み的に
    ダメですが、ちょっとしたテスト・
    デモ用にあると面白そうかな

    View Slide

  36. 終わり!

    View Slide