SlideShare a Scribd company logo
1
PYNQ で Pmod に搭載したカメラ画像を
リアルタイムで FASTX コーナー検出
marseeこと小野雅晃
2
自己紹介
● 定年間近の大学の技術職員
● 11 年前から「 FPGA の部屋」のブログを書いています
– http://marsee101.blog19.fc2.com/
● 今のところ 3735 記事
● FPGA やそのツール、日記も書いています
● 爺さんなので早起きです
– 午前 3 時か 4 時ころ起きてブログを書いています
3
今日の発表
● PYNQ に CMOS カメラを付けて芸をさせました
– FASTX コーナー検出( OpenCV )
– ラプラシアンフィルタ
– アンシャープ・マスクキング・フィルタ
● 今のところベアメタル・アプリケーション
– Python で動かすのに失敗しています
● 誰か教えて。。。
4
CMOS カメラ
● MT9D111 (日昇テクノロジー)
– 1,600 x 1,200 ピクセル( UXGA ) 15 fps
– preview mode 800 x 600 (SVGA) 30 fps (使用中)
– MotionJPEG
– パラレル・インターフェース
– レジスタがたくさん、 6 万個くらい
– NDA があってレジスタの使い方がよくわからない?
● PMOD x 2 とのインターフェース基板は自作
– KiCAD で基板のデータを作製
– 実は ZedBoard 用
5
写真
6
● USB カメラとの比較
● USB カメラはつなぐの簡単
– USB ポートにつないでソフトを入れれば OK
● PMOD につけるカメラ
– つなぐためにはハンダ付けが必要
– インターフェース基板を設計する手間
● 利点
– インターフェースを作ればハードウェア処理が簡単にでき
る
– フィルタをカメラのピクセルデータの取り込みデータパス
に入れればメモリ帯域を使用しない
7
PYNQ ボード用 Vivado のブロックデザイン
カメラ
D
D
R
camera interface
switch
switch
DMAC
FASTX
laplacian filter
unsharp masking
filter
8
USB カメラを CPU で使用する場合
USB
カメラ
CPU
カメラ画像
フィルタ処理後の画像
DDR SDRAM
9
高位合成ツールを使用して各フィルタ IP を作成
( Vivado HLS )
● C 、 C++ 、 SystemC から HDL を合成し IP へ
● 関数の引数がプラグマ 1 つでいろいろなインター
フェースを実装
– Vivado HLS の独自インターフェース
– AXI4-Lite Slave
– AXI4 Master
– AXI4-Stream
10
Vivado HLS について
● C, C++ で書くと HDL に変換され IP 化(無料、ただしデバイス
限定)
● pragma で動作やインターフェースなどを指定する必要がある
● 今のところ、ハードウェアを知らないと性能が出ない
● 合成済みライブラリ
– hls_math ライブラリ( atan, sin, cos, log, log10, sqrt など)
– HLS ビデオライブラリ( OpenCV の一部をサポート)
– FFT や FIR 、線形代数ライブラリ( cholesky)
– HLS DSP ライブラリ( SDR アプリケーション)
11
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
12
宣伝
● FPGA マガジン No.14, No.15, No.16, … で Vivado
HLS の使い方を書いています
● HDL ではなく C 、 C++ でお手軽にフィルタ IP などを
書いてみませんか?
● HDL も必要ですが、 C で書いた方が 10 倍くらい書く
時間が短いです
● 皆さんも高位合成ツールを使ってみませんか?
13
デモ
● FASTX コーナー検出
● ラプラシアンフィルタ
● アンシャープ・マスキング・フィルタ
14
FASTX コーナー検出( theshold = 5 )
15
ラプラシアンフィルタ
16
アンシャープ・マスキング・フィルタ

More Related Content

PPTX
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
PDF
Vivado hls勉強会1(基礎編)
PDF
Vivado hls勉強会4(axi4 master)
PPTX
Polyphony: Python ではじめる FPGA
PDF
Zynq mp勉強会資料
PDF
Rust で RTOS を考える
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
PPTX
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
Vivado hls勉強会1(基礎編)
Vivado hls勉強会4(axi4 master)
Polyphony: Python ではじめる FPGA
Zynq mp勉強会資料
Rust で RTOS を考える
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい

What's hot (20)

