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.

CNN でテニス選手の動きを解析する

26 views

Published on

CNN でテニス選手の動きを解析し、最終的には戦略分析に結びつける。

Published in: Science
  • Be the first to comment

  • Be the first to like this

CNN でテニス選手の動きを解析する

  1. 1. CNN でテニス選手の動きを 解析する (有)シンビー
  2. 2. 自己紹介 • 鈴木量三朗 月刊誌に連載中!!
  3. 3. ゴール:例1 backhand Youtube から
  4. 4. ゴール:例2 service return Youtube から
  5. 5. ゴール:例3 Double hand 謝淑薇(シェイ・スーウェイ) 実は両手打ちのフォア Youtube から
  6. 6. NN ってなんでしょう?
  7. 7. そもそも NN って何? … … … 0の確率 3の確率 8の確率 9の確率 ……手書き 文字 Network 結果は 確率
  8. 8. パーセプトロン 1 𝑥1 𝑥2 𝑎 𝑦 h( ) 𝑏 𝑤1 𝑤2 𝑎 = 𝑏 + 𝑤1𝑥1 + 𝑤2𝑥2 𝑦 = ℎ(𝑎) 典型的なh は シグモイド関数 ℎ 𝑥 = 1 1 + exp −𝑥 重み バイアス 入力データ 出力データ
  9. 9. シグモイド関数 ℎ 𝑥 = 1 1 + exp −𝑥
  10. 10. 実際の計算 1 𝑥1 𝑥2 𝑎 𝑦 h( ) 𝑏 𝑤1 𝑤2 1.0 0.1 0.5 0.1 0.2 0.45 0.610639234 浮動小数点 どこまで精度 が必要かは 不明
  11. 11. 研究者の皆さんどうしているのか? TensorFlow 等で ネットワーク設計 データを用意して、 レンタルサーバで 計算 検証 できたネットワーク+パラメタ Cのソース生成 コンパイルして自分の PCやサーバで実行
  12. 12. TensorFlow • Python でネットワーク設計 http://qiita.com/icoxfog417/items/fb5c24e35a849f8e2c5d が参考になる 𝑦 = 𝑥2 + 𝑏 import tensorflow as tf def x2_plus_b(x, b): _x = tf.constant(x) _b = tf.constant(b) result = tf.square(_x) result = tf.add(result, _b) return result 𝑥 𝑏 square add
  13. 13. Tinier YOLO Xilinx の資料から
  14. 14. NN のデモ • MNIST – 手書き数字認識 • Cifar10 – 画像を10種類に分類するデモ • YOLO – 画像から物体認識(Object Detection) • Dorefanet – 画像の分類(Classfication)
  15. 15. CNN と YOLO
  16. 16. CNN って何? CNN では畳み込み処理をする 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 重みパラメタ 畳み込み処理
  17. 17. 畳み込み処理(画像処理)
  18. 18. BNN(*1) の MNIST BNN の MNIST 情報がフラット 画像としての縦横を 放棄(?) *1 あくまで Xilinx が提供している BNN の MNIST の話。CNN の MNIST もある。
  19. 19. YOLO のCNN(1層目) G R B 0.1 0.1 0.1 0.4 0.5 0.6 0.7 0.8 0.9 0.2 0.2 0.2 0.4 0.5 0.6 0.7 0.8 0.9 0.3 0.3 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.4 0.4 0.4 0.4 0.5 0.6 0.7 0.8 0.9 重み バイアス
  20. 20. パーセプトロン(再掲) 1 𝑥1 𝑥2 𝑎 𝑦 h( ) 𝑏 𝑤1 𝑤2 𝑎 = 𝑏 + 𝑤1𝑥1 + 𝑤2𝑥2 𝑦 = ℎ(𝑎) 典型的なh は シグモイド関数 ℎ 𝑥 = 1 1 + exp −𝑥 重み バイアス 入力データ 出力データ
  21. 21. YOLO の一部 任意の画像(例:768x576) 416x416 に正規化された画像 1) 入力画像の各画素を浮動小 数点数に正規化 2) numpy 用に重みとバイアスを変形 重み バイアス 3) numpy の matmul を使って計算 0.123456789 0.012345678 0.345689088 0.457898989 0101010110 1110010000 1110001010 0010110101 4) 3bit の情報に変換
  22. 22. Tinier YOLO 10層 = Deep じゃない CNN
  23. 23. YOLO v3 Ayoosh Kathuria さんの towardsdatascience.com 記事から
  24. 24. 結果 Tinier YOLO • Predicted in 0.73 sec. • car: 95% • dog: 74% • bicycle: 56% YOLO v3 • data/dog.jpg: Predicted in 22.6 sec. • bicycle: 99% • truck: 92% • dog: 100%
  25. 25. 何をしたか? > git clone https://github.com/pjreddie/darknet > cd darknet > make > wget https://pjreddie.com/media/files/yolov3.weights > ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
  26. 26. Darknet • NN 用のフレームワーク – YOLO はその一部 • 簡単にオレオレ NN 作成可能 – 分かった気になれる(危険!) • 数式をたどろう! • 論文読もう • ソースを読もう • 意味を考えよう データが問題。 学習はどうする? 誰かの作った ありもので いけたりする
  27. 27. MNIST再考
  28. 28. 手書き認識(SHARP製) 1996? 2008?手書き認識自体は目新しい技術ではない
  29. 29. MNIST with FPGA 4 と 9 を間違えてい る
  30. 30. LeNet-5 どっかのパーセプトロンで 4と9の区別がついてない ホットポイント(?) があるはず
  31. 31. LeNet-5 複製して再学習
  32. 32. 再学習 9 4 4と9が分離可能? (アイデアだけ)
  33. 33. YOLO の重みパラメタ
  34. 34. 分布を見てみた 0
  35. 35. 対数的に見てみた もうすこし統計学的な表現はないのでしょうか? アドバイスください。
  36. 36. データ表現に浮動小数点数は必須? Wikipedia より
  37. 37. Google は bloat16 Wikipedia より Google I/O ‘18の資料より Wikipedia より 精度はいらない? Exponent が重要? 分布もそれを示唆?
  38. 38. とりたいアプローチ • 統計学(的) • 人間の感覚を信用しない • 既存のフレームワークをうまく使う – 使うだけにはしたくない
  39. 39. テニスの動画に応用
  40. 40. まずはプレイヤー特定 Youtube から
  41. 41. 誤認識しないように Youtube から
  42. 42. サーブ/リターンは難しい? service return Youtube から
  43. 43. ボールも難しい? backhand Youtube から
  44. 44. 目標 • 静止画からプレイヤーを特定する • 動画からプレイヤーを特定する • 動画からボールを特定する • 動画からプレイ内容/ポイント状況を特定する • 動画から優劣を特定(将棋に迫れるか?)

×