低価格FPGAを用いた文字認識AI推論の全体像FPGAにニューラルネットワークを実装する(1)(2/3 ページ)

» 2024年01月11日 08時00分 公開
[今岡通博MONOist]

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 推論させる手書き文字のビット列

 ちょっと見にくいので1のところだけ「#」に置き換えてみました。

 ###
 #
 #  #
##  #
 ###

 これをPCで作成したプログラムで推論させると以下のようになります。学習した4文字のうち「D」と推論しました。

####
 #  #
 #  #
 #  #
 ###

Copyright © ITmedia, Inc. All Rights Reserved.