SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
1
高位合成ツール Vivado HLS の OpenCV 対応
marseeこと小野 雅晃
2
自己紹介
●
●
● 11 年前から「 FPGA の部屋」のブログを書いています
– http://marsee101.blog19.fc2.com/
● FPGA やそのツール、日記も書いています
● 爺さんなので早起きです
– 午前 3 時か 4 時ころ起きてブログを書いています
3
FPGA
● Field Programmable Gate Array の略
● ロジックを書き込むといろいろな機能が実現できる IC
● マイクロソフトはどうやってBingをFPGAで実装した
か
● AWS で FPGA 利用可能インスタンスが登場
● 機械学習/Deep Learningの仕事が増える201
7年、ソフトウェアエンジニアがFPGAを学ぶべき理由
4
FPGA の設計方法
● 回路図
● HDL (ハードウェア記述言語)
– Verilog HDL
– VHDL
– SystemVerilog
● 高位合成ツール( HDL を生成する)
– C ( Vivado HLS )
– Java ( Synthesijer )
– Python ( PyCoRAM 、 Polyphony )
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 が使える。大規模システム
6
Vivado HLS について
● C, C++ で書くと HDL に変換され IP 化(無料、ただしデバイス
限定)
● pragma で動作やインターフェースなどを指定する必要がある
● 今のところ、ハードウェアを知らないと性能が出ない
● 合成済みライブラリ
– hls_math ライブラリ( atan, sin, cos, log, log10, sqrt など)
– HLS ビデオライブラリ( OpenCV の一部をサポート)
– FFT や FIR 、線形代数ライブラリ( cholesky)
– HLS DSP ライブラリ( SDR アプリケーション)
7
Vivado HLS の OpenCV 対応ライブラリ関数
AXIvideo2cvMat AXIvideo2CvMat AXIvideo2IplImage cvMat2AXIvideo CvMat2AXIvideo
cvMat2hlsMat CvMat2hlsMat CvMat2hlsWindow hlsMat2cvMat hlsMat2CvMat
hlsMat2IplImage hlsWindow2CvMat IplImage2AXIvideo IplImage2hlsMat
AXIvideo2Mat Mat2AXIvideo Array2Mat Array2Mat
ビデオプロセッシング
AbsDiff AddWeighted And Avg AvgSdv
Cmp CmpS CornerHarris CvtColor Dilate
Duplicate EqualizeHist Erode FASTX Filter2D
GaussianBlur Harris HoughLines2 Integral InitUndistortRectifyMap
Max MaxS Mean Merge Min
MinMaxLoc MinS Mul Not PaintMask
PyrDown PyrUp Range Remap Reduce
Resize Set Scale Sobel Split
SubRS 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-hig
h-level-synthesis.pdf
8
OpenCV ライブラリ使用例
( FASTX コーナー検出)
● Vivado HLS で作成した FASTX コーナー検出 IP を使用
● カメラからの画像をリアルタイムに FASTX コーナー検
出
● カメラ・インターフェース IP からの AXI4-Stream
● FASTX コーナー検出 IP
● ビットマップ・ディスプレイ・コントローラ IP
9
Vivado HLS 画面
10
Vivao IP Integrator 画面 1
11
Vivao IP Integrator 画面 2
12
ハードを動かすアプリケーションソフト( SDK )
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
14
FASTX コーナー検出のデモ
● カメラの画像をリアルタイムで FASTX コーナー検出す
るデモを行います
threshold = 5 threshold = 10 threshold = 20

Weitere ähnliche Inhalte

Was ist angesagt?

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
 

Was ist angesagt? (20)

Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
第9回ACRiウェビナー_セック/岩渕様ご講演資料
第9回ACRiウェビナー_セック/岩渕様ご講演資料第9回ACRiウェビナー_セック/岩渕様ご講演資料
第9回ACRiウェビナー_セック/岩渕様ご講演資料
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
 
高位合成でDeep learning
高位合成でDeep learning高位合成でDeep learning
高位合成でDeep learning
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 

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

関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
Ken'ichi Sakiyama
 
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
mitamex4u
 

Ähnlich wie 高位合成ツールVivado hlsのopen cv対応 (20)

Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
SDSoC でストリーム
SDSoC でストリームSDSoC でストリーム
SDSoC でストリーム
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
 
