SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Ultra96ボードで
YOLOを高速化
奥畑 宏之 (@HiroyukiOkuhata)
自己紹介
• 大阪出身
• 以前:株式会社シンセシス
• 産学連携で ASIC, FPGA 設計・開発
• 輝度補正・超解像などの画像処理 IP
• 現在:株式会社ソリトンシステムズ
• ライブ中継用 H.265/HEVC コーデック
• マルチリンク通信ライブラリ
インターフェース2019年1月号
第3部 最強FPGAボードで人工知能カリカリ画像認識
第1章 組み込み人工知能にピッタリ!最強Arm FPGAボード「Ultra96」
64ビットCortex-A/GPU/FPGAチップ搭載で3万円
第2章 最強ArmコアFPGAボードUltra96の基本的な使い方
開発環境の準備からLinux&My回路生成まで
第3章 はじめての行列演算ハードウェア化
画像認識人工知能高速化のために
第4章 映像認識人工知能のカリカリ高速化に挑戦
画像処理&行列計算チューンナップ技法の研究
第5章 リアルタイム物体検出に挑戦
精度よりリアルタイム性がほしいときのために
発表内容
• Ultra96ボード
• YOLO
• 開発フロー
• PetaLinux
• Vivado HLS
• PSとPL
• PLを用いた高速化
• HLSのクロック周波数設定
• キャッシュコヒーレンシ
• PL以外での高速化
• NEON
• GPU Mali
Ultra96ボードの概要
• XCZU3EG (PS + PL)
• Cortex-A53 1.5GHz
• Cortex-R5 600MHz
• Mali-400 MP2 667MHz
• 16nm UltraScale+ PL
• Mini-Display Port
• Wi-Fi/Bluetooth
• 2GB LPDDR4
• USB 3.0
• 拡張コネクタ
お手頃価格:29,800円(税別)
YOLO v3 によるオブジェクトの識別・検出
入力画像 結果画像
位置と種別を正しく
識別・検出
YOLOとは
• リアルタイム物体識別および検出のAIアルゴリズム
• ニューラルネットDarknetを用いる
• バージョン3 (v3) が 2018年4月に公開
YOLO 処理時間比較
213.6
115.9
18.1 9.14
0
50
100
150
200
250
ラズパイ3 Ultra96ボード
(高速化前)
Ultra96ボード
(高速化後)
Core i7 4GHz
YOLOv3で画像1枚(608×608)の推論にかかる時間 (秒)
YOLO 処理時間 内訳
• gprofによる推論処理
のプロファイリング
• gemm (行列乗算)が
処理時間の91%を占
める
浮動小数点の行列乗算
をPLでオフロード
Ultra96 開発フロー 概略
・Vivado HLS & Vivado で PLの設計
・OSはPetaLinuxを使う
PetaLinux Build Guide for Ultra96
・このWebページの通り進めると、お手軽に動く
PetaLinuxツール
• ビルド時間
• 少し変更してカーネルビルドするのに10分強 (i7-4790K @ 4.00GHz)
• ディスク容量
• ビルド後のプロジェクトフォルダ 44GB
• aptがほしい
• 一応、パッケージ管理システムDNFが使える (パッケージは少ない)
• 記事ではバージョン2018.02を使用
• Ubuntu16.04でないとうまく動かない
• 最新バージョンは2018.03だが
• Ultra96用のBSPがまだない
• 2018.02のBSPを使うとsystem-top.dtb周りでエラー
• 試される忍耐力
Vivado HLS
• gemm (行列乗算) のC記述をVivado HLSで高位合成
• Xilinxアプリケーションノートを流用
• 行列サイズ32×32の単精度浮動小数点(FP32)の乗算
• AXI4-Streamで入出力
• 高位合成の利点 → アーキテクチャの探索
• 行列のサイズ:32×32, 64×64, 128×128
• 演算の種類:C=A×B, C=A×B+C
• データバス幅
• 動作周波数とサイクル数
• 注意点
• 生成回路のサイクル数、回路規模
ビバド!
ゲーム「Tokyo 7th シスターズ」(略称ナナシス) から引用
PSとPLの接続
• AXI4-Stream ⇔ AXIバス
• Xilinx AXI DMA IP を利用
• Linuxメモリの連続領域確保
• udmabuf (@ikwzmさん) を利用
udmabuf AXI DMA IP 行列乗算IP
PS PL
YOLO
(darknet)
• 接続してUltra96でYOLOを実行
処理時間:115.9秒
高速化
1. Vivado HLSのクロック周波数設定
2. キャッシュコヒーレンシ
3. AXIバス幅の拡張
4. ダブルバッファリング
高速化 1. Vivado HLSのクロック周波数設定
• Vivado HLS 設定クロック周波数≠生成回路の動作可能周波数
• 条件厳しめに高位合成される印象
• Uncertainty 12.5%が付加
• 余裕のありすぎる回路
• 逆にMETしない場合もあるらしい
• クロック周波数とサイクル数のトレードオフ
• 自動で探索してほしい (QuartusIIのDSEみたいな)
• 探索結果
• Vivado HLS の設定:150MHz
• Vivadoの設定:299MHz
高速化 2. キャッシュコヒーレンシ
• ハードウェアによるキャッシュ同期
• 以前のZynqではACPを利用
• AR#66643
Zynq UltraScale+ MPSoCのACPインターフェイスでは、次のキャッ
シュライン対応のトランザクションのみが許容されます。
(中略)
ACPの代わりに、コヒーレンシと共に幅広いAXIトランザクションがサ
ポートされるコヒーレンシHPCポートの使用をご検討ください。
• デフォルト設定ではHPCはキャッシュコヒーレンシではない
• AR#69446
• AXIバスのAxCACHE, AxPROTを適切に設定
• ブート時にBroadcasting Inner Shareableとする
• デバイスツリーの設定でdma-coherentのプロパティを追加
高速化 3. AXIバス幅の拡張
• AXI4-Streamのデータバス幅を32bitから128bitに拡張
• サイクル数
• YOLO実行時間
• 22.7秒→21.4秒
• サイクル数は削減できたが、全体の処理時間に占める割合は小
さかった
32bit 128bit
データ転送サイクル数 12,289 5,122
行列乗算サイクル数 4,549 4,549
総サイクル数 16,846 9,679
高速化 4. ダブルバッファリング
• Linuxメモリ内のコピーとDMA転送を同時に行う
行列B
行列C
①コピー
行列乗算IP
①DMA転送
②DMA転送
②コピー
DMAバッファ
(udmabuf)
• YOLO実行時間
• 21.4秒→18.1秒
• スキャッタギャザDMAを用いれば必要ないかも
高速化による時間短縮まとめ
高速化 YOLO実行時間 (秒)
行列サイズ32×32, クロック100MHz 115.9
行列サイズ64×64, クロック299MHz 46.2
キャッシュコヒーレンシ On 22.7
AXIバス幅 32bit → 128bit 21.4
ダブルバッファリング 18.1
リアルタイム
画像認識
• darknetをOpenCV付
きでコンパイル
• Tiny YOLO v3で2fps
• X Window Systemの
表示が遅い
PL以外での高速化
• NEONによる高速化
• GPU Maliによる高速化
NEONによるYOLO高速化
• NEONとは
• ARMアーキテクチャの64ビット, 128ビットのSIMD命令セット
• NEONを用いたDarknet実装
• NNPACK for Darknet (ライブラリ)
• https://github.com/digitalbrain79/NNPACK-darknet
• darknet-nnpack
• https://github.com/digitalbrain79/darknet-nnpack
• Ultra96でビルド
• darknet-nnpackのReadme.mdの通り
• clangは不要だった
• Ultra96で実行
YOLO v3 19.4 秒
YOLO v3 tiny 1.03 秒
速い...
GPU Maliによる高速化(の目論見)
• Mali-400 MP
• OpenCLが使えない
• OpenGL Extentionが使えない
→ OpenGL ES 2.0 で頑張る
• シェーディング言語(GLSL)で記述
バーテックス
シェーダー
フラグメント
シェーダー
画面描画
GLSL GLSL
通常 頂点計算 テクスチャ計算 描画
GPGPU 使わない 演算 glReadPixelsで結果取得
Ultra96でMaliの
動作確認
• Xilinx UG1209 チュート
リアルアプリ「tricube」
がそのまま動作する
Good Arm FPGA Board Ultra96 and Google AI YOLO

