10-02 conf-4, 5, 6層目のVHDL化(続き)

●conf-5層目はカーネルが3x3

 図10-33は積和演算の部分、出力1チャネルの1画素を計算するのに90ns x 256 = 23040nsかかります(入力256チャネル、カーネルが3x3なので)。


図10-33 入力256チャネル、カーネル3x3なので23040ns(クロック100MHz)

●乗算器1個で動かす

 図10-34は一つの乗算器で出力84チャネルの1画素を計算するようす、23040ns x 128 = 2949.12usかかっています(84chだがキリの良い128)。3x3画素なので1ライン計算するのにに2949.12us x 3 = 8.84736msかかります。


図10-34 一つの乗算器で84chの出力を計算する

●1ラインはextras-6層目と同じ

 図10-35は1ラインぶん演算して書き込む部分です。周期はextras-6層と同じ110.592msになります(8.84736ms+休み時間)。また1画面計算するにはその5倍かかります(*1)

(*1)3ラインの期間110.592ms x 3で演算して2ラインの期間110.592ms x 3休んで他の層と同期をとる。


図10-35 1ライン演算して書き込むようす

●relu.outに出力が書かれている

 conf-5層目も出力はテキストファイルに落とされます(図10-36)。3×3画素なので1画面で9行、また出力は84チャネルなのでビット幅は
10bit x 84 = 840bit になります(この層は1画素が符号付き10ビットになる)。


図10-36 各画素10ビット、符号付きであることに注意

●バッチファイルでデータ並び替え

 上図のrelu.outは各行 10bit x 84 = 840bit ですが、84は21×4であり、21というのは種族(人、馬、自動車、バイクなど)の数、4というのはBBOXの形状の数です。このデータの並びをVBAでこのように21×6列(この層は
4列)になっているのを21列に並び替えます。

@EXCELファイル(下のリンク)を開く。
AEXCELファイルの場所にvbaoutputフォルダを作成する。
Bvbaoutputフォルダにrelu.outをコピーする。
CVBAのModule20, 21を続けて実行する。
Dvbaoutputフォルダにsimsort.txtが作成される。
Esimsort.txtとPythonの結果(下のリンク)を比較する。
F下図のようにピタリ一致することを確認する。


図10‐37 どちらもカンマ区切りなのでファイル比較ソフトで比べるとよい

●conf-5層目のファイル類はここ

プロジェクトのアーカイブ
EXCEL+VBA
relu.out
Pythonの結果

次のページへ



目次へ戻る