shin-yamashita / 6th-AI-Edge-Contest

RTL implementation of TFlite FPGA accelerator and RISC-V controller. 3D Object Detection based on LiDAR Point Clouds.

Home Page:https://shin-yamashita.github.io/6th-AI-Edge-Contest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

6th AI Edge Contest

このリポジトリでは、6th AI Edge Contest に向けて実装したシステムのソースコードを公開する。

課題

  • 車両前方の画像および全方位の点群データから、3D物体検出を行うアルゴリズムを作成
  • 開発したアルゴリズムを、RISC-Vを搭載したプラットフォームに実装

TFlite delegate と rv32emc を用いた実装

  • 今回の課題に対し、TensorFlow Lite(以下TFlite) の delegate 機構を用いた FPGA アクセラレータを開発した
    (第5回コンテストで用いたものを out channel 4並列実行するよう修正して用いた)
  • RISC-V は rv32emc に対応する CPU core を scratch から開発した
    (第5回コンテストで用いたものに fpu を組み込んだ。fpu は整数レジスタを用いる形式"Zfinx"とした)
  • アクセラレータの実行制御と、lidar data から BEV 画像を生成する pre 処理を1つの RISC-Vで行った
  • FPGA への実装は、アクセラレータ、RISC-V core とも SystemVerilog を用いた RTL 記述で行った
  • 推論ネットワークは Super-Fast-Accurate-3D-Object-Detection-PyTorch1 をベースに学習を行い、pytorch → TFlite 変換の後 8bit 量子化を行った
  • アプリケーションは TFlite の python インターフェースと python C API を用い、RISC-V での BEV 画像生成処理は C言語で開発した

詳細は doc/ 参照

  • python で記述した推論アプリケーション。
  • Xilinx KV260 ボード上で FPGA に delegate 実行する。
  • PC 上では ハードウェア検証用 Reference model に delegate 実行する。
  • Object Detection 推論ネットワークは SFA3D をベースに今回の課題に合わせて学習し、int8 量子化した。

./tensorflow_src/tflite_delegate/ →TFlite delegate interface

  • 推論アプリから delegate API を介して C++ reference model または FPGA アクセラレータに実行委譲するインターフェース関数のソース。
  • Conv2d, depthwiseConv2d の2種の演算を delegate する。
  • C++ reference model は tflite の チャネルごとの int8 量子化 で実装した。
  • FPGA アクセラレータはチャネルごとの int8 量子化のみに対応する。

./tfacc_i8/ →FPGA sources

  • アクセラレータ 及び rv32emc の RTL ソース。
  • rv32emc のファームウェア
  • 論理シミュレーション環境、論理合成環境。

files

├─ app                Inference application
│ └─ infer.py
├─ tensorflow_src
│ └─ tflite_delegate    Delegate interface sources (C++)
└─ tfacc_i8             FPGA design sources
  ├─ firm               Firmware for rv32emc (C)
  │ └─ rvmon
  ├─ hdl                HDL sources
  │ ├─ acc              Accelerator sources (SystemVerilog)
  │ ├─ rv32_core        rv32emc sources (SystemVerilog)
  │ ├─ tfacc_cpu_v1_0.v Controller top design
  │ └─ tfacc_memif.sv   Data pass top design
  ├─ ip                 Xilinx ip
  ├─ sim                Logic simulation environment
  └─ kria_syn           Logic synthesis environment

推論実行結果

app / infer.py 実行結果
320x320 BEV 画像と検出結果の heatmap
【国立大学法人東海国立大学機構名古屋大学・一般社団法人人間機械協奏技術コンソーシアムのデータセットを利用】
example-anime

References

License

Footnotes

  1. https://github.com/maudzung/SFA3D ^1 SFA3D

About

RTL implementation of TFlite FPGA accelerator and RISC-V controller. 3D Object Detection based on LiDAR Point Clouds.

https://shin-yamashita.github.io/6th-AI-Edge-Contest/

License:Apache License 2.0


Languages

Language:SystemVerilog 46.7%Language:C 19.0%Language:C++ 15.8%Language:Tcl 10.0%Language:Python 3.7%Language:Verilog 2.4%Language:Makefile 0.9%Language:Shell 0.7%Language:Starlark 0.3%Language:Assembly 0.3%Language:Pascal 0.1%