NodeFest2014 - Transpiler
NodeFest2014 - TranspilerNodeFest2014 - Transpiler
NodeFest2014 - Transpiler
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
Myoshimi extreme
Myoshimi extremeMyoshimi extreme
Myoshimi extreme
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 

Mehr von marsee101

Mehr von marsee101 (15)

Robot car gabor_filter
Robot car gabor_filterRobot car gabor_filter
Robot car gabor_filter
 
Ultra96 pmod expansion board
Ultra96 pmod expansion boardUltra96 pmod expansion board
Ultra96 pmod expansion board
 
Camera input from_ultra_96's_slow_expansion_connector
Camera input from_ultra_96's_slow_expansion_connectorCamera input from_ultra_96's_slow_expansion_connector
Camera input from_ultra_96's_slow_expansion_connector
 
Fpga robot car
Fpga robot carFpga robot car
Fpga robot car
 
FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
 
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
 
FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介
 
MPSoCのPLの性能について
MPSoCのPLの性能についてMPSoCのPLの性能について
MPSoCのPLの性能について
 
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
 
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
 
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
 
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
 
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
 

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

  • 1. 1 高位合成ツール Vivado HLS の OpenCV 対応 marseeこと小野 雅晃
  • 2. 2 自己紹介 ● ● ● 11 年前から「 FPGA の部屋」のブログを書いています – http://marsee101.blog19.fc2.com/ ● FPGA やそのツール、日記も書いています ● 爺さんなので早起きです – 午前 3 時か 4 時ころ起きてブログを書いています
  • 3. 3 FPGA ● Field Programmable Gate Array の略 ● ロジックを書き込むといろいろな機能が実現できる IC ● マイクロソフトはどうやってBingをFPGAで実装した か ● AWS で FPGA 利用可能インスタンスが登場 ● 機械学習/Deep Learningの仕事が増える201 7年、ソフトウェアエンジニアがFPGAを学ぶべき理由
  • 4. 4 FPGA の設計方法 ● 回路図 ● HDL (ハードウェア記述言語) – Verilog HDL – VHDL – SystemVerilog ● 高位合成ツール( HDL を生成する) – C ( Vivado HLS ) – Java ( Synthesijer ) – Python ( PyCoRAM 、 Polyphony )
  • 5. 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 が使える。大規模システム
  • 6. 6 Vivado HLS について ● C, C++ で書くと HDL に変換され IP 化(無料、ただしデバイス 限定) ● pragma で動作やインターフェースなどを指定する必要がある ● 今のところ、ハードウェアを知らないと性能が出ない ● 合成済みライブラリ – hls_math ライブラリ( atan, sin, cos, log, log10, sqrt など) – HLS ビデオライブラリ( OpenCV の一部をサポート) – FFT や FIR 、線形代数ライブラリ( cholesky) – HLS DSP ライブラリ( SDR アプリケーション)
  • 7. 7 Vivado HLS の OpenCV 対応ライブラリ関数 AXIvideo2cvMat AXIvideo2CvMat AXIvideo2IplImage cvMat2AXIvideo CvMat2AXIvideo cvMat2hlsMat CvMat2hlsMat CvMat2hlsWindow hlsMat2cvMat hlsMat2CvMat hlsMat2IplImage hlsWindow2CvMat IplImage2AXIvideo IplImage2hlsMat AXIvideo2Mat Mat2AXIvideo Array2Mat Array2Mat ビデオプロセッシング AbsDiff AddWeighted And Avg AvgSdv Cmp CmpS CornerHarris CvtColor Dilate Duplicate EqualizeHist Erode FASTX Filter2D GaussianBlur Harris HoughLines2 Integral InitUndistortRectifyMap Max MaxS Mean Merge Min MinMaxLoc MinS Mul Not PaintMask PyrDown PyrUp Range Remap Reduce Resize Set Scale Sobel Split SubRS 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-hig h-level-synthesis.pdf
  • 8. 8 OpenCV ライブラリ使用例 ( FASTX コーナー検出) ● Vivado HLS で作成した FASTX コーナー検出 IP を使用 ● カメラからの画像をリアルタイムに FASTX コーナー検 出 ● カメラ・インターフェース IP からの AXI4-Stream ● FASTX コーナー検出 IP ● ビットマップ・ディスプレイ・コントローラ IP
  • 13. 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
  • 14. 14 FASTX コーナー検出のデモ ● カメラの画像をリアルタイムで FASTX コーナー検出す るデモを行います threshold = 5 threshold = 10 threshold = 20