PDF
ACRi HLSチャレンジ 高速化テクニック紹介
PPTX
Verilator勉強会 2021/05/29
PDF
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PPTX
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
PDF
Vivado hls勉強会3(axi4 lite slave)
PPTX
0円でできる自宅InfiniBandプログラム
PDF
第 1 回 Jetson ユーザー勉強会
PDF
Systems@Scale 2021 BPF Performance Getting Started
PDF
「日本語LaTeX」が多すぎる件について
PDF
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
PDF
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PDF
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
PDF
高位合成ツールVivado hlsのopen cv対応
PDF
自動定理証明の紹介
PDF
ACRiウェビナー:小野様ご講演資料
PDF
WebAssemblyのWeb以外のことぜんぶ話す
PPTX
Wiresharkの解析プラグインを作る ssmjp 201409
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
PDF
関数型言語ElixirのIoTシステム開発への展開
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
ACRi HLSチャレンジ 高速化テクニック紹介
Verilator勉強会 2021/05/29
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
Vivado hls勉強会3(axi4 lite slave)
0円でできる自宅InfiniBandプログラム
第 1 回 Jetson ユーザー勉強会
Systems@Scale 2021 BPF Performance Getting Started
「日本語LaTeX」が多すぎる件について
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
高位合成ツールVivado hlsのopen cv対応
自動定理証明の紹介
ACRiウェビナー:小野様ご講演資料
WebAssemblyのWeb以外のことぜんぶ話す
Wiresharkの解析プラグインを作る ssmjp 201409
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
関数型言語ElixirのIoTシステム開発への展開
ARM CPUにおけるSIMDを用いた高速計算入門
Ad

Viewers also liked (13)

PPTX
PYNQ単体でUIを表示してみる(PYNQまつり)
PDF
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
PDF
PYNQ祭り
PDF
Pynq祭り資料
PDF
Presto in my_use_case
PPTX
PYNQで○○してみた!
PDF
20171012 found IT #9 PySparkの勘所
PDF
PYNQ祭りLT todotani
PPTX
PYNQ 祭り: Pmod のプログラミング
PDF
APACHE TOREE: A JUPYTER KERNEL FOR SPARK by Marius van Niekerk
PDF
20170927 pydata tokyo データサイエンスな皆様に送る分散処理の基礎の基礎、そしてPySparkの勘所
PDF
20170210 sapporotechbar7
PDF
コンピュータエンジニアへのFPGAのすすめ
PYNQ単体でUIを表示してみる(PYNQまつり)
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
PYNQ祭り
Pynq祭り資料
Presto in my_use_case
PYNQで○○してみた!
20171012 found IT #9 PySparkの勘所
PYNQ祭りLT todotani
PYNQ 祭り: Pmod のプログラミング
APACHE TOREE: A JUPYTER KERNEL FOR SPARK by Marius van Niekerk
20170927 pydata tokyo データサイエンスな皆様に送る分散処理の基礎の基礎、そしてPySparkの勘所
20170210 sapporotechbar7
コンピュータエンジニアへのFPGAのすすめ
Ad

Similar to Pynqでカメラ画像をリアルタイムfastx コーナー検出 (20)

PDF
Synthesijer zynq qs_20150316
PDF
OpenCVをAndroidで動かしてみた
PPTX
Zynq + Vivado HLS入門
PDF
ACRiウェビナー:岩渕様ご講演資料
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
PDF
Vivado hlsのシミュレーションとhlsストリーム
PDF
Fpga online seminar by fixstars (1st)
PDF
Vivado hls勉強会5(axi4 stream)
PDF
OpenCVの入り口
PDF
FPGA startup 第一回 LT
PDF
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
PDF
Intro to SVE 富岳のA64FXを触ってみた
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
PPTX
研究者のための Python による FPGA 入門
PDF
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
PDF
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
PDF
FPGAスタートアップ資料
PPTX
Androidとfpgaを高速fifo通信させちゃう
PDF
Halide, Darkroom - 並列化のためのソフトウェア・研究
Synthesijer zynq qs_20150316
OpenCVをAndroidで動かしてみた
Zynq + Vivado HLS入門
ACRiウェビナー:岩渕様ご講演資料
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Vivado hlsのシミュレーションとhlsストリーム
Fpga online seminar by fixstars (1st)
Vivado hls勉強会5(axi4 stream)
OpenCVの入り口
FPGA startup 第一回 LT
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
Intro to SVE 富岳のA64FXを触ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
研究者のための Python による FPGA 入門
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
FPGAスタートアップ資料
Androidとfpgaを高速fifo通信させちゃう
Halide, Darkroom - 並列化のためのソフトウェア・研究

