PPT - 首都大学東京

Download Report

Transcript PPT - 首都大学東京

動画像処理システムに向けた
並列処理プロセッサの最適化
数理情報科学専攻
福永研究室
齋藤 健司
研究背景
• 動画像処理を用いたシステム
– 電動車いすに搭載したビデオカメラとプロセッサにより
危険をリアルタイムに認識(目標は2fps)
– 当研究室開発並列プロセッサ
「TPCORE」を利用
※東京都産業労働局による 「都市課題解決のための技術戦略プログラム」に採択されている
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
2
研究背景-動画像処理システム• 左右画像の対応情報により路面以外の危険を認識
L
R
1.フレーム取得(左・右)
2.特徴点フィルタ(左・右)
マッチング
3.マッチング(左右の対応情報の取得)
4.対応点情報により右画像を変換
5.変換された画像と左画像を比較
変換作成・実行
6.ノイズを減らし
危険(障害物・段差)を判定
1.へ(次フレーム取得)
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
3
研究背景-TPCOREの特徴• 並列処理言語Occamが実行可能
– 言語的に並列性を持つため自由な並列化が可能
• 動作周波数は25MHz
– 今までは高速処理システムが目的ではなかったため
高速ではない
• FPGA(Field Programmable Gate Array)上に
実装される
– 目的に合わせ柔軟なハードウェアの仕様変更が可能
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
4
本研究の動機
• TPCOREによる画像処理ソフトの動作検証
⇒処理時間に問題!
処理内容
処理に要した時間(秒)
フレーム取得
0.046
フィルタ
12.41
弱パターン除去
4.81
対応点マッチング
変換作成 / 実行
27.37
0.018
/
12.97
比較
2.49
危険判定処理
2.07
システム全体
62.14
※時間は単体TPCOREにより、並列化を行わず1フレーム分検証したもの
処理を高速に行うため、
ソフトウェア処理からハードウェア処理に
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
5
本研究で行ったこと
• 一部処理の専用回路化
• 専用回路へのアクセスインタフェース
の実装
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
6
ハードウェア化の意義
• ソフトウェア実行の問題
– 命令実行数が多い(命令拡張など)
– TPCOREは命令のパイプライン実行、プリ
フェッチ、キャッシュなどの機構がない
• 画像処理に対する強み
– 画像処理は全ピクセルに対する同一計算など、
単純な処理を繰り返すものが多い
• FPGAの利用
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
7
ハードウェア化の例-対応点マッチング部• SAD(Sum of Absolute Differences)法の回路化
– 2画像間のマッチングに使用される方法
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
8
ハードウェア化の例-対応点マッチング部• SAD(Sum of Absolute Differences)法の回路化
– 2画像間のマッチングに使用される方法
– 画像をブロック単位に分割し、比較するブロック内の
画素の輝度差の絶対値の合計(SAD値)が小さいも
のを一致とみなす手法
B2
1 2
B1
1 2
16
SAD 
16
16
 |B
1
(i)  B 2 (i) |
i 1
– 対応点を求める各点に対しこの計算を繰り返し、対応
点探索を行う
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
9
ハードウェア化の例-対応点マッチング部• SAD(Sum of Absolute Differences)法の回路化
– ソフトウェア記述(Occam)
SAD := 0
SEQ i = 1 FOR 16
SAD := SAD + Abs(B1[i]–B2[i])
B2
1 2
B1
1 2
16
SAD 
16
16
 |B
1
(i)  B 2 (i) |
i 1
– 計測したところ、一回の計算に
約2000サイクル(80マイクロ秒)かかっていた
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
10
ハードウェア化の例-対応点マッチング部• SAD(Sum of Absolute Differences)法の回路化
16
SAD 
1 2
16
1
1
2
2
Sub
 |B
