FC2カウンター FPGAの部屋 白線追従走行用畳み込みニューラルネットワークの製作20(CNN IPの戦略を考える)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

白線追従走行用畳み込みニューラルネットワークの製作20(CNN IPの戦略を考える)

白線追従走行用畳み込みニューラルネットワークの製作19(Cコードの合成、IP化)”の続き。

前回で、直進のみだけど白線追従走行用畳み込みニューラルネットワークの推論用Vivado HLSのプロジェクトは完成した。ただしまだ畳み込みニューラルネットワークを固定小数点数で作って性能を確認しただけで、どのようにFPGA上の回路にするかの検討はまだしていない。今回は、どのようにFPGA上の回路にするかの検討を行っていこう。

まずは、白線追従用畳み込みニューラルネットワークを実装する基板だが、ZYBO に実装してみようと思っている。

次に実装方法の検討をしてみよう。
今のトレーニング画像の生成方法を下に示す。

1. 800x600の白線画像を1/13.333...(0.075)の60x45に縮める。
2. 60x45のうちの下から60x14を中間BMPファイルとしてセーブ
3. 60x14のうちの56x10を切り出してBMPファイルに。1つにつき5x5の25個できる。
4. 左右直進をやる。


よって、CMOSカメラからの画像は、800 x 600 ピクセルなので、60 x 45 にリサイズして白黒変換する必要がある。これはDMAマスタのIO インターフェースでVivado HLS のHLS ビデオライブラリの resize() を使用して、作ってみようか?
残念ながら、1/13.333... では割り切れないので、カメラ画像全体をDMA する必要があるようだ。そのリサイズした画像を白線追従用畳み込みニューラルネットワーク回路にAXI4 Streamで入力することにする。
畳み込みニューラルネットワークを使用した白線追従用回路を下の図に示す。
wlt_cnn_98_170831.png

上の図で DMAw4Gabor のDMAエンジンは、カメラの画像フレームの偶数フレームと奇数フレームのDMA領域を分けてDMA を行う。それを下の図に示す。偶数フレームのDMA領域が frame buffer 0 で奇数フレームは frame buffer 1 にDMA する。カメラの画像を書き込んでいないほうのフレームバッファから「1/10 にリサイズして白黒変換」(resize_gray)が画像をDMAしてリサイズして白黒変換を行う。そのデータをAXI4 Streamで「白線追従用畳み込みニューラルネットワーク」に入力して、直進、左旋回、右旋回の判定をすることにしよう。
wlt_cnn_99_170831.png
  1. 2017年08月31日 05:23 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3901-bcbd7834
この記事にトラックバックする(FC2ブログユーザー)