Weitere ähnliche Inhalte

Was ist angesagt?

あるキャッシュメモリの話
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話nullnilaki
 
あるブートローダの話
あるブートローダの話あるブートローダの話
あるブートローダの話nullnilaki
 
Wakayama.rbボード ARIDA 4 説明資料
Wakayama.rbボード ARIDA 4 説明資料Wakayama.rbボード ARIDA 4 説明資料
Wakayama.rbボード ARIDA 4 説明資料三七男 山本
 
Using Xeon D 10GBase-T
Using Xeon D 10GBase-TUsing Xeon D 10GBase-T
Using Xeon D 10GBase-TMasaru Oki
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考えるryuz88
 
Wakayamarb Board 説明資料
Wakayamarb Board 説明資料Wakayamarb Board 説明資料
Wakayamarb Board 説明資料三七男 山本
 
Zynq MPSoC勉強会 Codec編
Zynq MPSoC勉強会 Codec編Zynq MPSoC勉強会 Codec編
Zynq MPSoC勉強会 Codec編Tetsuya Morizumi
 
モータ制御基板 SAMBOU-KANとロボホンタンク
モータ制御基板 SAMBOU-KANとロボホンタンクモータ制御基板 SAMBOU-KANとロボホンタンク
モータ制御基板 SAMBOU-KANとロボホンタンク三七男 山本
 
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩Ryo Fujita
 
