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.

なにわTech20160827

1,768 views

Published on

パソナテック主催のなにわテック(2016/8/27)で発表した資料です。
直前のFPGAXと同じ内容です。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

なにわTech20160827

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

×