狠狠撸

狠狠撸Share a Scribd company logo
CNN でテニス選手の動きを
解析する
(有)シンビー
自己紹介
? 鈴木量三朗
月刊誌に連載中!!
ゴール:例1
backhand
Youtube から
ゴール:例2
service
return
Youtube から
ゴール:例3
Double hand
謝淑薇(シェイ?スーウェイ)
実は両手打ちのフォア Youtube から
NN ってなんでしょう?
そもそも NN って何?
…
…
…
0の確率
3の確率
8の確率
9の確率
……手書き
文字
Network
結果は
確率
パーセプトロン
1
?1
?2
? ?
h( )
?
?1
?2
? = ? + ?1?1 + ?2?2
? = ?(?)
典型的なh は
シグモイド関数
? ? =
1
1 + exp ??
重み
バイアス
入力データ
出力データ
シグモイド関数
? ? =
1
1 + exp ??
実際の計算
1
?1
?2
? ?
h( )
?
?1
?2
1.0
0.1
0.5
0.1
0.2
0.45 0.610639234
浮動小数点
どこまで精度
が必要かは
不明
研究者の皆さんどうしているのか?
TensorFlow 等で
ネットワーク設計
データを用意して、
レンタルサーバで
計算
検証
できたネットワーク+パラメタ
Cのソース生成
コンパイルして自分の
PCやサーバで実行
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
Tinier YOLO
Xilinx の資料から
NN のデモ
? MNIST
– 手書き数字認識
? Cifar10
– 画像を10種類に分類するデモ
? YOLO
– 画像から物体認識(Object Detection)
? Dorefanet
– 画像の分類(Classfication)
CNN と YOLO
CNN って何?
CNN では畳み込み処理をする
0.1 0.2 0.3
0.4 0.5 0.6
0.7 0.8 0.9
重みパラメタ
畳み込み処理
畳み込み処理(画像処理)
BNN(*1) の MNIST
BNN の MNIST
情報がフラット
画像としての縦横を
放棄(?)
*1 あくまで Xilinx が提供している BNN の
MNIST の話。CNN の MNIST もある。
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
重み
バイアス
パーセプトロン(再掲)
1
?1
?2
? ?
h( )
?
?1
?2
? = ? + ?1?1 + ?2?2
? = ?(?)
典型的なh は
シグモイド関数
? ? =
1
1 + exp ??
重み
バイアス
入力データ
出力データ
YOLO の一部
任意の画像(例:768x576)
416x416 に正規化された画像
1) 入力画像の各画素を浮動小
数点数に正規化
2) numpy 用に重みとバイアスを変形
重み バイアス
3) numpy の matmul を使って計算
0.123456789
0.012345678
0.345689088
0.457898989
0101010110
1110010000
1110001010
0010110101
4) 3bit の情報に変換
Tinier YOLO
10層 = Deep じゃない CNN
YOLO v3
Ayoosh Kathuria さんの towardsdatascience.com 記事から
結果
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%
何をしたか?
> 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
Darknet
? NN 用のフレームワーク
– YOLO はその一部
? 簡単にオレオレ NN 作成可能
– 分かった気になれる(危険!)
? 数式をたどろう!
? 論文読もう
? ソースを読もう
? 意味を考えよう
データが問題。
学習はどうする?
誰かの作った
ありもので
いけたりする
惭狈滨厂罢再考
手書き認識(SHARP製)
1996?
2008?手書き認識自体は目新しい技術ではない
MNIST with FPGA
4 と 9 を間違えてい
る
LeNet-5
どっかのパーセプトロンで
4と9の区別がついてない
ホットポイント(?) があるはず
LeNet-5
複製して再学習
再学習
9
4
4と9が分離可能?
(アイデアだけ)
YOLO の重みパラメタ
分布を見てみた
0
対数的に見てみた
もうすこし統計学的な表現はないのでしょうか?
アドバイスください。
データ表現に浮動小数点数は必須?
Wikipedia より
Google は bloat16
Wikipedia より
Google I/O ‘18の資料より
Wikipedia より
精度はいらない?
Exponent が重要?
分布もそれを示唆?
とりたいアプローチ
? 統計学(的)
? 人間の感覚を信用しない
? 既存のフレームワークをうまく使う
– 使うだけにはしたくない
テニスの动画に応用
まずはプレイヤー特定
Youtube から
誤認識しないように
Youtube から
サーブ/リターンは難しい?
service
return
Youtube から
ボールも難しい?
backhand
Youtube から
目標
? 静止画からプレイヤーを特定する
? 動画からプレイヤーを特定する
? 動画からボールを特定する
? 動画からプレイ内容/ポイント状況を特定する
? 動画から優劣を特定(将棋に迫れるか?)

More Related Content

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