このリポジトリでは、5th AI Edge Contest に向けて実装したシステムのソースコードを公開する。
- 車両前方カメラの撮影動画から物体の写る矩形領域を検出し、追跡するアルゴリズムを作成する
- RISC-Vをターゲットのプラットフォーム(Ultra96-V2)に実装し、RISC-Vコアを物体追跡の処理の中で使用する
- TFlite の delegate 機構を用いて FPGA にアクセラレータを実装した。(4th AI Edge Contestで開発したものを修正して用いた)
- RISC-V は scratch から開発した rv32emc に対応する CPU core を実装した。
- アクセラレータ 及び rv32emc core は SystemVerilog で記述した。
- 推論アプリは PYNQ Linux (Ubuntu20.04) 上で実行する python で実装し、トラッキングアルゴリズムを rv32emc 上の C で実装した。
詳細は doc/レポート 参照
./infer/ →推論実行アプリケーション
- python で記述した推論アプリケーション。
- Object Detection 推論ネットワークは TF2 の SSD mobilenetv2 をベースに今回の課題に合わせて転移学習し、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 のファームウェア
- 論理シミュレーション環境、論理合成環境。
├─ infer Inference application
│ └─ infer_video.py
├─ tensorflow_src
│ └─ tflite_delegate Delegate interface sources (C++)
└─ tfacc_i8 FPGA design sources
├─ bd ZYNQ block design
├─ 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
└─ syn Logic synthesis environment