More from marsee101 (10)

PDF
Robot car gabor_filter
PDF
Ultra96 pmod expansion board
PDF
Camera input from_ultra_96's_slow_expansion_connector
PDF
Fpga robot car
PDF
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
PDF
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
PDF
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
PDF
FPGAの部屋、slide share、xilinxツールのご紹介
ODP
MPSoCのPLの性能について
PPTX
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Robot car gabor_filter
Ultra96 pmod expansion board
Camera input from_ultra_96's_slow_expansion_connector
Fpga robot car
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
FPGAの部屋、slide share、xilinxツールのご紹介
MPSoCのPLの性能について
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識

Pynqでカメラ画像をリアルタイムfastx コーナー検出

  • 1. 1 PYNQ で Pmod に搭載したカメラ画像を リアルタイムで FASTX コーナー検出 marseeこと小野雅晃
  • 2. 2 自己紹介 ● 定年間近の大学の技術職員 ● 11 年前から「 FPGA の部屋」のブログを書いています – http://marsee101.blog19.fc2.com/ ● 今のところ 3735 記事 ● FPGA やそのツール、日記も書いています ● 爺さんなので早起きです – 午前 3 時か 4 時ころ起きてブログを書いています
  • 3. 3 今日の発表 ● PYNQ に CMOS カメラを付けて芸をさせました – FASTX コーナー検出( OpenCV ) – ラプラシアンフィルタ – アンシャープ・マスクキング・フィルタ ● 今のところベアメタル・アプリケーション – Python で動かすのに失敗しています ● 誰か教えて。。。
  • 4. 4 CMOS カメラ ● MT9D111 (日昇テクノロジー) – 1,600 x 1,200 ピクセル( UXGA ) 15 fps – preview mode 800 x 600 (SVGA) 30 fps (使用中) – MotionJPEG – パラレル・インターフェース – レジスタがたくさん、 6 万個くらい – NDA があってレジスタの使い方がよくわからない? ● PMOD x 2 とのインターフェース基板は自作 – KiCAD で基板のデータを作製 – 実は ZedBoard 用
  • 6. 6 ● USB カメラとの比較 ● USB カメラはつなぐの簡単 – USB ポートにつないでソフトを入れれば OK ● PMOD につけるカメラ – つなぐためにはハンダ付けが必要 – インターフェース基板を設計する手間 ● 利点 – インターフェースを作ればハードウェア処理が簡単にでき る – フィルタをカメラのピクセルデータの取り込みデータパス に入れればメモリ帯域を使用しない
  • 7. 7 PYNQ ボード用 Vivado のブロックデザイン カメラ D D R camera interface switch switch DMAC FASTX laplacian filter unsharp masking filter
  • 8. 8 USB カメラを CPU で使用する場合 USB カメラ CPU カメラ画像 フィルタ処理後の画像 DDR SDRAM
  • 9. 9 高位合成ツールを使用して各フィルタ IP を作成 ( Vivado HLS ) ● C 、 C++ 、 SystemC から HDL を合成し IP へ ● 関数の引数がプラグマ 1 つでいろいろなインター フェースを実装 – Vivado HLS の独自インターフェース – AXI4-Lite Slave – AXI4 Master – AXI4-Stream
  • 10. 10 Vivado HLS について ● C, C++ で書くと HDL に変換され IP 化(無料、ただしデバイス 限定) ● pragma で動作やインターフェースなどを指定する必要がある ● 今のところ、ハードウェアを知らないと性能が出ない ● 合成済みライブラリ – hls_math ライブラリ( atan, sin, cos, log, log10, sqrt など) – HLS ビデオライブラリ( OpenCV の一部をサポート) – FFT や FIR 、線形代数ライブラリ( cholesky) – HLS DSP ライブラリ( SDR アプリケーション)
  • 11. 11 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
  • 12. 12 宣伝 ● FPGA マガジン No.14, No.15, No.16, … で Vivado HLS の使い方を書いています ● HDL ではなく C 、 C++ でお手軽にフィルタ IP などを 書いてみませんか? ● HDL も必要ですが、 C で書いた方が 10 倍くらい書く 時間が短いです ● 皆さんも高位合成ツールを使ってみませんか?
  • 13. 13 デモ ● FASTX コーナー検出 ● ラプラシアンフィルタ ● アンシャープ・マスキング・フィルタ