20-03 MNIST手書き文字認識のPython/Excel
●正解率は小数で99.62%
Pythonプログラム(mnist_float.py)をJupyter Labで走らせると図20-14のように99.62%になりました(走らせるたびに微妙に変わる)。この後「整数化」や「ビット削減・リミッタ追加」と進みます。 |
図20-14 Pythonを小数のまま走らせた結果
●FPGA実装のために整数化
次にPythonを整数化します(mnist_int.py)。整数化の手法はGTSRBやlisa-croppedと同じになります。実行すると正解率は99.44%になりました(図20-15)。なお、整数化前の重み係数とバイアスはこれを使っています。 |
図20-15 Pythonを整数化した結果
●FPGAに入りきるようにビット数削減
最後にビット数削減、リミッタ追加したPython(mnist_pred.py)を実行します。正解率は図20-16のように99.40%になりました。 |
図20-16 Pythonの段階でビット数を削減/リミッタ追加する
●認識結果の例を48枚
プログラムの最後に評価画像例とその判定結果が表示されます(図20-17)。背景を含めて16クラス、それぞれ3枚づつ、合計48枚ですが、全部正解しています。 |
図20-17 正解なら緑、不正解なら赤字になる。背景も含めて全部正解
●PythonをEXCEL化する
表20‐01は上記mnist_pred.pyをEXCEL化したものです。その手法はGTSRBやlisa-croppedを参考にしてください。
表20-01 各層のEXCELファイル
|
●重み係数とバイアスを生成してオーバライト
VBAで重み係数とバイアスのHDLを生成します。重み係数のHDLは各フォルダ(w1rom, w2rom,... w6rom)のファイルと置き換え、バイアスのHDLはconv_layer1〜6.vhd内のBIAS_XXと置き換えます。これらもGTSRBやlisa-croppedと同じように進めます。 |
●カメラエミュレータROM、推論ラベルパターンROMも置き換え
カメラエミュレータのHDLはcamromフォルダのファイルと置き換え、推論パターンのHDLはROM_PAT.vhdの中身と置き換えます。それらHDLの生成にはmnist_misc_gen.xlsmを使用します。このEXCELの作成法・使用法もGTSRBやlisa-croppedを参考にしましょう。
●FPGA実装へと進む
生成されたHDLをQuartusプロジェクトにオーバライトして論理合成→プログラムします。それだけで認識のようすが違ってきます(道路標識/信号機認識だったものが「MNIST手書き文字の認識」になる)。 |
次のページへ
目次へ戻る
|