近年、畳み込みニューラルネットワーク(CNN)ベースの方法は、多数のアプリケーションで大きな成功を収めており、コンピュータービジョンで最も強力で広く使用されている手法の1つです。ただし、CNNベースの方法は計算集約的でリソースを消費するため、スマートフォン、スマートグラス、ロボットなどの組み込みシステムに統合するのは困難です。 FPGAはCNNを高速化するための最も有望なプラットフォームの1つですが、オンチップメモリサイズが制限されているため、CNNのFPGAアクセラレータのパフォーマンスが制限されます。本論文では、画像分類のための組み込みFPGA上でCNNアクセラレータを設計するためのフレームワークを提案します。提案されたフレームワークは、CNNのFPGAリソース対応設計スペース探索用のツールを提供し、ターゲットFPGAにプログラムされるCNNのハードウェア記述を自動的に生成します。このフレームワークは、3つの主要なバックエンドで構成されています。ソフトウェア、ハードウェア生成、およびシミュレーション/精度調整。ソフトウェアバックエンドは、CNNを設計し、利用可能なハードウェアリソースに従ってトレーニングするための設計者向けのAPIとして機能します。 CNNモデルを使用して、ハードウェアバックエンドは必要なハードウェアコンポーネントを生成し、それらを統合してCNNのハードウェア記述を生成します。最後に、シミュレーション/精度調整バックエンドは、レイヤ間の精度単位を調整して、分類エラーを最小限に抑えます。 CNNアクセラレータ(FPGA)で16ビット固定小数点データを使用し、ARMプロセッサで実行されているまったく同じソフトウェアバージョン(32ビット浮動小数点データ)と比較しました。加速(FPGA)バージョンの分類で約3%の精度低下が発生します。その見返りとして、FPGAのアクセラレーションバージョンで分類することにより、最大15.75倍の高速化を実現しました。
In recent years, Convolutional Neural Network (CNN) based methods have achieved great success in a large number of applications and have been among the most powerful and widely used techniques in computer vision. However, CNN-based methods are computational-intensive and resource-consuming, and thus are hard to be integrated into embedded systems such as smart phones, smart glasses, and robots. FPGA is one of the most promising platforms for accelerating CNN, but the limited on-chip memory size limit the performance of FPGA accelerator for CNN. In this paper, we propose a framework for designing CNN accelerator on embedded FPGA for image classification. The proposed framework provides a tool for FPGA resource-aware design space exploration of CNNs and automatically generates the hardware description of the CNN to be programmed on a target FPGA. The framework consists of three main backends; software, hardware generation, and simulation/precision adjustment. The software backend serves as an API to the designer to design the CNN and train it according to the hardware resources that are available. Using the CNN model, hardware backend generates the necessary hardware components and integrates them to generate the hardware description of the CNN. Finaly, Simulation/precision adjustment backend adjusts the inter-layer precision units to minimize the classification error. We used 16-bit fixed-point data in a CNN accelerator (FPGA) and compared it to the exactly similar software version running on an ARM processor (32-bit floating point data). We encounter about 3% accuracy loss in classification of the accelerated (FPGA) version. In return, we got up to 15.75x speedup by classifying with the accelerated version on the FPGA.