Meetup 2104 my_homenutanixce_mizuta
Meetup 2104 my_homenutanixce_mizutaMeetup 2104 my_homenutanixce_mizuta
Meetup 2104 my_homenutanixce_mizutaYusuke Mizuta
 
GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境三七男 山本
 
DGX-2 を取り巻く GPU 最新技術情報
DGX-2 を取り巻く GPU 最新技術情報DGX-2 を取り巻く GPU 最新技術情報
DGX-2 を取り巻く GPU 最新技術情報NVIDIA Japan
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson NanoNVIDIA Japan
 
カーネルモジュールでキーロガー
カーネルモジュールでキーロガーカーネルモジュールでキーロガー
カーネルモジュールでキーロガーnemumu
 
Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Taira Hajime
 

Was ist angesagt? (20)

あるキャッシュメモリの話
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話
 
IoTハンズオン
IoTハンズオンIoTハンズオン
IoTハンズオン
 
あるブートローダの話
あるブートローダの話あるブートローダの話
あるブートローダの話
 
Wakayama.rbボード ARIDA 4 説明資料
Wakayama.rbボード ARIDA 4 説明資料Wakayama.rbボード ARIDA 4 説明資料
Wakayama.rbボード ARIDA 4 説明資料
 
Using Xeon D 10GBase-T
Using Xeon D 10GBase-TUsing Xeon D 10GBase-T
Using Xeon D 10GBase-T
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考える
 
Wakayamarb Board 説明資料
Wakayamarb Board 説明資料Wakayamarb Board 説明資料
Wakayamarb Board 説明資料
 
Xeon d
Xeon dXeon d
Xeon d
 
Zynq MPSoC勉強会 Codec編
Zynq MPSoC勉強会 Codec編Zynq MPSoC勉強会 Codec編
Zynq MPSoC勉強会 Codec編
 
ロボット用Open Source Software
ロボット用Open Source Softwareロボット用Open Source Software
ロボット用Open Source Software
 
モータ制御基板 SAMBOU-KANとロボホンタンク
モータ制御基板 SAMBOU-KANとロボホンタンクモータ制御基板 SAMBOU-KANとロボホンタンク
モータ制御基板 SAMBOU-KANとロボホンタンク
 
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩
 
CMSI計算科学技術特論A (2015) 第9回
CMSI計算科学技術特論A (2015) 第9回CMSI計算科学技術特論A (2015) 第9回
CMSI計算科学技術特論A (2015) 第9回
 
