Upload
natsutani-minoru
View
928
Download
0
Embed Size (px)
Citation preview
動き検出の SW実装とHW実装について
2016/8/24
株式会社パソナテックエンジニアリング事業部
夏谷
1
Imagination, Action,
and to the Creation!
前回までのあらすじ
2
FPGAX高位合成友の会
GDG神戸 FPGAX
俺俺処理系MYHDL
FPGAと HPC動き検出と最小二乗法俺俺処理系MYHDL
動き検出と最小二乗法
アジェンダ
自己紹介 FPGAを使った HPCの話
OCT/DCIについて(脱線) 動き検出の SW、 HW実装の話 動き検出と neural network 高位合成ツールネタ 会社の紹介
3
自己紹介
夏谷実 株式会社パソナテック
株式会社パソナテック エンジニアリング事業部 エンジニアマネージメントグループ
最近は半導体関連の仕事が多い FPGAが好き プログラミングも好き Deep Learningも好き ←New!
4
パソナテック公認キャラ
自己紹介
5
自己紹介
今日はアルゴリズムの HW化の話をします。 去年の GDG神戸のイベントの発表内容を加筆修正しています。
FPGAに関しては現役から遠ざかってますので、必ず最新のデータシート、ユーザーズガイドを確認してください。
少しだけ Deep Learningの話もします
6
7
FPGAを使った HPCの話
HPCに FPGAを使う話
8
メリット デメリット
速い
・システムが高価・消費電力
・物理的な大きさ・開発に時間がかかる・デバッグがやりにくい・データの移動が面倒・開発環境が有料
・正しく使わないと壊れる・壊れたときのリカバリが
高価
HPCに FPGAを使う話
9
省略
OCT/DCIについて(脱線)
10
省略
FPGAと HPC
HW化の意味がなくなる 専用のハードウェアはどこまでの処理速度向上を目指すのか?
対パソコンであれば 1000倍は 1つの目標 10倍程度はアルゴリズムですぐ追いつかれる 10倍程度は何もしなくても速くなる
CPU メモリ コンパイラ ライブラリ
11
顔認識の処理速度向上の例
12
Haar-like
Join Haar-like
必要なデータ量が1/9(2008)
Integral Image
画像サイズに依存せず 4回のアクセスで必要な計算が完了する。(2001)Granular Space
4回が 1回のアクセスに(2006)
スパース最適化
Lasso (1996)
Elastic NetAdaptive LassoDantizig SelectorLAD-Lasso(2005-2007)
2005年~ 2008年の 3年間で、 10倍以上高速化注目される分野ではこういうことが起こりえる。
10倍程度の高速化を目標として HW化を進めるのはリスクがある。
ET WEST 2015 TS-02実世界で活躍する画像認識技術 より
FPGAと HPC
13
動き検出の SW、 HW実装の話
動き検出の話
14
・動き検出に関する業務をソフトウェア、ハードウェアの両方で経験あり。・動き検出自体が HWする価値のあるアルゴリズム・登場する数式が機械学習にでてくる数式と共通点がある
動き検出とは
15
動き検出とは
時刻t
画像のブロックが、時間と共にどちらへどれくらい動いたのかを検出する処理。検出結果は動きベクトルと呼ばれる。
16
動き検出とは
画像の一部分を抜き出し、次の画像と最も一致する場所を探す。ある物体が 1フレームの間に 2 ピクセル右に行ったとしたら、右に 2 ピクセルずらしたところと画像が一致するはず。
評価関数として SAD、 SSDが使われる。どちらも 0なら画像は完全に一致している。SAD(Sum of Absolute Difference):各画素の差分の絶対値の和。SSD(Sum of Squared Difference):各画素の差分の二乗和
動き検出という点ではあまり精度に差がないこと、計算量が少ないことより SADが使われることが多い。統計学的には SSDの方が最小二乗和を求めているのでSSDが好まれるときもある。
E (𝑤 )=12∑‖𝑑𝑛− 𝑦 (𝑥)‖2Deep learning の誤差関数と同じ
動き検出の難しいところ
17
① 原理的に検出できない図形がある
② そもそも動いている画像ではない
SADが最小となる場所が複数存在する
SADが最小となる場所がそもそも存在しない。
ピントがぼけることで、同じような状況に陥る事がある。
とある動き検出エンジニアの日常
18
デバッグ中にトイレに行く
トイレの壁がタイル
orz 動き検出が失敗する模様で絶望する
動き検出エンジニアの職業病
動き検出の実装方法
19
勾配法・共役勾配法・勾配降下法・確率的勾配降下法・ニュートン法傾きを元に反復計算を行い、 SSDが最小となる場所を探す。
全探索法?一画素ずつずらして全領域でのSADを計算する。
動き検出の実装方法
20
ソフトウェア実装
ハードウェア実装
② 荒い検索
① 勾配法 ③ 全探索法(ピクセル単位)
④サブピクセル計算
Layer1
Layer2
Layer3
勾配法
21
ある初期値を与え、その場所の傾きから次の場所を選ぶ事を繰り返すことで、 SSDの最小値を求める。ポテンシャルが一番低い所へ移動していくので、反復計算を降下( descent)と表現する。
Ex:確率的勾配降下法 (stochastic gradient descent)
勾配法には明確な欠点がある
欠点 1 :局所解に陥る欠点 2 :何回反復すればよいのか分からない欠点 3: 解が発散する
動き検出の場合は 2 次元
勾配法
22
欠点1:初期値を間違えると、局所解を求めてしまう。1回の試行では局所解に陥ったかどうかが判定できない。
初期値が大事。初期値が良ければ 2~ 3回で収束するケースが多い。
良い初期値を得るために、「荒い検索」を利用する。(後で)
ここを最小値と判定 本当はこっちが最小値
初期値を変えると上手く行く
局所解に陥っているかどうかが判断できない
勾配法
23
欠点 2 :反復回数の計算が読めない。
運が良いと 3回、運がわるいと数十回の反復が必要。
入力データと初期値に依存し、汎用的な終了の判定方法が無い。
回数を増やしたり、初期値を変えると上手く行くときがある。
動き検出の特性として、そもそも最適な解が存在しない可能性がある
勾配法
24
欠点 3 :解が発散する。
検索範囲の端に向かって全力で移動してしまう。
→検出は簡単にできるので、局所解よりは扱いがらく
初期値を変えると上手く行くときがある。
動き検出の特性として、そもそも最適な解が存在しない可能性がある
動き検出の実装方法
25
ソフトウェア実装
ハードウェア実装
② 荒い検索
① 勾配法 ③ 全探索法(ピクセル単位)
④サブピクセル計算
Layer1
Layer2
Layer3
初期値が全て!
荒い検索
26
縮小画像での動き検出 Coarse-to-fine search、画像ピラミッド
前回の動き検出の結果を使う 周辺の信頼できる動きベクトルを使う
動き検出できる
動き検出できない動き検出できる
荒い検索を使っておおまかな動きベクトルを先に計算しておく・ SW実装(勾配法)の場合は、その値が初期値の候補になる・ HW実装(全探索)の場合はそのまま検索範囲の原点とする実装が多い → HW実装の場合、特定の領域を取り出すのが面倒
動き検出の実装方法
27
ソフトウェア実装
ハードウェア実装
② 荒い検索
① 勾配法 ③ 全探索法(ピクセル単位)
④サブピクセル計算
Layer1
Layer2
Layer3
全探索法
28
検索範囲
動きを求めたい画像
検索範囲の全ての領域に対して SADを計算し、最小の座標を求める。
検索の原点は (0,0)、もしくは荒い検索の結果
全探索法
29
欠点 1 :局所解に陥る →全探索なので、全体で一番小さいところを検出できる欠点 2 :何回反復すればよいのか分からない →反復しないので計算量は一定欠点 3: 解が発散する →全探索なので、全体で一番小さいところを検出できる
勾配法の欠点を全てクリアー
全探索法
30
① 各画素について差の絶対値を計算する。
Sub+abs
② 縦方向に加算 ③ 横方向に加算して SADを求める
SAD
検索窓(左上)
対象ブロック
全探索法
31
① 各画素について差の絶対値を計算する。
Sub+abs
② 縦方向に加算 ③ 横方向に加算して SADを求める
SAD
検索窓(左上から一つ右)
全探索法
32
sub abs
add
add
Input_a (0,0)
Input_b (0,0)
Input_a (4,0)
Input_b (4,0) sub abs
Input_a (4,4)
Input_b (4,4) sub abs
add
add
add
add
SAD
ここで区切ってパイプライン化
全探索法
33
abss1
s2
sw
sumabs sum
・・・s3
abs sum
SADSAD
SAD
abs 画素の差分と絶対値の計算
sum 縦方向の和を求める加算
SAD SADを求める加算
abs sum SAD
検索幅+ 2clkで横方向の SADが全て計算できる。
パイプラインを作ろう
だけ見ると 1clkで一つ SADの計算が終わる
SAD
全探索法
34
このデータであれば、左端から 2画素いった所で SADが 0になる。
有効な SADが計算されてから、 2CLK 後に SADが出力される。
対象ブロックが 3x3なので、差分と絶対値を取る回路は 9 個並ぶ
全探索法
35
さきほどの計算自体を N 並列に実行可能
検索範囲 検索範囲
1行ずらしで並列化が正解
検索範囲を N 等分するのは駄目
動き検出の実装方法
36
ソフトウェア実装
ハードウェア実装
② 荒い検索
① 勾配法 ③ 全探索法(ピクセル単位)
④サブピクセル検索
Layer1
Layer2
Layer3
サブピクセル検索
37
http://www.sic.shibaura-it.ac.jp/~yaoki/hikarizou/hikarizou2.pdf
動き検出の実装方法(まとめ)
38
勾配法・共役勾配法・勾配降下法・確率的勾配降下法・ニュートン法傾きを元に反復計算を行い、 SSDが最小となる場所を探す。
全探索法一画素ずつずらして全領域でのSADを計算する。
速い!
HW化で速度を出すには、アルゴリズムの実装方法から変えないと速くならない。並列化しやすく、固定小数点数(整数)で処理ができるアルゴリズムが良い。
動き検出と neural network
39
動き検出と neural network
動き検出と neural network
40
京都で立ち上げた AI専門のベンチャー
若いエンジニア(研究者)とお話したらすごく良く分かった
最初の疑問
41
入力層
教科書の最初画像を 1 次元のベクトルにして入力層へ
入力層
3x3
僕の疑問画像は上下左右に相関を持ってるから、ある大きさのブロックで入力層に入れたほうがよいはず
最初の疑問
42
それって CNN ( Convolutional Neural Network)の入り口
input
convolution
pooling
convolution
LCN
pooling
convolution
Fully-connected
Fully-connected
softmax
output
深層学習 図6.3
最初の疑問
43
CNNの説明で出てくるこの動きは!?
最初の疑問
各社様が CNNを FPGA実装 Altera Xilinx Microsoft Nallatech デンソー
44
次の疑問
45
ImageNet Classification with Deep Convolutional Neural Networks https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
Figure4
Figure3
なぜこんなにばらけるのか?
次の疑問
46
眼鏡っ娘画像何も考えずに学習させたら、同じ所ばっかりに注目するはず。なぜばらけるのか?
全ニューロンが眼鏡に注目
次の疑問
47
深層学習 p63
それってスパース正則化ってトリックを使ってます
入力 xから中間層の出力 yを経て出力 x(^)が計算される過程において、 yの各ユニットのうち、なるべく少数のユニットのみが 0でない出力を取り、残りは出力が 0( =活性化しない)となるような制約を追加します。
→ 行列の中の 0の項を増やして疎行列に近づける。一つ一つのニューロンが特徴を捉えるようになる。
専門家に疑問をぶつけるの大事
次の疑問
48
自分でまとめてみるのも大事><
図 5.11
動き検出と neural network
49
閑話休題
動き検出と neural network
50
動き検出 NN
求めるパラメータ 動きベクトル v ニューロンの重み w
パラメータの数 2 つ ニューロンの数入力画像 2 枚 数百~数万パラメータの取る範囲
検索範囲 不明必要な精度 次の処理に依存
例えば 1/32 画素程度
不明
オーバーフィッティング
無し 有りの部分は、実際に動かせば絞り込める
動き検出と neural network
例えば、ある NNの極一部だけを、少数の入力データ(画像データ)で更新したい場合。
51
input
convolution
pooling
convolution
LCN
pooling
convolution
Fully-connected
Fully-connected
softmax
output
ここだけを、変えたい
動き検出と neural network
52
http://cs231n.stanford.edu/slides/winter1516_lecture11.pdf
それって転移学習では
動き検出と neural network
53
http://cs231n.stanford.edu/slides/winter1516_lecture11.pdf
・入力画像に近いところは汎用的・出力に近いところは、認識に特化 Deep Learning for NLP (without Magic)
Richard Socher, Yoshua Bengio and Chris Manning ACL 2012
動き検出と neural network
54
秒単位で学習結果を変えないといけないシステム
時間で形が変化するものを、変化に合わせて学習しなおすことで、トラッキングするシステム
動き検出と neural network 秒単位で学習結果を大胆に変えないといけないシステム
55
By いらすとやリアルタイムな鳥の固体認識とか
MyHDLの紹介
56
高位合成ツールネタ
MyHDLの紹介
57
省略
高位合成ツールへの期待
58
Ruby on Rails みたいなTensorflow on ○○○○ をみんなでつくりた
い
最後
59
会社の紹介
機械学習に関するパソナテックのサービス
60
①大量のデータに関する業務 ・データ収集 ・データ入力 ・データタグづけ、不正データ除去 Job-Hub事業部
大阪支社
他部署と連携し、大量データを安価にご提供します。セキュリティ面もご相談ください。
②機械学習に関する業務 ・学習環境の構築 ・学習器の設計、評価 ・パラメータ調整
お客様の目的に沿ったビジネスパートナーをご紹介します。
③ 商品化への業務 ・組込プログラミング ・機械設計
専門スキルを持った人材をご提供いたします。委託契約、派遣契約どちらも可能です。
機械学習に関する業務に関して、どの工程でも必要なサービスをご提供致します。
Deep Leaningも対応致します。
株式会社パソナテックの取り組み
61
イベント通知 なにわテック道【 8 月】日程: 8/27(土) 14時~ 17時(受付 13時半~)☆ 2 週連続!秋のテック祭 『はじめての Deep Learning 』
【 9 月】日程: 9/3(土)内容:☆ 2 週連続☆秋の TECH 祭☆ Deep Learning、 Java、ブロックチェーン 最新技術が集結!
詳しくはパソナテック HPで
最後に
62
ご清聴ありがとうございました。