1-03 本企画のロードマップ

 本企画では図1-17のようにディープラーニングのハードウエア化を進めます。一番上の@からスタート、一番下のGがゴールです。

@オリジナルのPythonでSSD

 まずはPythonで書かれたプログラムを普通に実行します。当然ながらプログラム内の変数(画素値など)や定数(重み係数など)は
小数になっています。その認識結果は当該書籍と同じになります。


A認識に影響が少ない処理の省略

 SSDはとても複雑なアルゴリズムなので、そのままハードウエア化するとFPGAに入りきらない可能性が大です。したがってPythonの段階で
削れる処理は削っていきます。その認識結果をオリジナルと比べ、許容範囲であることを確認します。


B整数化したPythonでSSD

 パソコンで計算するぶんには小数でよいのですが、FPGAでは小数の演算は行えません(*1)。したがってPythonの段階から
整数化して実行します。整数化によって認識率は低下しますが、それが許容範囲か確認します。
 テスト画像1枚分のデータ、重みの係数などをファイルに落とします。これらはすべて整数になっています。
 また計算の途中経過(各層の出力など)もファイルに落とします。

(*1)FPU(Floating Point Unit)を内蔵していれば行えるが、そのようなFPGAは少数派である



CEXCELに移植してSSD

 Bで得られたテスト画像一枚分のデータ、重み係数をEXCELに貼り付けます(値はすべて整数)。
 そしてPythonでの処理を
EXCELに移植し、各層の出力をPythonのものと比較します。すべて整数なので結果はピタリ一致します。


DEXCEL+VBAでVHDLを自動生成

 SSDは重み係数の数が膨大でそれらを手動でVHDL化するのは困難です。EXCELは
VBA(Visual Basic for Application)を扱えるため、それを利用してVHDLファイルを自動生成します。


Eその他を手仕上げVHDL記述

 積和演算やメモリアドレス生成回路などは
手作業でVHDL化します。SSDは多層にわたりますが回路のバリエーションは多くなく、似たような回路の積み重ねになります。


FVHDLを論理シミュレーション

 VHDLをDで自動生成、Eで手仕上げしたら論理シミュレータ(ModelSimなど)上で
シミュレーションします。
 その結果をEXCELのものと比較します。すべて整数なので演算結果、途中経過ともに
ピタリ一致します。


GFPGAに実装して物体認識

 VHDLを論理合成して
FPGAにプログラミングします。論理シミュレーションどおりに実機動作するか確認します。


●所詮は整数の掛け算と足し算・・・結果は必ず一致する。

 整数で演算する限り、PythonだろうがEXCELだろうがVHDLだろうが結果は変わりません。さらにFPGA内部をロジックアナライザ(*2)で確認しても全く同じ結果になります。

(*2)SignalTapというツールでFPGAの内部信号をパソコン上で測定することができる。


目次へ戻る