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

IkaLog BPStudy102

IkaLog BPStudy102

BPStudy #102 on Feb 26, 2016
http://bpstudy.connpass.com/event/25542/
http://togetter.com/li/943349

「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側 v.2.0

IkaLogは公開から半年を迎え、現在では全世界で24時間あたり4000ゲーム以上を分析しています。今回は既出のIkaLogプレゼンを簡単にカバーしつつ、ユーザ増加により発生した新たな課題とその対策、IkaLogにおいて機械学習や深層学習の簡単な利用例について解説します。

Takeshi HASEGAWA

February 29, 2016
Tweet

More Decks by Takeshi HASEGAWA

Other Decks in Technology

Transcript

  1. !IBTFHBXʹ͍ͭͯ  ௕୩઒ɹ໠ )"4&("8"5BLFTIJ  UXJUUFS!IBTFHBX 2004   |  

    2011 2011   |   2014 2014   |   SEサービス プリセールス   @  So+ware  Research  Associates,  Inc.   システム構築、客先のシステム運用、提案でキャリアをスタート →  プリセールス〜PMを担当するインフラエンジニア システムアーキテクト   @  Trigence  Semiconductor,  Inc.   エンベデッド開発支援からITシステム管理まで多岐に対応   セールスエンジニア   @  Fusion-­‐io,  Inc.   高速半導体ストレージ ioDrive  /  ioMemory  シリーズの  SE  として活動
  2. هࣄ঺հʢʁʣ  Լه̎ຊͷهࣄ ϖʔδڧ ͕ ·ͱΊͯऩ࿥͞Ε·ͨ͠ɻ  *4#/ Ձ֨ ԁ

      •  4PGUXBSF%FTJHO ୈೋಛू αʔόͷ໨ར͖ʹͳΔํ๏લฤ  •  4PGUXBSF%FTJHO ୈೋಛू αʔόͷ໨ར͖ʹͳΔํ๏ޙฤ 
  3. εϓϥτΡʔϯͱ͸ γϡʔςΟϯάήʔϜͷҰछ –  ୈࡾऀࢹ఺ 514ʣ εϓϥτΡʔϯͷಛ௃ –  ࣗ෼ͨͪͷlφϫόϦzΛ޿͛ͳ͍ͱਐΊͳ͍ –  ʮॐʯλΠϓҎ֎ʹʮόέπʯʮϩʔϥʔʯͳͲ

    ༷ʑͳϒΩ͕͋Δ ༷ʑͳϓϨΠ૚ –  খֶੜ͔Βେਓ·Ͱ –  ʮ૬खΛ౗͢ʯ͜ͱ͕࠷ऴ໨తͰ͸ͳ͍ –  ຊؾͰ΍ͬͯΔਓͨͪ͸ා͍ 
  4. *LB-PHͱ͸Կ͔ 8JJ6༻ήʔϜʮεϓϥτΡʔϯʯࢧԉιϑτ – )%.*ΩϟϓνϟΛհͯ͠৘ใΛࣗಈऔಘ – ਺஋ɾจࣈྻσʔλͱͯ͠ೝࣝ – ͓޷Έͷํ๏Ͱ஝ੵɺग़ྗ  Nintendo  WiiU   &

    スプラトゥーン データ化   {  “kills”:  5,  “deaths”:  1  } IkaLog 外部ツールへ出力   (棒読みちゃん等) 出力例
  5. *LB-PHͷσβΠϯ  ikalog.Engine GameStart GameKill GameDead Result  Judge ResultDetail CVCapture

      CVFile   DirectShow   AVFoundaRon   Screen   Screenshot   StatInk   TwiPer   ikalog.scenes   画像認識およびイベント発行 ikalog.inputs   ビデオ入力 ソース   ikalog.outputs   アクション   InklingsTracker OpenCV,    ビデオ入力   フレームワーク   ログファイル、   サイト連携、   アプリ連携など   OpenCV,もしくは   独自のラッパ
  6. &NCFEFE*LB-PHʢϥΠϒϥϦϞʔυʣ •  *LB-PHࣗମ͕1ZUIPOϞδϡʔϧͱ࣮ͯ͠૷͞Ε͍ͯΔ •  1ZUIPOίʔυ͔Β*LB-PHΛ࣮ߦͯ͠ɺ৘ใΛड͚औΕΔ •  ࡞ͬͯΈͨΞϓϦέʔγϣϯͷྫ  ΞϓϦέʔγϣϯ આ໌

    *LB3FOBNFQZ εϓϥτΡʔϯͷϏσΦΛ෼ੳ εςʔδʗϧʔϧʗউഊͷ͍ͭͨ ϑΝΠϧ໊ʹϦωʔϜ͢Δ *LB$MJQTQZ εϓϥτΡʔϯͷϏσΦΛ෼ੳ ఢΛ౗ͨ͠ʗ౗͞Εͨγʔϯ͚ͩΫϦοϓ͠ɺl๩ ͍͠ਓz޲͚ͷαϚϦϜʔϏʔΛੜ੒
  7. *LB-PH͕ग़ྗ͢ΔσʔλͷෳࡶԽ  IkaLogの当初のスコープ   ・ステージ/ルール検出、勝敗(2択)   ・スクリーンショット保存 追加された検出内容   ・目標(ガチホコ/ガチヤグラ)の位置検出

      ・プレイヤーの死因(凶器)検出   ・時系列のスコア検出   ・プレイヤーのランク、所持金などの数値検出   ・全プレイヤーの生死ステータスのモニタリング   ・ロビー(パブリック/プライベートタッグ)検出   ・スペシャル蓄積・利用検出   ・目標に対するチームのイベント   ・装着ギアの検出     今後追加する(かもしれない)検出   ・コミュニケーション検出(ナイス/カモン)  
  8. 23

  9. ΤίγεςϜ  ユーザー 開発者 hasegaw/ikaLog stat.ink ダウンロード 記録   送信

    hasegaw 一部データ   (QA用)    開発、    stat.inkデータに     よる機械学習 Windows版   実行ファイル生成 (本スライド中の画像の一部はイメージであり実際のものとは異なります。) PR モ   ツ   鍋
  10. ͱ͋ΔΠΧͷઓಆه࿥  0" 2" 4" 6" 8" 0" 1" 2"

    3" 4" 5" 6" 7" 8" 9" 10" Kill Win/Lose Win" Lose" 0" 1" 2" 3" 4" 5" 1" 2" 3" 4" 5" 6" 7" 8" 9" 10" 11" DeathWin/Lose" Win" Lose" 0.0%$ 2.0%$ 4.0%$ 6.0%$ 8.0%$ 10.0%$ 12.0%$ 14.0%$ *5$ *4$ *3$ *2$ *1$ 0$ 1$ 2$ 3$ 4$ 5$ K*D
  11. ήʔϜΛධՁ͢ΔͨΊͷओͳϝτϦοΫ •  εςʔδ   •  ϧʔϧ   • 

    φϫόϦɺΨνΤϦΞɺΨνϠάϥɺΨνϗίότϧ •  উഊ •  ϒΩ   •  γϡʔλʔɺνϟʔδϟʔɺεϩογϟʔɺϩʔϥʔ •  Ωϧ਺ͱσε਺ •  ࣗ෼ͷߦಈύλʔϯ 
  12. *LB-PHͷը૾Ϛονϯά ୈҰੈ୅   ソース映像 マスク画像 加算画像 + = =

    正しいマスクを加算すると画像が真っ白になる 違うマスクを加算すると画像が真っ白にならない
  13. *LB-PHͷը૾Ϛονϯά ୈೋɾࡾੈ୅  •  ୈೋੈ୅ –  ʮલܠ͕നʯ͚ͩͰ͸ଞͷ৔໘Ͱޡೝࣝ͢Δέʔε͕ ૿͖͑ͯͨ –  ʮഎܠ͕ࠇʯʮഎܠ͕നҎ֎ʯͷͲͪΒ͔Λ

    ࢦఆͯ͠ɺ৚݅Ҏ֎ͷυοτ͕ଟ͚Ε͹'BMTF1PTJUJWFͱ൑ அͰ͖ΔΑ͏ʹ֦ு •  ୈࡾੈ୅ –  ʮલܠ͕ΦϨϯδʯʮલܠ͕ԫ৭ʯͳͲΛೝ͍ࣝͨ͠ έʔε͕Ͱ͖ͯͨ –  લܠɾഎܠ͝ͱʹ)47৭੒෼ͳͲΛͯ͠৚݅௨Γɾ ৚݅Ҏ֎ͷυοτΛݕग़Ͱ͖ΔΑ͏ʹ֦ு 
  14. 47

  15. طଘ0$3Ͱͷ໰୊఺ •  5FTTFSBDU0$3ΛධՁͨ͠ࡍͷ ՝୊ –  ೝࣝ཰͕҆ఆ͠ͳ͍ –  ΋ͱ΋ͱจষΛಡΈऔΔͨΊͷ΋ͷ –  ʙจࣈͷจࣈɺ਺ࣈͷೝࣝ͸ۤख

    –    ͳͲΛؒҧ͑Δ͜ͱ͕͋Δ –  1ZUIPOYͷεΫϦϓτ্͔Β ར༻ͮ͠Β͔ͬͨ •  طଘͷจষ޲͚0$3ΤϯδϯΑΓ΋ ୯७Ͱ໨తʹదͨ͠ೝࣝํࣜΛݕ౼  文字として   認識されないことも
  16. L// ,ۙ๣๏ ͷߟ͑ํ  • • • • ▪ ▪

    ▪ ▪ ? ▲ ▲ ▲ ▲ ? ? ? ? とてもシンプルな機械学習     標本    の傍にあるサンプルがどれかで     分類する。       K=1  の場合は最寄りのサンプルがある   クラスに分類される。       K=3  の場合は近くに3つのサンプルがある   クラスに分類される。
  17. L//ʹΑΔਤܗϚονϯάͷྫ   •  (JU)VCʹιʔε͋Γ –  IUUQTHJUIVCDPNIBTFHBXPQFODW@LOO@FYBNQMF •  ࡾͭͷύλʔϯ˓˚˘Ͱը૾Λੜ੒͠ɺ L//Ͱֶश͢Δ

    •  ϥϯμϜʹ˓˚˘͔Βը૾Λੜ੒͠ɺͦͷը ૾ͷछྨΛ൑ఆ͢Δ –  ,//Λ༻͍ͯͦΕʹ͍ۙը૾Λݟ͚ͭग़͢ –  ݟ͚ͭͨը૾ͷछྨ͔Βɺ໰୊ਤܗͷछྨΛಛఆ 
  18. ,//Ͱݟ͚ͭͨʮҰ൪͍ۙจࣈը૾ʯͰ ը૾Λஔ͖׵͑   •  ֤೔ຊޠϑΥϯτจࣈΛ1/(ܗࣜʹม׵ •  ্هσʔλΛ,//Ͱֶश •  ը૾Λೖྗ͠άϨʔεέʔϧʹม׵

    •  ը૾ΛจࣈαΠζʹ͋Θͤͯ෼ׂɺ,//Ͱ ֤ྖҬʹ΋ͬͱ΋͍ۙจࣈϑΥϯτΛௐ΂Δ •  ը૾Λจࣈʹஔ͖׵͑ 
  19. 58

  20. ࢮҼͷೝࣝʢ̏ʣ •  جຊ͸਺ࣈͷೝࣝͱҰॹ –  จࣈ୯ҐͰ͸ͳ͘จࣈྻΛҰ૊ͱͯ͠ॲཧ –  จࣈྻ͸ࠨدͤͯ͠ॲཧʢͨ͠΄͏͕͍͍ͷ͔͸Α͘൑͍ͬͯͳ͍ʣ •  ೝࣝ཰͸ͦΕ΄Ͳߴ͘ͳ͍͕ɺೝࣝճ਺Ͱਫ਼౓Λ֬อ – 

    *LB-PH͸ݱࡏຖඵϑϨʔϜ΄Ͳղੳ͍ͯ͠Δ –  ԼهྫͰ͸ɺࢮҼͷϝοηʔδ߹ܭGΛղੳ͠ɺ ࠷ଟස౓͸HBM@EFDP G  ͩͬͨˠ݁Ռతʹਖ਼ղ   votes={      'supershot':  6,    'carbon_deco':  1,    'bucketslosher':  1,  'octoshooter_replica':  1,      'splashshield':  1,  'sshooter_collabo':  5,  'hotblaster':  2,    'pablo':  1,    'nzap89':  6,      'sharp_neo':  3,  'hotblaster_custom':  2,  '96gal_deco':  18,  '52gal':  1,    'hokusai':  1   }
  21. 64

  22. 66

  23. ϒΩೝࣝίʔυͷมભ ੈ୅ ಛ௃ɺར఺ ՝୊  ͢΂ͯͷਖ਼ղը૾Λอ͓͖࣋ͯ͠ɺ ೖྗը૾Λൺֱ ୈࡾऀஶ࡞෺ͷσʔλΛͦͷ·· σʔλʹؚΊͯ഑෍͢Δඞཁ͕ ͋ͬͨ

    ୈੈ୅ ը૾ͷ৭૬ώετάϥϜΛಛ௃ྔͱͨ͠ ౷ܭతख๏ʢͷͪʹ,ۙ๣๏΁੾ସʣɻ ೝࣝ཰ɹ̔̌ˋҎԼ ୈੈ୅ ୈҰੈ୅ͷಛ௃ྔͷ··ɺ෼ྨΞϧΰϦ ζϜΛ,//ʹ੾Γସ͑ ೝࣝ཰͕एׯѱԽ ୈੈ୅ ಛ௃ྔΛ৭૬ώετάϥϜ͔Βzը૾ͷෳ ࡶ͞zʹมߋ ɾϥϓϥγΞϯϑΟϧλͳͲΛ௨ͯ͠ը ૾ͷಛ௃ྔΛࢉग़ Ϣʔβͷ؀ڥʢσόΠεɺઃఆࠩ ҟɺઃఆϛεʣʹΑΓೝࣝ཰͕େ ෯௿Լ  ୈੈ୅ ɾϥϓϥγΞϯϑΟϧλॲཧޙͷΞϧΰ ϦζϜݟ௚͠ ਖ਼نԽɺϓʔϦϯά૚૬౰ͷॻ͖௚͠ Ϣʔβͷઃఆ໰୊͕ͳ͍ݶΓ͸΄ ΅ਖ਼֬ͳೝ͕ࣝՄೳ͕ͩ ̍̌̌ˋͰ͸ͳ͍ ୈੈ୅ ৞ΈࠐΈχϡʔϥϧωοτϫʔΫ %//ʣ ʹΑΔਂ૚ֶशͷಋೖ ෼ྨॲཧʹཁ͢Δ$16࣌ؒ ֶशσʔλͷαΠζɺ഑෍ํ๏ 
  24. ৽͍͠ಛ௃ྔࢉग़ํ๏Ͱͷ՝୊ •  ؀ڥʹΑͬͯಛ௃ྔ͕มԽ͢ΔཁҼ –  ΩϟϓνϟσόΠεͷը࣭ಛੑ •  ৭߹͍ɺίϯτϥετɺΨϯϚ –  8JJ6ͷग़ྗղ૾౓ • 

    QQ  •  Ϣʔβͷར༻ܗଶʹΑΓಛ௃ྔ͕มԽ͢ΔཁҼ –  Ωϟϓνϟؔ࿈ιϑτͰ8JJ6ը૾Λؒ઀औΓࠐΈ –  ຊདྷͱ͸ҟͳΔղ૾౓΍ΦϑηοτͰೖྗ͞Εɺ ಛ௃ྔ͕มԽ 
  25. ୈੈ୅rਂ૚ֶशʹΑΔϒΩ൑ఆ •  ৞ΈࠐΈχϡʔϥϧωοτ $// Λ༻͍ͨը૾ͷΫϥελ Ϧϯά –  %*(*54 CZO7*%*" $B⒎FͰ1SPPGPG$PODFQUΛ࣮૷

    –  "MFY/FU (PPHMF/FUͳͲͷطଘωοτΛར༻ •  ڻҟతͳਖ਼౴཰ –  ༷ʑͳϢʔβ͕౤ߘͨ͠σʔλͰ΋΄ͱΜͲޡ൑ఆͳ͠ ʢ਺ສϒΩ͋ͨΓޡ൑ఆ͸̎̌ҎԼʣ •  ֶश͸(1(16ඞਢɺϚονϯά͸$16΋Մ PO(16       dNT PO$16X*OUFM.,-dNT PO$16       dNTఔ౓  Thanks  @itoooon
  26. ୈੈ୅Ϣʔβ؀ڥ΁ͷσϓϩΠͷ՝୊  モデルデータの   肥大化 CPU   性能バランス 導入の手間 1秒以内に

      8ブキ判定可能      400MB~  (AlexNet)        100MB  (GoogleNet)    配布方法は?コスト対効果 8ブキの判定に〜5秒かかる   Core2  Duoから最新CPUまでユーザが分布   ニコ生や録画(SWエンコーダ)の   ためにCPUに余力を残す必要も 1MB  (KNN) Chainer  を  Windows  で動かすのは大変    Py2EXE  化も課題が多そう KNN  なら   OpenCV  に   含まれている   ユーザ向けとしての配布はせず   手元での開発効率アップのために  DNN  利用
  27. *LB-PHʹ͓͚Δ%//ͷར༻ঢ়گ  ゲーム終了時のスクリーンショット   stat.ink  から投稿データを深夜バッチで受け取り   約4000枚/日   認識対象となるブキ画像

      約24000サンプル/日   Chainer  による  DNN  で自動的に分類   スクリーンショットからサンプルを生成   ブキ精度向上にあたり注目したいサンプル   (絞り込み済)   実際に IkaLog  が利用するブキ認識モデルの強化、テストに利用  
  28. 82

  29. 8FCDBNαϙʔτʢΠϝʔδʣ  1)  TV、ディスプレイに  Webcam   を向ける   2)  WiiU

     のホーム画面を表示   3)  IkaLog  で  Webcam  を介して  ワープ キャリブレーション   4)  以後 IkaLog  は画面と認識した範囲に対して処理を行う  
  30. 8FCDBNܦ༝ͷೖྗঢ়گ •  ʮط஌ͷը૾ʯʢ8JJ6ϗʔϜը໘ʣΛ ը໘্ʹग़ͯ͠ɺΩϟϦϒϨʔγϣϯ •  Q Y ͷը໘ΛœQY͙Β͍ͷ ਫ਼౓ͰऔΓࠐΊΔ • 

    ന৭͕    ʹͳΒͳ͍ͨΊ ԿΒ͔ͷରࡦ͕ඞཁ – ΧϥʔόϥϯεɺΨϯϚௐ੔ – *LB-PH಺ͷը૾ݕग़ͷεϨογϣϧυมߋ 
  31. *LB-PHͷํ޲ੑ  $   More  Users $$$   Less  Users

      More  Metrics Less  Metrics IkaLog   (IniRal  Version) ・画面認識   ・自動記録 IkaLog   (latest  Version) ・より多くの    認識項目   ・タイムライン分析 ・Android  App   ・手動入力   ・特殊ハード不要 IkaLog   (WebCam対応)   当初のプラン   ・HDMIキャプチャデバイスを    WebCamで代替   ・認識率・認識項目は減少
  32. TUBUJOL౤ߘϢʔβ਺  $   More  Users $$$   Less  Users

      More  Metrics Less  Metrics 100  users/day IkaLog   (latest  Version) 200  users/day
  33. 8FCDBNରԠͷ՝୊఺ͱ ͜Ε·ͰʹಘΒΕͨ஌ݟ •  ΋͠ɺ͜ͷΑ͏ͳʮมͳ࢖͍ํʯΛ͢Δͱ͖͸ ࣗಈௐ੔ػೳΛΦϑʹͰ͖Δ8FCDBN͕Φεεϝ –  Χϥʔόϥϯε͕ݻఆͰ͖Δ͜ͱ –  ίϯτϥετ͕ݻఆͰ͖Δ͜ͱ – 

    ΦʔτϑΥʔΧεΛΦϑʹͰ͖Δ͜ͱ •  ϓϥζϚ57͸໌Δ͗ͯ͢8FCDBNͷ μΠφϛοΫϨϯδ͕௥͍͔ͭͳ͍ʁ&-ӷথ͸ʁ •  ৽͠ΊͷεϚʔτϑΥϯͷΧϝϥ΋ඇৗʹ༏ल 
  34. 1Z&9&PTQBUICBTFEJS ͕ม ໰୊ –  1Z&9&ޙɺPTQBUICBTFEJS ͕σΟϨΫτϦ໊Λ ฦͣ͞ɺ&9&ϑΝΠϧ໊Λฦ͢ –  ݁Ռͱͯ͠$FSUJpXIFSF ౳͕ਖ਼͍͠ύεΛࢦ͞ͳ͍

    –  1Z&9&ͨ͠৔߹ʹͷΈ)5514͕Ͱ͖ͣʹ೰Μͩ ճආࡦ –  ҎલɿVSMMJCʹݸผύονΛ౰ͯͨ –  ݱࡏɿಠࣗʹ୅ସΫϥεΛ༻ҙ