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.

Fpga robot car

1,087 views

Published on

FPGAに実装したCNNを使用して白線間を走行するミニ・ロボットカーの製作

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Fpga robot car

  1. 1. FPGAに実装したCNNを使用して白線間 を走行するミニ・ロボットカーの製作 筑波大学システム情報系技術室 小野 雅晃 1 本研究は,科学研究費補助金「奨励研究」(課題番号17H00372)の助成を受けて 行った
  2. 2. 自己紹介 2  FPGAの部屋  2005年5月から  4,141記事(2018 年4月21日現在)  筑波大学、技術 職員  今年60歳、還暦  定年退職
  3. 3. CNNで白線間を認識して走る ミニ・ロボットカー  平成28年度  カメラを使用した画像認識により白線間を走行するロ ボットカーの製作  ガボール・フィルタにより、白線を認識して走るミニ・ロボッ トカーを発表  平成29年度  ガボール・フィルタによる白線認識を、畳み込み ニューラルネットワーク(CNN)に変更した  カメラ画像をCNNで解析し白線間を走行  CNNはFPGAに実装した 3
  4. 4. CNNの出力数と層構成  CNNを使用して、カメラ画像により白線の状況を 認識して、直進、左旋回、右旋回のいずれかを出 力  CNNの層構成  畳み込み層-ReLU-マックス・プーリングー全結合 層-ReLU-全結合層  「ゼロから作るDeep Leanning」の第7章の層構成と同 じ 4
  5. 5. CNNの学習と推論のベース 5  学習は「ゼロから作る Deep Learning」のPython コードをそのまま利用  推論の「ゼロから作る Deep Learning」のPython コードを適当なビット幅に 量子化するように変更し て精度を確認  複数のビット幅で精度を 確認 オライリー・ジャパン 「ゼロから作る Deep Learning」の表紙を引用
  6. 6. 量子化方法(全結合層の場合) 6  学習はそのまま浮動小数点演算で学習  推論のみ 重みとバイアス、層の出力を量子化  量子化方法(forward_int())  小数部のビット分を掛け算(float型)  四捨五入してint型に変換し、小数点以下切り捨て  量子化ビット長で飽和演算  float型に変換  掛け算した分を割り算で戻す(float)  量子化した値で内積を取る(float演算)  再び量子化
  7. 7. CNNの学習用データの例 7  白線走行の学習データ例 左旋回 直進 右旋回 • 800x600ピクセルのミニ・ロボットカーの車載カメラ 画像
  8. 8. 白線データの用意 8  77枚の学習画像と74枚のテスト画像を別に用意 (800x600ピクセル)  画像を加工して増やす(imagemagic)  コントラストを変更  ぼかす  ノイズを加える(ガウス、インパルス、ラプラシアン)  学習画像-1,386枚、テスト画像ー1,332枚  サイズ変更(60X45ピクセル) 0.075倍  白黒変換  白線の部分を切り取る(56X10ピクセル)  1枚の画像につき25枚  学習画像ー34,650枚、テスト画像ー33,300枚  精度は93%程度
  9. 9. Vivado HLSを使用してCからHDLへ 9  CNNの推論をCで書き直した  Vivado HLS(Xilinx社のFPGA用高位合成ツール)を使 用してCコードをHDLに変換してIP化した  重みやバイアスはCのヘッダとして実装  直進、左旋回、右旋回という情報を出力するCNNのIP (Intellectual Property)コアを作成  推論時間約1.94ms、515fps  チューニング後の推論時間約96.3us、10,400fps  約20倍高速になった(オーバースペック)  ただしチューニング後のCNN IPは実機では未検証
  10. 10. ミニ・ロボットカー 10  Digilent社のZYBOボードを使用した全長30cm程度 のロボットカー(ZYBOtベース)  ハード(FPGA内の回路)、ソフト共に独自開発  ZYBOボード  Xilinx社のARMプロセッサ(Cortex-A9デュアル)+ FPGAチップ  Zynq-7010  2つのCortex-A9でUbuntu14.04が動作  ソフトウェア実装後にハードウェアにオフロードが簡 単に行える
  11. 11. ミニ・ロボットカーの写真 11
  12. 12. ミニ・ロボットカーのブロック図 12
  13. 13. FPGAとARMプロセッサの動作 13 FPGA
  14. 14. 動画デモ 14 動画デモは「カーブ、直線用白線間走行用畳み込みニューラ ルネットワーク18(ミニ・ロボットカーでの走行テスト)」参照 http://marsee101.blog19.fc2.com/blog-entry-4021.html
  15. 15. まとめ 15  白線間走行用畳み込みニューラルネットワークを FPGAに実装  ミニ・ロボットカーに白線間走行用畳み込み ニューラルネットワークを搭載  ミニ・ロボットカーで白線間を走行することができ た

×