Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて

598 views

Published on

電子情報通信学会 リコンフィギャラブルシステム研究会(IEICE-RECONF)で招待講演をさせていただきました!!

『ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて』
新田泰大・田村 爽・高瀬英希(京大)
https://www.ieice.org/ken/program/index.php?tgs_regid=7f90944888956d49fd614e247ba28ef36534711a688226a23579a18c938ecf2c&tgid=IEICE-RECONF

FPT/HEART FPGA Design CompetitionでのZytleBot = Zynq + TurtleBot3な開発話を共有させていただきました.
コンテスト参加学生の田村くん新田くん,改めてお疲れさまでしたっ!

Published in: Engineering
  • 素晴らしいですね、参考になりました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて

  1. 1. ZytleBot ROSベースの⾃律移動ロボットへの FPGAの統合に向けて 新⽥ 泰⼤・⽥村 爽・⾼瀬 英希 京都⼤学 ⼤学院情報学研究科 swords@lab3.kyoto-u.ac.jp
  2. 2. Agenda • プロローグ [⾼瀬] • ZytleBotに⽤いた⾃律移動アルゴリズム [⽥村] ­ ZytleBotの紹介 ­ HW/SWアルゴリズムの検討と選択 • ⾚信号認識のHWアクセラレーション [新⽥] ­ PS/PL連携 ­ 実装について • エピローグ [⾼瀬] 2
  3. 3. プロローグ • ROS (Robot Operating System)とは︖ • FPGA Design Competition?? • 我々の戦略
  4. 4. ロボット開発を取り巻く背景 • ロボットシステムの特徴 ­ 様々な情報技術の複合体 (姿勢制御,情報処理,⾃動化,プランニング,⼈⼯知能,など,,,) ­ 実世界の情報との密接なやり取り üリアルタイム/⾮リアルタイム処理の混在 ü膨⼤なデータの(統計的な)処理 ­ 限定された計算資源と電⼒量 4 統⼀化された開発フレームワークによる ロボットシステム設計開発の加速化に期待
  5. 5. ROSとは︖ (Robot Operating System) 5 http://www.ros.org/about-ros/ ROS is not just framework, but design platform for robots!! • Plumbing: 出版購読型の通信モデルとミドルウェア • Tools: プロジェクト管理,デバッグ,可視化,等 • Capabilities: 膨⼤なライブラリ・パッケージ • Ecosystem: 世界規模の強⼒なOSSコミュニティ
  6. 6. Plumbing • Publish / Subscribe messaging infrastructure ­ ROSノード︓ロボットシステムを構成する機能単位 üノードの登録・変更・削除が容易に実現できる ­ トピックを介した⾮同期型の通信⽅式 ü同期通信のserviceも提供されている 6 : : : :
  7. 7. Tools • catkin_tools: プロジェクト構成/ビルドシステム • rqt: Qtベースのデバッグフレームワーク • gazebo: 3D物理シミュレーションツール • rviz: 可視化ツール ­ 他にもroslaunch, rosbagなど,,, 7
  8. 8. Capabilities • ROSパッケージ ­ ロボットの有⽤な機能がまとめられたライブラリの集合 ümobility, manipulation, perception, etc.,,, ­ 2,000以上のパッケージが公開されている ühttps://index.ros.org/packages/ • パッケージ活⽤の利点 ­ 既存資産として活⽤できる ­ コンポーネント指向開発を実現できる • 公式サポートの⾔語(ROS 1)︓C++, Python, LISP ­ 他にも,C#, Java, Lua, Go, ruby, ,,, 8
  9. 9. Ecosystem • オンラインのコミュニティ ­ ROS Wiki: 各種⽂書の公開,パッケージ配布 ­ ROS Answers: Q&Aページ ­ ROS Discourse: リリースやイベントのアナウンス • オフラインのコミュニティ ­ ROSCon: 世界規模の開発者会議(最近はlocal Confも) ­ SIG meetups, tutorial workshop, local events, etc.,,, 9
  10. 10. ROS Compliannt Robots 10https://robots.ros.org Aerial Marine Component Sensor Ground Manipulator Motor
  11. 11. 学習⽤ロボット︓TurtleBot3 • ROS公式の研究・教育⽤ロボット組⽴キット ­ テーブルトップでROSやSLAMの学習が出来る ­ OSRF(open robotics)からのリクエストで誕⽣ ­ 改造の⾃由度が⾼く、ROS対応ロボット作成が容易 11
  12. 12. FPGA Design Competition • FPTおよびHEARTで 開催されている⾃律移動 ロボットの開発コンテスト • 道路を模したコースを⾛⾏ • センサ類はCMOSカメラのみ • FPGAが搭載されたSoCで 全てのプログラム動作を 完結させる必要がある • ⾞体の⼤きさやシステムの 構成は⾃由︕ 12 http://fpt19.tju.edu.cn/Contest/FPT201 9_FPGA_Design_Competition.htm
  13. 13. 我々の戦略 13 ⾃律移動ロボットの コンテストあるらしいぜ︖ ROSとTB3使うだけで この競技なら楽勝ちゃう︖ FPGA︖どっかROSノードを HLS掛けたらええだけやん うちらみたいなFPGA最弱チームでも ワンチャンいけんちゃう︖︖ 沖縄と⻑崎にも⾏けるよ楽しいよ︕ ⾦と⼝なら出すよ︕︕ (⼿を出すとは⾔っていない) そんな美味い話しが あるわけない,,, ROSまるで わからん,,,
  14. 14. ZytleBotに⽤いた ⾃律移動アルゴリズム • ZytleBotの紹介 • HW/SWアルゴリズムの検討と選択
  15. 15. ZytleBot 15 • Zynq + TurtleBot ­ Zynq Ultrascale+ : Heterogeneous MPSoC ­ TurtleBot3 : ROS standard platform robot kit
  16. 16. TurtleBot3 & ZytleBot 16 LiDAR Raspberry pi OmnichargeUSBCam Ultra96 Pcam 5C OUT IN
  17. 17. システム構成 & 分担 • ⽥村(SW) ­ ⾃動運転システム・システム インテグレーション ­ カメラ固定⽤3Dモデル作成 • 新⽥(HW) ­ ロボット機体組み⽴て・調整 ­ ⾚信号検出 HWアクセラレーション 17
  18. 18. 開発の流れ 18 FPT 2018 HW SW 2018/7~2018/9 ~2018/12 ~2019/6 シミュレータ作成 ライントレース によるコース周回 ZyboにROSを インストール 路⾯画像からの⾃律移動 アルゴリズム 第8回 相磯秀夫杯 ROS 2対応 FPGA利⽤のための ROSノード作成 Ultra96対応 HEART 2019 PCamからの 画像取得・画像前処理 Petalinuxビルド TurtleBot3認識 HOG特徴量計算 HW実装 HOG+SVM HW実装 HOG+RF ⾚信号検出 SW実装
  19. 19. 開発の流れ 19 HW SW 2018/7~2018/9 ~2018/12 ~2019/6 シミュレータ作成 ライントレース によるコース周回 ZyboにROSを インストール 第8回 相磯秀夫杯 PCamからの 画像取得・画像前処理 Petalinuxビルド TurtleBot3認識
  20. 20. 開発の流れ 20 FPT 2018 HW SW 2018/7~2018/9 ~2018/12 ~2019/6 路⾯画像からの⾃律移動 アルゴリズム FPGA利⽤のための ROSノード作成 HOG特徴量計算 HW実装 HOG+RF ⾚信号検出 SW実装
  21. 21. 開発の流れ 21 HW SW 2018/7~2018/9 ~2018/12 ~2019/6 ROS 2対応 Ultra96対応 HEART 2019 HOG+SVM HW実装
  22. 22. ROSの活⽤︓シミュレータ 22 • Gazeboシミュレータ ­ SW部分の実装&テスト ­ インテグレーションが容易 1 / 1/ 1 / 1 .
  23. 23. ROSの活⽤︓シミュレータ 23 • Gazeboシミュレータ ­ SW部分の実装&テスト ­ インテグレーションが容易 ⼊出⼒が実機と同じ︕ 作った⾃律移動プログラムが そのまま実機で動かせる︕ 1 / 1/ 1 / 1 .
  24. 24. HW/SWアルゴリズムの遷移 24 HW︓路⾯画像の⼆値化 SW︓ライントレース HW︓信号画像のHOG 特徴量 +⼆値化 SW︓特徴量からのラン ダムフォレストによる 推論 +⾃律移動 アルゴリズム HW︓SVMによる 信号検出 + ⼆値化 SW︓ ⾃律移動 アルゴリズム 第8回 相磯秀夫杯 FPT 2018 HEART 2019
  25. 25. HW/SWアルゴリズムの遷移 25 HW︓路⾯画像の⼆値化 SW︓ライントレース HW︓SVMによる 信号検出 + ⼆値化 SW︓ ⾃律移動 • Pcamから取得した画像が、CPUに⼊る前に モノクロに処理 ­ リアルタイム性◎ ­ CPU処理のオフロード • 処理された画像を使ってのライントレース HW︓信号画像のHOG 特徴量 + ⼆値化 SW︓特徴量からのラン ダムフォレストによる 推論 +⾃律移動
  26. 26. HW/SWアルゴリズムの遷移 26 HW︓路⾯画像の⼆値化 SW︓ライントレース HW︓信号画像の HOG特徴量 + ⼆値化 SW︓特徴量からの ランダムフォレスト +⾃律移動アルゴリズム HW︓SVMによる 信号検出 SW︓ ⾃律移動 アルゴリズム • ランダムフォレストによる⾚信号検出を実装 • ⼤量の条件分岐があるため、推論はHWに不向き ­ 推論をCPUで実⾏するため、⼤きな負担 • 処理性能︓⾃律移動のみ5fps、信号検知中は3fps ­ ラグも⼤きく、⾛⾏が安定しない
  27. 27. HW/SWアルゴリズムの遷移 27 HW︓路⾯画像の⼆値化 SW︓ライントレース HW︓信号画像のHOG 特徴量 +⼆値化 SW︓特徴量からのラン ダムフォレストによる 推論 +⾃律移動 アルゴリズム HW︓SVMによる 信号検出 + ⼆値化 SW︓ ⾃律移動 アルゴリズム • SVMはFPGA向き ­ 推論までFPGAで⾏えるため、CPUの負担が軽減 • Zybo ⇨ Ultra96に、処理性能が格段にアップ • 結果、10fps以上で安定⾛⾏
  28. 28. FPGA×ROS • 2段階の⼿順 1. PS/PL間のインタフェースを作る 2. ROSからインタフェースを利⽤ • 1は後述 • 2については、 a. makefileでビルドできるC, C++プログラムを作成 b. ⼊出⼒に関してのROS APIを追加 c. ビルドシステム(catkin, colcon)でビルド 28
  29. 29. ⾚信号認識のHWアクセラレーション • PS/PL連携 • ⾚信号認識のHWアクセラレーション
  30. 30. 開発内容 • 開発内容 ­ FPGAで動作する回路の設計 üVivado HLSで開発 30
  31. 31. 開発内容 • 開発内容 ­ FPGAで動作する回路の設計 ­ ボード⽤Linux Kernel, rootfsの構築 ­ デバイスドライバ・デバイスツリーによるPS/PL連携 ­ ロボット機体の組み⽴て・電源・パーツの選定 • 相磯杯・FPT 2018 ­ Petalinux on ZYBO Z7-20 ­ ZYBOのUSB Hostの電流不⾜問題 ­ TurtleBot3 OpenCRが認識されない問題 • HEART 2019 ­ Ubuntu on Ultra96 31
  32. 32. ボード上で動作するLinuxの構築 • Linux Kernel, rootfsの構築 ­ Petalinux üお⼿軽 üカスタマイズするとなると不⾃由 ­ ⾃前で構築 üXilinx-linuxのリポジトリをクローン • ZYBOのUSB Hostの電流不⾜ ­ 2つ以上デバイスを接続すると落ちる ­ セルフパワーハブを使⽤ • OpenCRが認識されない ­ Linux Kernelのコンフィグを修正 32 CONFIG_USB_ACM=y CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL_GENERIC=y
  33. 33. PS/PL連携 • FPGAの回路をLinuxにデバイスとして認識させる ­ デバイスツリー üARM Linux 向けのデバイス情報の記述ファイル ü物理アドレス等のプロパティをドライバが読み込む 1. メモリマップドIO ­ devmemで制御(危険︕) 2. UIO(User space IO) ­ ユーザプロセスから指定範囲のメモリを操作する機能 ­ compatible = “generic-uio” のみ指定 3. デバイスドライバの作成 ­ 安全・⼿間がかかる 33
  34. 34. PS/PL連携 • 例︓VivadoHLSで合成した回路をLinuxから操作 • デバイスツリーを記述 ­ Petalinuxを使⽤する場合:system-user.dtsiに記述 ­ Device Tree Overlayを使⽤する⽅法もアリ ­ /sys/class/uio以下にデバイスとして登録される 34 myip { compatible = "generic-uio"; reg = <0x0 0x80010000 0x0 0x10000>; interrupt-parent = <&gic>; interrupts = <0 89 4>; }; 参考︓ https://qiita.com/tetsu_koba/items/5cb1f3b61d0b2b6f4e2b https://qiita.com/ikwzm/items/5099d36b1bfd8009dce4
  35. 35. PS/PL連携 • VivadoHLSからドライバプログラムが⽣成される ­ デバイスドライバではない ­ x[ip_name].c, x[ip_name].h, x[ip_name]_hw.h, x[ip_name]_linux.c, x[ip_name]_sinit.c ­ IPの開始・終了・割込設定に必要なレジスタ・設定⽤の 関数が記述されている (uio使⽤が想定されている) 35
  36. 36. PS/PL連携 • VivadoHLSからドライバプログラムが⽣成される ­ 合成する回路の⼊出⼒プロトコルがAXI4/AXI Liteの場 合、⼊出⼒ごとに関数が⽣成される ümmapで物理アドレス⇔仮想アドレス変換後、関数を 呼び出せば⼊⼒アドレスがセットされる ­ AXISの場合はアドレス情報がないため、⽣成されない üAXI DMAを⽤いてPSとデータ送受信 üudmabuf等を⽤いてPSからDMA操作 • Vivado HLS/Linux連携の公式ドキュメントは⾒つからない 36
  37. 37. 物体認識のアルゴリズム 37 • なにがどこにあるかを検出
  38. 38. 物体認識のアルゴリズム 38 • 分類器を繰り返し⽤いる⽅法 分類器・・RF, SVM CNN • スライディングウインドウ法 • 全ての位置・全てのスケールについて試⾏ • 選択的検索法 • R-CNN, Fast-RCNN, Faster-RCNN 領域候補を挙げてそれらをCNNに⼊⼒ • 回帰的に物体検出を⾏う⽅法 • YOLO, SSD end-to-end学習が可能 領域候補 分類器 分類器 特徴量選定要 特徴量選定不要 参考︓ https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9
  39. 39. ⾚信号検出器の開発 • FPT2018ではHOG特徴量+ランダムフォレスト法 ­ HOG特徴量をFPGAで計算・RFはSWで計算 ­ 毎フレーム,すべてのウインドウについて計算 üHWコアを1フレームにつき300回以上呼び出す üSW/HW通信がボトルネックに︓3fps程度 ­ ランダムフォレストをHW実装するとFF,LUTを⼤量使⽤ üIF⽂の数だけマルチプレクサが使⽤される 39 c.f. プログラマブルSoCを活⽤した⾃動運転ロボットにおける 交通信号検出タスクの設計空間探索, 新⽥ 泰⼤, ⽥村 爽, ⾼瀬 英希, ⾼⽊ ⼀義, 髙⽊ 直史(京都⼤学), ETNET2019 種⼦島
  40. 40. ⾚信号検出器の開発 • HEART2019ではRF→SVMに変更 ­ 特徴量抽出からSVMによる推論まで全てをHWで実装 ­ 1フレームにつきHWの呼び出しは1回で済む ­ ⼀部の特徴量が計算された時点で推論の計算を開始でき るため⾼速(後述) 40 Python+Scikit- learnで学習 全てC++に移植 (アルゴリズムの 理解) VivadoHLSでHW 実装
  41. 41. 現実的な問題 41 • 理想︓DNN on FPGAに挑戦 • 現実︓コンテストまで1ヶ⽉ p ZyboZ7からUltra96への移⾏ » カーネルビルド » ⾞体の電源回り p 他にもやることがいっぱい・・ HOG+SVM on FPGAで妥協 以前HOG+RF on FPGAが遅かったのでそれを改善したいのもあった
  42. 42. HOG特徴量 42 HOG: Histogram Of Gradients,輝度勾配 0. ⼊⼒画像︓グレースケール画像 1. 各画素について輝度勾配・⼤きさを求める 2. 各セル(8*8)毎にヒストグラムを作成 ビン︓勾配の⾓度 データ︓勾配の⼤きさ 𝐺" = 𝐼 𝑦 + 1, 𝑥 − 𝐼 𝑦 − 1, 𝑥 𝐺+ = 𝐼 𝑦, 𝑥 + 1 − 𝐼 𝑦, 𝑥 − 1 𝑚𝑎𝑔"+ = 𝐺+ / + 𝐺" / , 𝜃"+ = arctan( 78 79 ) 180 0 20 80 60 40 100 120 140 160 1 2 34567 8 9 8pix cell 1 2 3 4 5 6 7 8 9 Histogramℎ",+,< ≔ セル 𝑦, 𝑥のビン 𝑖の値 (0,1) (2,1) (1,0) (1,2)
  43. 43. HOG特徴量 43 3. 各ブロック(2*2)ごとに、ヒストグラムの値を正規化 隣接するブロックは8pix=1セル分重複している 4. 各ブロックごとの、各セルの正規化済みのヒストグラムの値がHOG特徴量 ex) 32pix*64pix cellℎ′",+,< = ℎ",+,< ブロック内の全て(64個) の𝑚𝑎𝑔合計 block ( B/ C − 1) ∗ ( EF C − 1) ∗ 4 ∗ 9 = 756個の特徴量
  44. 44. HOG+SVMで⾚信号検出 44 • 線形SVM分類器 * Sliding Window法 w: 学習した重み θ︓バイアス x : 抽出した特徴量 • 特徴量︓RGB,HSV画素値 + HOG特徴量 ­ HOG: Histogram Of Gradients,輝度勾配 𝑡 = K <LM N 𝑤< 𝑥< + 𝜃 𝑝𝑟𝑜𝑏𝑎 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑡)
  45. 45. ⾚信号検出 45 8x8 Resize 8x8 RGB→HSV 32x64 HOG特徴量計算 SVM 32x64 RGB→GRAY 32x64 RGB 32x64x3 32x64 3x7x9 8x8x3 8bit x 8x8x3 8x8x3 1 画素特徴量計算 K 𝑤𝑥 + 𝜃
  46. 46. FPGA実装 46 • Vivado HLSで実装 • ⼊⼒︓320*240pix RGB画像 • 出⼒︓1287個のウインドウのSVM推論結果 • 1度のHW呼び出しで1フレーム全体を処理 • SVM推論器はFPGA実装向き • ∑𝑤𝑥 + 𝜃 • ⼀部の特徴量が算出された時点で 部分和の計算を開始できる • 以下の論⽂を参照 BGR->GRAY BGR->Resize magnitude, theta create_histo gram normalization HOG-SVM BGR-SVM Merge Luo, Jian & Lin, Chang. (2018). Pure FPGA Implementation of an HOG Based Real-Time Pedestrian Detection System. Sensors. 18. 1174. 10.3390/s18041174.
  47. 47. FPGA実装 47 • Vivado HLSで実装 • ⼊⼒︓320*240pix RGB画像 • 出⼒︓1287個のウインドウのSVM推論結果 • 1度のHW呼び出しで1フレーム全体を処理 • SVM推論器はFPGA実装向き • ∑𝑤𝑥 + 𝜃 • ⼀部の特徴量が算出された時点で 部分和の計算を開始できる • #pragmaによるデータフロー最適化 BGR->GRAY BGR->Resize magnitude, theta create_histo gram normalization HOG-SVM BGR-SVM Merge #pragma HLS DATAFLOW #pragma HLS STREAM variable = bgr_hsv_resultstream depth = 100 dim = 1 grayscale_and_resizing(instream, gray_pix, upper_scaled_rgb, bottom_scaled_rgb); compute_mag_and_bin(gray_pix, magstream, binstream); cell_histogram_generate(magstream, binstream, bottom, upper); block_histogram_normalization(bottom, upper, ul_out, ur_out, bl_out, br_out); hog_svm_classification(ul_out, ur_out, bl_out, br_out, hog_resultstream, ..); bgr_hsv_svm_classification(upper_scaled_rgb, bottom_scaled_rgb, bgr_hsv_resultstream,..)
  48. 48. FPGA実装 48 • Vivado HLSで実装 • ⼊⼒︓320*240pix RGB画像 • 出⼒︓1287個のウインドウのSVM推論結果 • 1度のHW呼び出しで1フレーム全体を処理 • SVM推論器はFPGA実装向き • ∑𝑤𝑥 + 𝜃 • ⼀部の特徴量が算出された時点で 部分和の計算を開始できる • #pragmaによるデータフロー最適化 BGR->GRAY BGR->Resize magnitude, theta create_histo gram normalization HOG-SVM BGR-SVM Merge #pragma HLS DATAFLOW #pragma HLS STREAM variable = bgr_hsv_resultstream depth = 100 dim = 1 grayscale_and_resizing(instream, gray_pix, upper_scaled_rgb, bottom_scaled_rgb); compute_mag_and_bin(gray_pix, magstream, binstream); cell_histogram_generate(magstream, binstream, bottom, upper); block_histogram_normalization(bottom, upper, ul_out, ur_out, bl_out, br_out); hog_svm_classification(ul_out, ur_out, bl_out, br_out, hog_resultstream, ..); bgr_hsv_svm_classification(upper_scaled_rgb, bottom_scaled_rgb, bgr_hsv_resultstream,..) #pragma HLS DATAFLOWは関数のバイパスは サポート外(動作未定義) DataFlowViewerで確認してFIFOが推定さ れていなかったところだけ明⽰
  49. 49. FPGA実装 49 Line Buffer Line Buffer Pixel Calculate Gradient Window Register magnitude, bin_index
  50. 50. FPGA実装 50 Partial Histogram Buffer Partial Histogram Buffer Partial Histogram Buffer Histogram Buffer Histogram Buffer ヒストグラム 完成︖ + bottom cell upper cell … Yes Histogra m Voter x8 𝑷 𝟎,𝟎
  51. 51. FPGA実装 51 Partial Histogram Buffer Partial Histogram Buffer Partial Histogram Buffer Histogram Buffer Histogram Buffer ヒストグラム 完成︖ + bottom cell upper cell … Yes 𝑷 𝟕,𝟎 𝑷 𝟔,𝟎 𝑷 𝟎,𝟎 𝑷 𝟏,𝟎 𝑷 𝟎,𝟑𝟗 𝑷 𝟏,𝟑𝟗 𝑷 𝟔,𝟑𝟗 Histogra m Voter
  52. 52. FPGA実装 52 Partial Histogram Buffer Partial Histogram Buffer Partial Histogram Buffer Histogram Buffer Histogram Buffer ヒストグラム 完成︖ + bottom cell upper cell … Yes Histogra m Voter 𝑪 𝟏,𝟎 𝑪 𝟎,𝟎 𝑪 𝟏,𝟎 𝑪 𝟎,𝟎
  53. 53. FPGA実装 53 sum divide divide ブロック 完成︖ ブロック 完成︖ ブロック 完成︖ Yes Yes Yes No zeroing sum of cell bottom cell upper cell upper_left upper_right bottom_left bottom_right
  54. 54. FPGA実装 54 sum divide divide ブロック 完成︖ ブロック 完成︖ ブロック 完成︖ Yes Yes Yes No zeroing sum of cell 𝑪 𝟎,𝟏 𝑪 𝟏,𝟏 𝑪 𝟎,𝟐 𝑪 𝟏,𝟐 𝑪 𝟎,𝟎 𝑪 𝟏,𝟎 bottom cell upper cell 𝑪 𝟎,𝟎 𝑪 𝟎,𝟏 𝑪 𝟏,𝟎 𝑪 𝟏,𝟏 𝑪 𝟎,𝟏 + 𝑪 𝟏,𝟏 upper_left upper_right bottom_left bottom_right
  55. 55. FPGA実装 55 weight ROMweight ROM weight ROM Multiply Accumulator Partial Sum RAM 33x4 ウインドウ 完成︖ + + Yes No zeroing bias output vertical number of block in window= • 同じ特徴量に対し異なる重みが乗算される • 縦に並列に計算
  56. 56. 実装結果 56 • 学習 • Python+Scikit-learn パラメータを抽出 • 合成結果 • Latency 207736clock • 2.7clock/pixel • データ依存が数か所存在 • 実⾏結果 • AXI DMAでPSと接続 • udmabufでDMA制御 • HW使⽤ ︓6.22milisec / 160fps SWのみ︓1700milisec / 0.58fps • 275倍⾼速化 https://github.com/lp6m/ImageDetectionHW2
  57. 57. 弱点・感想 57 • 偽陽性の検出率が⾮常に⾼い • 線形SVMの弱点︓特徴量間の関係性を無視 • 速度は⾮常に速い • 認識する物体ごとにIPが必要 • ⼈形・障害物・信号全てはリソース不⾜
  58. 58. DNN on FPGA 58 • 様々な研究が⾏われている • あまり考えずにとりあえず試してみたい • 公開されている有名なフレームワーク • DNNDKを触ってみた
  59. 59. DNN on FPGA 59 ネットワークの圧縮 量⼦化 float32bit->Int8bit 2値化(+1, -1) XOR演算で処理 圧縮のタイミング 学習後に量⼦化を実⾏ 2値のまま学習 (精度が落ちにくい) 実装⽅法 DPU IP 重み・モデルはSWから転送 (HWの変更不要) モデルごとにIP化 (HWの変更要) オープンソース × 〇 対応ボード Xilinx Xilinx, Intel
  60. 60. DNN on FPGA 60 • DNNDKのワークフロー ­ Caffe, Tensorflow対応 ­ 右図ではdarknetからCaffeに変換 • decent ­ 重みの量⼦化 ­ キャリブレーション処理 (テストデータを使⽤して量⼦化 のチューニングを⾏う) • dnndc-dpu ­ DPU向けの命令にコンパイル
  61. 61. DNN on FPGA 61 • モデル︓YOLOv3 darknet ­ end-to-end学習が可能 ­ 学習したモデルをDNNDKで量⼦化 • チュートリアル通りにやれば簡単に動作した
  62. 62. まとめ・今後 62 • ROSをうまく活⽤し、HW/SWを平⾏開発 • HOG+ランダムフォレスト <<<< HOG+SVM • DNNDK等のフレームワークにも期待 • 今後 • 物体認識の改善 • とりあえず有名フレームワークでの⼈形認識 • 余裕があれば⾃前実装にも挑戦したい • 有名ROSパッケージのHW実装
  63. 63. エピローグ
  64. 64. Competition結果 • FPT2018にてZytleBot優勝︕ • 14チーム中3チームがROS採⽤ ­ 半数以上のチームがロボットが動かな かった中、ROSを使っていたチームは 全て動作、内2つが決勝進出 • HEART2019でも2連覇︕ 64
  65. 65. Publication!?? 65 FPT2018 HEART2019 DATE2019 U-Booth FPL2019 Demo Night ROSCon JP 2019 https://roscon.jp/
  66. 66. (just)DesignからResearchへ︖ • 教育効果とそのコスパはとても良い • 研究室内でもFPGA設計の知⾒が蓄積されてきた • “research” に繋がっているか︖︖ ­ 既存技術を使った/組み合わせただけ ­ 実装上の⼯夫もあまり無い/性能を稼ぐ必要が無い üそもそも⾔うほどシビアなアプリじゃないですね,,, ­ 少なくとも “framework” あるいは “methodology” にはしないといけない この辺り,皆さんのご意⾒を伺いたいですm(_ _)m 66

×