Meetup 2104 my_homenutanixce_mizuta
Meetup 2104 my_homenutanixce_mizutaMeetup 2104 my_homenutanixce_mizuta
Meetup 2104 my_homenutanixce_mizuta
 
GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境
 
DGX-2 を取り巻く GPU 最新技術情報
DGX-2 を取り巻く GPU 最新技術情報DGX-2 を取り巻く GPU 最新技術情報
DGX-2 を取り巻く GPU 最新技術情報
 
Openhard150114
Openhard150114Openhard150114
Openhard150114
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson Nano
 
カーネルモジュールでキーロガー
カーネルモジュールでキーロガーカーネルモジュールでキーロガー
カーネルモジュールでキーロガー
 
Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向
 

Ähnlich wie Good Arm FPGA Board Ultra96 and Google AI YOLO

Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Hiroyuki Okuhata
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたちt n
 
ESP8266をはじめよう
ESP8266をはじめようESP8266をはじめよう
ESP8266をはじめようKei Yoshimura
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたことMITSUNARI Shigeo
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門Hiyou Shinnonome
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-mainShotaro Uchida
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介Hiroki Nakahara
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築yaegashi
 
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場幸智 Yukinori 黒田 Kuroda
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみたHiroki Nakahara
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging順也 山口
 

Ähnlich wie Good Arm FPGA Board Ultra96 and Google AI YOLO (20)

Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
20140310 fpgax
20140310 fpgax20140310 fpgax
20140310 fpgax
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたち
 
ESP8266をはじめよう
ESP8266をはじめようESP8266をはじめよう
ESP8266をはじめよう
 
Cmc cmd slim
Cmc cmd slimCmc cmd slim
Cmc cmd slim
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
 
CPUの同時実行機能
CPUの同時実行機能CPUの同時実行機能
CPUの同時実行機能
 
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
 

Mehr von If_CQ

Ifcq o smeetup20190517_tokyo_nuttx
Ifcq o smeetup20190517_tokyo_nuttxIfcq o smeetup20190517_tokyo_nuttx
Ifcq o smeetup20190517_tokyo_nuttxIf_CQ
 
Ifcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iotIfcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iotIf_CQ
 
Making pseudo quantum computer
Making pseudo quantum computerMaking pseudo quantum computer
Making pseudo quantum computerIf_CQ
 
speech signal processing
speech signal processingspeech signal processing
speech signal processingIf_CQ
 
IT agri choujugaitaisaku
IT agri choujugaitaisakuIT agri choujugaitaisaku
IT agri choujugaitaisakuIf_CQ
 
IoTAgrisensingcontrol
IoTAgrisensingcontrolIoTAgrisensingcontrol
IoTAgrisensingcontrolIf_CQ
 
Raspi multispectrumcamera enya
Raspi multispectrumcamera enyaRaspi multispectrumcamera enya
Raspi multispectrumcamera enyaIf_CQ
 

Mehr von If_CQ (7)

Ifcq o smeetup20190517_tokyo_nuttx
Ifcq o smeetup20190517_tokyo_nuttxIfcq o smeetup20190517_tokyo_nuttx
Ifcq o smeetup20190517_tokyo_nuttx
 
Ifcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iotIfcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iot
 
Making pseudo quantum computer
Making pseudo quantum computerMaking pseudo quantum computer
Making pseudo quantum computer
 
speech signal processing
speech signal processingspeech signal processing
speech signal processing
 
IT agri choujugaitaisaku
IT agri choujugaitaisakuIT agri choujugaitaisaku
IT agri choujugaitaisaku
 
IoTAgrisensingcontrol
IoTAgrisensingcontrolIoTAgrisensingcontrol
IoTAgrisensingcontrol
 
