14
1 高位合成ツール Vivado HLS OpenCV 対応 marseeこと小野 雅晃

高位合成ツールVivado hlsのopen cv対応

Embed Size (px)

Citation preview

Page 1: 高位合成ツールVivado hlsのopen cv対応

1

高位合成ツール Vivado HLS の OpenCV 対応

marseeこと小野 雅晃

Page 2: 高位合成ツールVivado hlsのopen cv対応

2

自己紹介

● 11 年前から「 FPGA の部屋」のブログを書いています– http://marsee101.blog19.fc2.com/

● FPGA やそのツール、日記も書いています● 爺さんなので早起きです

– 午前 3時か 4時ころ起きてブログを書いています

Page 3: 高位合成ツールVivado hlsのopen cv対応

3

FPGA

● Field Programmable Gate Array の略● ロジックを書き込むといろいろな機能が実現できる IC

● マイクロソフトはどうやってBingをFPGAで実装したか

● AWS で FPGA 利用可能インスタンスが登場● 機械学習/Deep Learningの仕事が増える201

7年、ソフトウェアエンジニアがFPGAを学ぶべき理由

Page 4: 高位合成ツールVivado hlsのopen cv対応

4

FPGA の設計方法

● 回路図

● HDL (ハードウェア記述言語)– Verilog HDL– VHDL– SystemVerilog

● 高位合成ツール( HDL を生成する)– C( Vivado HLS)– Java( Synthesijer)– Python( PyCoRAM、 Polyphony)

Page 5: 高位合成ツールVivado hlsのopen cv対応

5

Xilinx 社( FPGA のメーカー)の FPGA 用ツール

● Vivado , Vivado HLS– Vivado

● HDLやブロックデザイン(図)を使って FPGAをデザイン

– Vivado HLS● C, C++, System Cを使って IPを作る

● SDx– SDSoC

● ARM+FPGA(Zynq)チップを使ってC, C++からハードウェアやアプリケーションを自動生成する

– SDAccel● OpenCLが使える。大規模システム

Page 6: 高位合成ツールVivado hlsのopen cv対応

6

Vivado HLS について

● C, C++ で書くと HDL に変換され IP 化(無料、ただしデバイス限定)

● pragma で動作やインターフェースなどを指定する必要がある● 今のところ、ハードウェアを知らないと性能が出ない● 合成済みライブラリ

– hls_mathライブラリ( atan, sin, cos, log, log10, sqrt など)– HLSビデオライブラリ(OpenCVの一部をサポート)– FFTや FIR、線形代数ライブラリ( cholesky)– HLS DSPライブラリ( SDRアプリケーション)

Page 7: 高位合成ツールVivado hlsのopen cv対応

7

Vivado HLS の OpenCV 対応ライブラリ関数

AXIvideo2cvMat AXIvideo2CvMat AXIvideo2IplImage cvMat2AXIvideo CvMat2AXIvideocvMat2hlsMat CvMat2hlsMat CvMat2hlsWindow hlsMat2cvMat hlsMat2CvMathlsMat2IplImage hlsWindow2CvMat IplImage2AXIvideo IplImage2hlsMat

AXIvideo2Mat Mat2AXIvideo Array2Mat Array2Matビデオプロセッシング

AbsDiff AddWeighted And Avg AvgSdvCmp CmpS CornerHarris CvtColor DilateDuplicate EqualizeHist Erode FASTX Filter2DGaussianBlur Harris HoughLines2 Integral InitUndistortRectifyMapMax MaxS Mean Merge MinMinMaxLoc MinS Mul Not PaintMaskPyrDown PyrUp Range Remap ReduceResize Set Scale Sobel SplitSubRS SubS Sum Threshold Zero

OpenCVインタフェース

AXIインターフェース

「Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2016.4) 2016 年 11 月 30 日」参照https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2016_4/ug902-vivado-high-level-synthesis.pdf

Page 8: 高位合成ツールVivado hlsのopen cv対応

8

OpenCV ライブラリ使用例( FASTX コーナー検出)

● Vivado HLS で作成した FASTX コーナー検出 IP を使用● カメラからの画像をリアルタイムに FASTX コーナー検

出● カメラ・インターフェース IP からの AXI4-Stream

● FASTX コーナー検出 IP

● ビットマップ・ディスプレイ・コントローラ IP

Page 9: 高位合成ツールVivado hlsのopen cv対応

9

Vivado HLS 画面

Page 10: 高位合成ツールVivado hlsのopen cv対応

10

Vivao IP Integrator 画面 1

Page 11: 高位合成ツールVivado hlsのopen cv対応

11

Vivao IP Integrator 画面 2

Page 12: 高位合成ツールVivado hlsのopen cv対応

12

ハードを動かすアプリケーションソフト( SDK )

Page 13: 高位合成ツールVivado hlsのopen cv対応

13

関連する「 FPGA の部屋」のブログ記事

● FASTX コーナー検出による物体の形状検出2 ( Vivado HLS 2016.4 プロジェクト)– http://marsee101.blog19.fc2.com/blog-entry-3710.html

● FASTX コーナー検出による物体の形状検出1 ( Vivado 2016.4 プロジェクト)– http://marsee101.blog19.fc2.com/blog-entry-3709.html

● OpenCV カテゴリ– http://marsee101.blog19.fc2.com/blog-category-113.htm

l

Page 14: 高位合成ツールVivado hlsのopen cv対応

14

FASTX コーナー検出のデモ

● カメラの画像をリアルタイムで FASTX コーナー検出するデモを行います

threshold = 5 threshold = 10 threshold = 20