Advertisement

Ml15minutes 190330

Apr. 2, 2019
Advertisement

More Related Content

Similar to Ml15minutes 190330(20)

Recently uploaded(20)

Advertisement

Ml15minutes 190330

  1. モデルの精度向上を目指す前に考える キホンのキ 2019/3/30 Rio Kurihara ~画像認識の例~
  2. はじめに 本日は私の実体験をもとに、 機械学習サービス開発のPoCで何を気を付けるべきかお話します 2 話すこと • 画像解析モデルを組み込んだサービスを開発するにあたって、 PoCで何を検討すべきか • 失敗談 話さないこと • 画像処理・画像解析の細かい技術 • 画像処理・画像解析以外の話(とはいえ基本的な考え方は共通しているはず)
  3. Ajenda • 機械学習サービス開発の流れ • 実体験をもとにした失敗談 • まとめ 3
  4. 機械学習サービス開発の流れ 4
  5. 機械学習サービス開発の流れ 5 PoC プロトタイプ 作成 実地検証 本開発 運用保守 • 何のためのPoC?よく考える。 • 最終的な運用を見据えた上で、PoCで何を検証するかを決める必要がある • なぜ? • 「課題が機械学習で解けるか」「精度がどれくらい出るか」だけをPoCで検証しても、 結局運用上の制約を考慮したらモデル組みなおし・・・等になることもあり得る 本日お話する部分
  6. こわい話 6 PoC プロトタイプ 作成 実施検証 本開発 運用保守 超高精度モデルできたww クオリティ高めのプロトタイプもできたわww
  7. 7 PoC プロトタイプ 作成 実施検証 本開発 運用保守 こわい話 作ったはいいけど 現場の人に使ってもらえない・・・ 全然運用に耐え得る 精度じゃない・・・ 新商品が出る度に開発に こんな時間かけられないよ・・・ 時間経過とともにモデルの精度が 下がっているような・・・ 本番環境の撮像環境が PoCと違う・・・ PoC貧乏 PoC疲れ
  8. 実際に失敗しました
  9. 9 今回例に出す麻雀PJの概要 • 画像をインプットにして麻雀牌を検出し、点数計算を自動化したい • サービス/アプリ化しようとしたときに失敗した ←具体例をお話します • 元々は自己研鑽目的だったのでアプリ化なんて考えていなかった プロセスイメージ 入力(画像) ※Sample 牌の識別 役名 1p 2p 3p … 8m 9m p f c 平和 1 1 1 … 0 0 0 0 0 断ヤオ 0 1 1 … 1 0 0 0 0 混一 0 0 0 … 1 1 3 0 0 点数計算 ルールベース
  10. 麻雀点数自動計算モデルのユースケース 画像取得 画像前処理 誤判別データの収集 前処理後画像での物体検出 ルールベースの点数計算 継続活用 新しい麻雀牌・マット等への対応 新しい麻雀牌の定義 (アノテーション) 画像収集 モデル性能の評価 モデルの調整と再学習 アプリケ―ションへのデプロイ モデル挙動のモニタリング ユーザーからのFB 挙動NG 評価NG ユーザが使うときの流れ モデルの改良や機能追加のために 開発者が実施する流れ “3000オール” ユーザ アップロード アプリとかサービスを作る時って、こういったユースケースを考えるかと思います
  11. 継続活用 新しい麻雀牌・マット等への対応 新しい麻雀牌の定義 (アノテーション) 画像収集 モデル性能の評価 モデルの調整と再学習 アプリケ―ションへのデプロイ モデル挙動のモニタリング ユーザーからのFB 挙動NG 評価NG モデルの改良や機能追加のために 開発者が実施する流れ 麻雀点数自動計算モデルのユースケース 画像取得 画像前処理 誤判別データの収集 前処理後画像での物体検出 ルールベースの点数計算 ユーザが使うときの流れ “3000オール” ユーザ アップロード どのくらいの頻度? 完全自動化? 何を性能とする? 定量評価は? 完全自動化? どの程度の スピードで? どんなフォーマット で出力? アノテーション方法? 質は?量は?誰が? オンプレ? クラウド? カメラの性能は? 撮像環境は? 誰が何を モニタリング? どんなデータが 必要? 頻度?基準? どうやって? カメラの性能は? ユースケースとPoCの設計の紐づけが甘かったことが失敗した原因 ハードウェア?
  12. 失敗談 (3つ) 12
  13. 継続活用 新しい麻雀牌・マット等への対応 新しい麻雀牌の定義 (アノテーション) 画像収集 モデル性能の評価 モデルの調整と再学習 アプリケ―ションへのデプロイ モデル挙動のモニタリング ユーザーからのFB 挙動NG 評価NG モデルの改良や機能追加のために 開発者が実施する流れ 麻雀点数自動計算モデルのユースケース 画像取得 画像前処理 誤判別データの収集 前処理後画像での物体検出 ルールベースの点数計算 ユーザが使うときの流れ “3000オール” ユーザ アップロード どのくらいの頻度? 完全自動化? 何を性能とする? 定量評価は? 完全自動化? どの程度の スピードで? どんなフォーマット で出力? どうやって? カメラの性能は? アノテーション方法? 質は?量は?誰が? オンプレ? クラウド? カメラの性能は? 誰が何を モニタリング? どんなデータが 必要? 頻度?基準?
  14. 失敗談 その1 カメラ性能・撮像環境 14 iPhone撮影 (学習データ) RasPiカメラ撮影 (本番環境) PoCはiPhoneカメラで撮影しNNモデルを構築。本番はRasPiで推論 ⇒ PoCで出ていた検出精度が本番環境で出ない (1000万画素vs500万画素) (見るからに画質がちがう)
  15. 継続活用 新しい麻雀牌・マット等への対応 新しい麻雀牌の定義 (アノテーション) 画像収集 モデル性能の評価 モデルの調整と再学習 アプリケ―ションへのデプロイ モデル挙動のモニタリング ユーザーからのFB 挙動NG 評価NG モデルの改良や機能追加のために 開発者が実施する流れ 麻雀点数自動計算モデルのユースケース 画像取得 画像前処理 誤判別データの収集 前処理後画像での物体検出 ルールベースの点数計算 ユーザが使うときの流れ “3000オール” ユーザ アップロード どのくらいの頻度? 完全自動化? 何を性能とする? 定量評価は? 完全自動化? どの程度の スピードで? どんなフォーマット で出力? どうやって? カメラの性能は? アノテーション方法? 質は?量は?誰が? オンプレ? クラウド? カメラの性能は? 誰が何を モニタリング? どんなデータが 必要? 頻度?基準?
  16. 16 失敗談 その2 推論時 LINEbot化しようとした 推論時に通信のオーバーヘッドがかかり、Messaging APIの仕様にひっかかる ユーザー LINE bot サーバ herokuサーバ GPGPU 画像 送信受信 学習 推論 GPGPU LINE bot のシステム構成図
  17. 17 失敗談 その3 推論時 通信のオーバーヘッドをなくすために、エッジ推論を試してみた ⇒ SSD(PoCで組んでいた物体検出モデル)が基盤に載らない。MobileNetSSDで モデルを組みなおす ⇒ スピードの問題は無くなったが、精度はがた落ち 画像撮影・物体検出・結果出力 Vision Kit Vision Kitのシステム構成図 GCP MLEngine 推論学習
  18. 継続活用 新しい麻雀牌・マット等への対応 新しい麻雀牌の定義 (アノテーション) 画像収集 モデル性能の評価 モデルの調整と再学習 アプリケ―ションへのデプロイ モデル挙動のモニタリング ユーザーからのFB 挙動NG 評価NG モデルの改良や機能追加のために 開発者が実施する流れ 麻雀点数自動計算モデルのユースケース 画像取得 画像前処理 誤判別データの収集 前処理後画像での物体検出 ルールベースの点数計算 ユーザが使うときの流れ “3000オール” ユーザ アップロード どのくらいの頻度? 完全自動化? 何を性能とする? 定量評価は? 完全自動化? どの程度の スピードで? どんなフォーマット で出力? どうやって? カメラの性能は? アノテーション方法? 質は?量は?誰が? オンプレ? クラウド? カメラの性能は? 誰が何を モニタリング? どんなデータが 必要? 頻度?基準? その他の処理の部分でも PoCの設計が甘いことによる失敗は様々起き得ます
  19. まとめ • PoCで精度だけ検証しても、使われないシステム/アプリができてしまう • ユースケースを考えた上で、逆算してPoCの設計をする必要がある • 実際に機械学習サービスを作ってみて、高精度なモデルが作れるだけではユー ザーへの価値提供ができないことを身を以て感じた • ユースケースを踏まえた分析設計、実装ができるようなエンジニアになりたい 19
Advertisement