Raspi multispectrumcamera enya
Raspi multispectrumcamera enyaRaspi multispectrumcamera enya
Raspi multispectrumcamera enya
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Good Arm FPGA Board Ultra96 and Google AI YOLO

  • 2. 自己紹介 • 大阪出身 • 以前:株式会社シンセシス • 産学連携で ASIC, FPGA 設計・開発 • 輝度補正・超解像などの画像処理 IP • 現在:株式会社ソリトンシステムズ • ライブ中継用 H.265/HEVC コーデック • マルチリンク通信ライブラリ
  • 3. インターフェース2019年1月号 第3部 最強FPGAボードで人工知能カリカリ画像認識 第1章 組み込み人工知能にピッタリ!最強Arm FPGAボード「Ultra96」 64ビットCortex-A/GPU/FPGAチップ搭載で3万円 第2章 最強ArmコアFPGAボードUltra96の基本的な使い方 開発環境の準備からLinux&My回路生成まで 第3章 はじめての行列演算ハードウェア化 画像認識人工知能高速化のために 第4章 映像認識人工知能のカリカリ高速化に挑戦 画像処理&行列計算チューンナップ技法の研究 第5章 リアルタイム物体検出に挑戦 精度よりリアルタイム性がほしいときのために
  • 4. 発表内容 • Ultra96ボード • YOLO • 開発フロー • PetaLinux • Vivado HLS • PSとPL • PLを用いた高速化 • HLSのクロック周波数設定 • キャッシュコヒーレンシ • PL以外での高速化 • NEON • GPU Mali
  • 5. Ultra96ボードの概要 • XCZU3EG (PS + PL) • Cortex-A53 1.5GHz • Cortex-R5 600MHz • Mali-400 MP2 667MHz • 16nm UltraScale+ PL • Mini-Display Port • Wi-Fi/Bluetooth • 2GB LPDDR4 • USB 3.0 • 拡張コネクタ お手頃価格:29,800円(税別)
  • 6. YOLO v3 によるオブジェクトの識別・検出 入力画像 結果画像 位置と種別を正しく 識別・検出 YOLOとは • リアルタイム物体識別および検出のAIアルゴリズム • ニューラルネットDarknetを用いる • バージョン3 (v3) が 2018年4月に公開
  • 7. YOLO 処理時間比較 213.6 115.9 18.1 9.14 0 50 100 150 200 250 ラズパイ3 Ultra96ボード (高速化前) Ultra96ボード (高速化後) Core i7 4GHz YOLOv3で画像1枚(608×608)の推論にかかる時間 (秒)
  • 8. YOLO 処理時間 内訳 • gprofによる推論処理 のプロファイリング • gemm (行列乗算)が 処理時間の91%を占 める 浮動小数点の行列乗算 をPLでオフロード
  • 9. Ultra96 開発フロー 概略 ・Vivado HLS & Vivado で PLの設計 ・OSはPetaLinuxを使う
  • 10. PetaLinux Build Guide for Ultra96 ・このWebページの通り進めると、お手軽に動く
  • 11. PetaLinuxツール • ビルド時間 • 少し変更してカーネルビルドするのに10分強 (i7-4790K @ 4.00GHz) • ディスク容量 • ビルド後のプロジェクトフォルダ 44GB • aptがほしい • 一応、パッケージ管理システムDNFが使える (パッケージは少ない) • 記事ではバージョン2018.02を使用 • Ubuntu16.04でないとうまく動かない • 最新バージョンは2018.03だが • Ultra96用のBSPがまだない • 2018.02のBSPを使うとsystem-top.dtb周りでエラー • 試される忍耐力
  • 12. Vivado HLS • gemm (行列乗算) のC記述をVivado HLSで高位合成 • Xilinxアプリケーションノートを流用 • 行列サイズ32×32の単精度浮動小数点(FP32)の乗算 • AXI4-Streamで入出力 • 高位合成の利点 → アーキテクチャの探索 • 行列のサイズ:32×32, 64×64, 128×128 • 演算の種類:C=A×B, C=A×B+C • データバス幅 • 動作周波数とサイクル数 • 注意点 • 生成回路のサイクル数、回路規模
  • 14. PSとPLの接続 • AXI4-Stream ⇔ AXIバス • Xilinx AXI DMA IP を利用 • Linuxメモリの連続領域確保 • udmabuf (@ikwzmさん) を利用 udmabuf AXI DMA IP 行列乗算IP PS PL YOLO (darknet) • 接続してUltra96でYOLOを実行 処理時間:115.9秒
  • 15. 高速化 1. Vivado HLSのクロック周波数設定 2. キャッシュコヒーレンシ 3. AXIバス幅の拡張 4. ダブルバッファリング
  • 16. 高速化 1. Vivado HLSのクロック周波数設定 • Vivado HLS 設定クロック周波数≠生成回路の動作可能周波数 • 条件厳しめに高位合成される印象 • Uncertainty 12.5%が付加 • 余裕のありすぎる回路 • 逆にMETしない場合もあるらしい • クロック周波数とサイクル数のトレードオフ • 自動で探索してほしい (QuartusIIのDSEみたいな) • 探索結果 • Vivado HLS の設定:150MHz • Vivadoの設定:299MHz
  • 17. 高速化 2. キャッシュコヒーレンシ • ハードウェアによるキャッシュ同期 • 以前のZynqではACPを利用 • AR#66643 Zynq UltraScale+ MPSoCのACPインターフェイスでは、次のキャッ シュライン対応のトランザクションのみが許容されます。 (中略) ACPの代わりに、コヒーレンシと共に幅広いAXIトランザクションがサ ポートされるコヒーレンシHPCポートの使用をご検討ください。 • デフォルト設定ではHPCはキャッシュコヒーレンシではない • AR#69446 • AXIバスのAxCACHE, AxPROTを適切に設定 • ブート時にBroadcasting Inner Shareableとする • デバイスツリーの設定でdma-coherentのプロパティを追加
  • 18. 高速化 3. AXIバス幅の拡張 • AXI4-Streamのデータバス幅を32bitから128bitに拡張 • サイクル数 • YOLO実行時間 • 22.7秒→21.4秒 • サイクル数は削減できたが、全体の処理時間に占める割合は小 さかった 32bit 128bit データ転送サイクル数 12,289 5,122 行列乗算サイクル数 4,549 4,549 総サイクル数 16,846 9,679
  • 19. 高速化 4. ダブルバッファリング • Linuxメモリ内のコピーとDMA転送を同時に行う 行列B 行列C ①コピー 行列乗算IP ①DMA転送 ②DMA転送 ②コピー DMAバッファ (udmabuf) • YOLO実行時間 • 21.4秒→18.1秒 • スキャッタギャザDMAを用いれば必要ないかも
  • 20. 高速化による時間短縮まとめ 高速化 YOLO実行時間 (秒) 行列サイズ32×32, クロック100MHz 115.9 行列サイズ64×64, クロック299MHz 46.2 キャッシュコヒーレンシ On 22.7 AXIバス幅 32bit → 128bit 21.4 ダブルバッファリング 18.1
  • 21. リアルタイム 画像認識 • darknetをOpenCV付 きでコンパイル • Tiny YOLO v3で2fps • X Window Systemの 表示が遅い
  • 23. NEONによるYOLO高速化 • NEONとは • ARMアーキテクチャの64ビット, 128ビットのSIMD命令セット • NEONを用いたDarknet実装 • NNPACK for Darknet (ライブラリ) • https://github.com/digitalbrain79/NNPACK-darknet • darknet-nnpack • https://github.com/digitalbrain79/darknet-nnpack • Ultra96でビルド • darknet-nnpackのReadme.mdの通り • clangは不要だった • Ultra96で実行 YOLO v3 19.4 秒 YOLO v3 tiny 1.03 秒 速い...
  • 24. GPU Maliによる高速化(の目論見) • Mali-400 MP • OpenCLが使えない • OpenGL Extentionが使えない → OpenGL ES 2.0 で頑張る • シェーディング言語(GLSL)で記述 バーテックス シェーダー フラグメント シェーダー 画面描画 GLSL GLSL 通常 頂点計算 テクスチャ計算 描画 GPGPU 使わない 演算 glReadPixelsで結果取得
  • 25. Ultra96でMaliの 動作確認 • Xilinx UG1209 チュート リアルアプリ「tricube」 がそのまま動作する