10-01 conf-2, 3層目のVHDL化(続き)

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

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


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

●乗算器を2個並列に動かす

 図10-14は一つの乗算器で出力64チャネルの1画素を計算するようす、46080ns x 64 = 2949.12usかかっています。これが2個並列で動くので出力126チャネルの1画素を計算するのに2949.12us、10x10画素なので1ラインに2949.12us x 10 = 29.4912msかかります。


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

●1ラインはextra-2層目と同じ周期

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


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

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

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


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

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

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

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


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

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

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

最初のページへ



目次へ戻る