低価格FPGAを用いた文字認識AI推論の全体像:FPGAにニューラルネットワークを実装する(1)(2/3 ページ)
FPGAにニューラルネットワークを実装するプロセスを学ぶ本連載。第1回では、連載の狙いや、文字認識AIモデルの概要、どのようにFPGA上で文字認識を行うかなど全体の流れを紹介する。
FPGAの開発環境
FPGAの開発環境である「GOWIN EDA」はGOWINのWebサイトからダウンロードしてください。関連ドキュメントも同梱されていますので使い方はそれらを参照してください。なお、日本語のドキュメントもあります。
ログイン後のWebサイトのソフトウェアラインアップに「Education Edition」がありますので、それを選択してダウンロードしてください。以前は、使用しているPCのイーサーネットアダプターのMACアドレスを登録する必要があり煩わしかったのですが、ここ最近はそのようなことはないようです。GOWIN EDAは、Windows用とLinux用が用意されています。GOWIN EDAでは、ハードウェア記述言語としてVerilogHDLとVHDLが使用可能です。筆者はVerilogHDLを使っており、本連載でもVerilogHDLを使用します。
PCの環境
PCはWindows PCを使っています。バージョンはWindows 10 Pro、プロセッサはIntel Core i5-4310U、RAMは16GBで、一般的なソフトウェア開発に用いるPCと言っていいかと思います。今回の文字認識を行うニューラルネットワークの学習プログラムはC/C++言語で開発しています。C/C++言語のバージョンは「gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)」です。
学習する文字は4つ
アルファベットの大文字である「D」「C」「J」「M」を、PCのC言語で書いたプログラムで覚えこませます。これらの文字は5×5ドットの枠内で表現されています。
#### # # # # # # ### ##### # # # # ### #### # # # #### # # ## ## # # # # # # #
PCによる学習
PCでは上記の4文字を学習し、プログラムで学習データをVerilogHDLの形式で出力します。それをFPGA開発環境で取り込んでFPGAに実装します。
FPGAに実装する前に、PC側で学習済みのニューラルネットワークによって正しく推論できるかを検証します。
リスト1は推論させる手書き文字のビット列の一例です。1の並びが文字のドットを表しています。
int input[25]={ -1, 1, 1, 1,-1, -1, 1,-1,-1,-1, -1, 1,-1,-1, 1, 1, 1,-1,-1, 1, -1, 1, 1, 1,-1 };
ちょっと見にくいので1のところだけ「#」に置き換えてみました。
### # # # ## # ###
これをPCで作成したプログラムで推論させると以下のようになります。学習した4文字のうち「D」と推論しました。
#### # # # # # # ###
Copyright © ITmedia, Inc. All Rights Reserved.