1
(i)  B 2 (i) |
i 1
Abs
Add
Sub
Abs
Add
Add
1 2
Add
・
・
・
16
15
15
16
16
Sub
SAD result data
Abs
Add
Sub
Abs
– 縦列が並列に行われ、6サイクル(240ナノ秒)で計算可能
(今回は動作周波数に余裕があったため組み合わせ回路で構成し、1サイクルで行う)
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
11
ハードウェア化の例-対応点マッチング部• マッチング回路
– これを利用した対応点計算をブロック1行分(画像4行分)
に対し行うよう実装
input
4lines
マッチング
回路
output
「一行分の対応ブロック情報(位置/一致度)」
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
12
アクセスインタフェースspc_ifの開発
• special purpose circuit I/F の略
• 機能
– 作成した専用回路に対するデータ入力、
結果取得を行う
– 専用回路の選択実行
フィルタ回路
TPCORE
spc_if
マッチング回路
・
・
・
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
13
アクセスインタフェースspc_ifの開発
• アクセスの方法
⇒TPCOREの命令「move」を利用
– 1命令で多量データのメモリ間の高速コピーを行う
– ソフトウェア的に記述可能
通常のデータコピー
SEQ i=0 FOR SIZE
ARRAY1[i] := ARRAY2[i]
moveの指定(配列コピー)
ARRAY1 := ARRAY2
– 前年度[2011,唐木]の外部メモリアクセス方法になら
い、指定アドレスを扱うmoveを使用
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
14
アクセスインタフェースspc_ifの開発
• アクセスの方法
⇒TPCOREの命令「move」を利用
[ソフトウェア記述]
[ハードウェア実装]
PLACE文を使用し、
配列コピーによりmove実行
指定アドレスに対するmoveを
分岐させる.
[SIZE]INT TPDATA:
[SIZE]INT SPCDATA:
PLACE SPCDATA AT SPCADDR:
SEQ
~
--move実行(tp→spc)
SPCDATA := TPDATA
--move実行(spc→tp)
TPGET := SPCDATA
2013/1/30
TPCORE
data bus
& addr bus
addr:SPCADDR
spc_if
TPRAM
さらに、
(TPのメモリ)
首都大学東京, 修士論文発表会 -齋藤健司-
move開始時の指定アドレスにより
専用回路を選択するように構築
15
アクセスインタフェースspc_ifの開発
• 「move」による動作イメージ
①.入力
データを専用回路のメモリ領域にコピーすると
専用回路がそのデータに対する処理を行う
→入力用一時バッファ(InLineBuf)を用意し、
moveが終了した時に回路が実行されるように
した
InLineBuf
専用回路
TPCORE
※InLineBufは画像データを2次元的に読むことができるようになっている
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
16
アクセスインタフェースspc_ifの開発
• 「move」による動作イメージ
②.出力
専用回路のメモリ領域から、専用回路の出力
結果データを「いつでも」取得可能
→出力バッファ(OutBuf)を用意し、結果データを
保持させた
OutBuf
専用回路
TPCORE
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
17
spc_ifの動作イメージ
• 入力
--move実行(tp→spc)
SPCDATA := TPDATA
↑addr:SPC2ADDR
Input LineBuffer
SPC1
TPCORE
SPC2
data bus
& addr bus
SPC2ADDR
spc_Ctrl
SPC3
Output Buffer
DATA
TPRAM
(TPのメモリ)
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
18
spc_ifの動作イメージ
• 専用回路実行中
(TPCOREは別の処理を行うことが可能)
↑addr:SPC2ADDR
Input LineBuffer
DATA
TPCORE
SPC1
SPC2
DATA
data bus
& addr bus
spc_Ctrl
SPC3
Output Buffer
TPRAM
(TPのメモリ)
2013/1/30
SPC2ADDR
首都大学東京, 修士論文発表会 -齋藤健司-
19
spc_ifの動作イメージ
• 取得
--move実行(tp→spc)
TPGET := SPCDATA
↑addr:SPC2ADDR
Input LineBuffer
SPC1
TPCORE
SPC2
data bus
& addr bus
SPC2ADDR
spc_Ctrl
SPC3
Output Buffer
TPRAM
(TPのメモリ)
2013/1/30
DATA
SPC2ADDR
首都大学東京, 修士論文発表会 -齋藤健司-
20
検証
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
21
検証:spc_if
• 3つのテスト用回路の選択実行テスト
• テスト回路
– データ列の入力⇒それぞれ1,2,3を加え出力
[20]BYTE TEST0:
[20]BYTE TEST1:
[20]BYTE TEST2:
PLACE TEST0 AT SPCADDR0: -- 1を足す回路
PLACE TEST1 AT SPCADDR1: -- 2を足す回路
PLACE TEST2 AT SPCADDR2: -- 3を足す回路
SEQ
--各テスト回路に入力、結果取得
TEST0 := temp
res := TEST0
TEST1 := temp
~
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
22
検証:spc_if
• 3つのテスト用回路の選択実行テスト
• テスト回路
– データ列の入力⇒それぞれ1,2,3を加え出力
+1
+2
+3
データの選択送信、結果取得ともに確認できた
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
23
検証:回路化による高速化
• ソフトウェアによる比較計測
– TPCOREのタイマーを利用
– 同じ処理をするOccamプログラムと結果および実行時
間を比較(表は作成した回路の単位実行時間)
処理内容
フィルタ回路
マッチング回路
画像比較回路
危険判定回路
ソフト実行時間
(単位:ミリ秒)
ハード実行時間
(単位:ミリ秒)
高速化率
11215.2
136.8
81.98 倍
791805.6
1320
599.85 倍
4262.4
53.6
大幅な高速化が
16168.8
82.4
確認できた!
79.52 倍
196.22 倍
※他の部分もマッチング部同様の高速化を図ればさらに高速化が見込まれる
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
24
まとめ
• spc_ifの開発
– FPGA上に開発した専用回路がTPCOREから
利用可能に
• 画像処理用の一部の回路の開発
– 正常動作の確認、該当処理の大幅な高速化を
簡単に確認
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
25
今後の展望
• 高速化率の詳細な検証
– move実効時間の検討
– TPCORE側の回路入力データ準備の時間検討
• 回路化できていない処理の回路実装
• 回路作成法の検討
– 組み合わせ回路の利用
→システム全体で2fpsの処理速度を目指す
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
26
終わりです
~ご清聴ありがとうございました~
2013/1/30
首都大学東京, 修士論文発表会 -齋藤健司-
27