Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IkaLog20170316pynq_dist

3,109 views

Published on

FPGAエクストリーム・コンピューティング 番外編:PYNQ祭り
(2017/3/4) Xilinx社オフィスにて。

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

IkaLog20170316pynq_dist

  1. 1. 本スライド中に登場するスプラトゥーン関連画像は任天堂株式会社の著作物です。
  2. 2. •  –  –  –  •  –  –  –  • 
  3. 3. 萌え萌えうにっくす! ネットワーク管理ガイド (2003) Xen徹底入門 第一版/第二版 (2007. 2009)
  4. 4. Fusion ioMemory PCIe 接続型のエンタープライズ向け フラッシュストレージの第3世代製品  サーバの目利きになる方法 前編・後編
  5. 5. (ヾノ・∀・`) ナイナイ
  6. 6.  <⌒/ヽ-、__ /<_/____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ アダーできたし、次はALU作って、最終的には オレオレマイコンをひとつ作ってみようか。 今使っているロジックシミュレータじゃ 小さい回路しか作れないし さすがにALUすら無理だなあ
  7. 7. 二日後 Two Days Later
  8. 8. レジスタの値を読み取り、アナログRGBで状態を出力する回路(not SW)を作って入れてた
  9. 9. 17
  10. 10. 様々なステージとルール •  16のステージ、4つのルール •  勝利に向けチームで立ち向かう 多様な楽しみ方 •  90以上のブキから好きなものを 選んでプレイ
  11. 11. Wii U用ゲーム「スプラトゥーン」支援ソフト – HDMIキャプチャを介して情報を自動取得 – 数値・文字列データとして認識 – お好みの方法で蓄積、出力 Nintendo WiiU & スプラトゥーン データ化 { “kills”: 5, “deaths”: 1 } IkaLog 外部ツールへ出力 (棒読みちゃん等) 出力例
  12. 12. HDMI キャプチャデバイス IkaLog 実行用PC
  13. 13. 録画ソフト 自動制御 AmaRecTV カラーLED連動 Fluentd 転送 スプラトゥーン戦績記録SNS CSV/JSONファイル保存 スクリーンショット保存 SNS投稿 IkaLog
  14. 14. •  IkaLogユーザのひとり @fetus_hina さんが開発、 運営する Web サイト •  IkaLog からのプレイデータを受け取り、
 表示・集計する •  IkaLogからの投稿を分析し
 統計情報、トレンドを表示
  15. 15. 30 https://stat.ink/
  16. 16. 自分が倒されて 行動不能だった時間 イカ(味方/敵 計8匹)の生死状況 チームのスペシャル発動、キル/デス 自分の塗り面積 https://stat.ink/
  17. 17. https://stat.ink/ ナワバリバトル – 互いの干渉が少ない ガチエリア – “相手を倒しつつ生存”がカギ ガチホコ – 全体的に乱戦になりやすい ガチヤグラ – 全体的に乱戦になりやすい
  18. 18. https://stat.ink/
  19. 19. .96ガロンデコ アップデートをきっかけにユーザー数が激減 ロングブラスターカスタム 夏以降、人気を博しているブキのひとつ https://stat.ink/
  20. 20. データソース hps://stat.ink/en^re/user 【ピーク】 24時間あたり370ユーザ、約15,000ゲーム 2016年11月時点にて 24時間あたり 平均100ユーザ超が利用、平均2500ゲームを処理 最後の“フェス“ (ゲーム内イベント)
  21. 21. •  •  • 
  22. 22. •  2014年INTEROPでの”Chainer”デモがきっかけ –  深層学習のプレゼンテーションみて「凄いな」と思った –  “何か面白いソフトウェアを作りたいな” –  ちょうどスプラトゥーンの発売直後だった •  未経験からのチャレンジ –  OpenCV経験 3時間ぐらい –  機械学習/ディープライーニング経験 なし
  23. 23. ここまでするなら 自動化できるツールを作ろう!
  24. 24. ソース映像 マスク画像 加算画像 + = = 正しいマスクを加算すると画像が真っ白になる 違うマスクを加算すると画像が真っ白にならない
  25. 25. 44
  26. 26. 45
  27. 27. 47
  28. 28. •  ゲーム中で使われているフォントは2種類 –  画面上に現れる数字フォントは1種類 –  フォントが判っているのだから、認識できるはず •  試行錯誤の後、既存OCRエンジンの利用は断念 –  機械学習ベースの認識エンジンを実装
  29. 29. ● ● ● ● ■ ■ ■ ■ ? ▲ ▲ ▲ ▲ ? ? ? ? とてもシンプルな機械学習 標本    の傍にあるサンプルがどれかで 分類する。 K=1 の場合は最寄りのサンプルがある クラスに分類される。 K=3 の場合は近くに3つのサンプルがある クラスに分類される。
  30. 30. •  GitHub にソースあり –  https://github.com/hasegaw/opencv_knn_example/ •  三つのパターン ○ △ □ で画像を生成し、
 kNNで学習する •  ランダムに ○ △ □ から画像を生成し、その画像 の種類を判定する –  KNN を用いてそれに近い画像を見つけ出す –  見つけた画像の種類から、問題図形の種類を特定
  31. 31. 問題図形をランダムに 生成 K近傍法を用いて、学習済みの 図形から、もっとも近い図形を調べる 仕分ける ○ △ □ ○ 学習済み図形 ○ △ □
  32. 32. 1)画面上の数字部分(位置固定)を切り抜き 2)縦・横のヒストグラムを生成し各文字の位置を特定 3)文字を検出用サンプルのサイズ(等幅)にリサイズ、
 二値化 4)KNNにより既知の検出用サンプルと照らし合わせて
 認識する
  33. 33. •  基本は数字の認識と一緒 •  認識率はそれほど高くないが、認識回数で精度を確保 –  IkaLogは現在毎秒10フレームほど解析している –  下記例では、死因のメッセージ合計49fを解析し、
 最多頻度は96gal_deco (18f, 36%) だった → 結果的に正解 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 }
  34. 34. •  •  • 
  35. 35. 黒いブレット 明るいブレット 背景色
  36. 36. 黒いブレット 明るいブレット 背景色
  37. 37. •  –  –  •  –  –  •  –  – 
  38. 38. 66
  39. 39. 68
  40. 40. スプラトゥーンのブキ 59種類(スライド作成当時)
  41. 41. •  •  •  •  他の装備品が被っている 保護色(まだマシ) 保護色(マジつらい)
  42. 42. –  入力値: RGBもしくはHSVの色情報 (47*45*3=6,345 units) –  出力値: 各クラスの出力値(91 units, Sonmaxを適用する) –  使用する結合:全結合のみを使用(理由は後述) –  目 的:特徴量の自動生成 •  今回の用途であれば、深層学習で特徴量を自動的に見つけ出せるはず •  各ブキの背景色の重みが自動的ゼロに調整されれば、背景色への考慮 も不要 –  目標性能値 •  目標性能値: 91クラスのマルチクラス分類が350ms未満(画面1枚あたり3 秒以内) •  stat.ink の投稿データに対して99.99%の精度
  43. 43. 0 1 2 3 .. .. n 0 1 2 3 … 89 90 Input Layer Output Layer Hidden Layer 52gal 52gal_deco 96gal 96gal_deco … sschooter_wasabi wakaba
  44. 44. HDMI キャプチャデバイス IkaLog 実行用PC
  45. 45. FPGAボード
  46. 46. PYNQ-Z1 上の ARM A9 プロセッサは Intel CPU の 15% の性能しかない
  47. 47. •  •  –  –  •  •  •  • 
  48. 48. PYNQ-Z1向け 最適化途中 PYNQ-Z1向け 最適化前 40%以上高速化
  49. 49. •  pi@raspberrypi:~/ikalog/IkaLog $ PYTHONPATH=./lib/ python3 bench_1024mat.py encode 0.000015974s logical_and_popcnt 0.094928265s total 0.094944239s <class 'ikalog.utils.ikamatcher2.reference.Numpy_uint8'> encode 0.000014544s logical_and_popcnt 0.021027803s total 0.021042347s <class 'ikalog.utils.ikamatcher2.reference.Numpy_uint8_fast'> encode 0.005746365s logical_and_popcnt 0.002564192s total 0.008310556s <class 'ikalog.utils.ikamatcher2.arm_neon.NEON'>
  50. 50. FPGA
  51. 51. •  –  •  –  –  •  –  –  – 
  52. 52. FIFO 32b AXI4 Bus ARM A9 DDR3 SDRAM 512MB DDR3 @ 16bit, 666MHz @ 650MHz 2 Cores 24b MKJPEG IP DMA Master DMA Master FIFO 8b 32b ビットマップを システムメモリから 読み込み JPEGバイトストリームを システムメモリへ 書き込み 新規設計中の範囲
  53. 53. PL (FPGA部分) DVI2RGB Video In to AXIS RGB2DVI AXI4S to Video Out Video DMA ARM A9 DDR3 SDRAM 512MB DDR3 @ 16bit, 666MHz AXI Wii U TV @ 650MHz 2 Cores 1) 映像の再送信に DDR3 DRAM の帯域が利用されてしまう 1280x720x3[bytes] * 60 fps * 2(round trip) = approx. 320MB/s 2) オーディオ信号が捨てられる DVI → Xilinx Video Format→ DVI
  54. 54. PL (FPGA部分) DVI2RGB Video In to AXIS RGB2DVI AXI4S to Video Out Video DMA ARM A9 DDR3 SDRAM 512MB DDR3 @ 16bit, 666MHz AXI Wii U TV @ 650MHz 2 Cores 受信したHDMI(DVI)信号をそのまま再送出する スプリッタ機能では DDR3 SDRAMを経由しない
  55. 55. •  –  –  •  –  –  •  –  – 
  56. 56. 10 / 10 / 10 / 30 / vid_pDataRaw
  57. 57. /10 /10 /10 MUX MUX MUX EnableRaw vid_pDataRaw 30 /
  58. 58. •  – 
  59. 59. 96 自分がみていた波形は HDMI ではなく DVI だった
  60. 60. オーディオなしのDVIモニタ仕様で応答していた ためWiiUからオーディオ信号が出ていなかった ことが判明 Manufacturer: DGL Model 0 Serial Number 0 (snip) 8 bits per primary color channel DVI interface Maximum image size: 51 cm x 29 cm Gamma: 2.20 Supported color formats: RGB 4:4:4 Established ^mings supported: 640x480@60Hz 800x600@60Hz 1024x768@60Hz Standard ^mings supported: 1680x1050@60Hz 1920x1080@60Hz 1280x1024@60Hz Detailed mode: Clock 108.000 MHz, 1280 mm x 1024 mm 1280 1328 1440 1688 hborder 0 1024 1025 1028 1066 vborder 0 +hsync +vsync (snip) Checksum: 0x5 (valid) EDID block does NOT conform to EDID 1.3! (snip)
  61. 61. オーディオなしのDVIモニタ仕様で応答していた ためWiiUからオーディオ信号が出ていなかった ことが判明 Manufacturer: SHP Model fec Serial Number 0 Made week 255 of model year 17 EDID version: 1.3 (snip) CEA extension block Extension version: 3 (snip) Audio data block Linear PCM, max channels 2 Supported sample rates (kHz): 48 44.1 32 Supported sample sizes (bits): 24 20 16 Speaker allocaQon data block (snip) Extended tag: Colorimetry data block Vendor-specific data block, OUI 000c03 (HDMI) Source physical address 2.0.0.0 Supports_AI
  62. 62. •  –  •  –  –  –  • 
  63. 63. 100 合成エラー
  64. 64. 101 DVIだけならDDC通信内容が128Bに収まるが HDMIモニタは256B必要か
  65. 65. 102
  66. 66. 103 OK!
  67. 67. 104
  68. 68. 105
  69. 69. 正常動作する場合 ダメな場合 VDEがオーディオ信号らしき もので暴発している
  70. 70. 107
  71. 71. 108 ネットで何故か拾える Confiden^al 資料
  72. 72. 109 ビデオ その他(オーディオ等)
  73. 73. 110
  74. 74. 111
  75. 75. 112
  76. 76. 113 キター!!!
  77. 77. •  ü  ü  ü  •  •  •  – 
  78. 78. 115
  79. 79. •  •  • 
  80. 80. らぴす (2000-2014)
  81. 81. © 07strikers

×