4-02 vgg-2層目のEXCEL化

●1層目比べて2層目はチャネル数や係数の数が格段に増える

 vgg-1層目は入力が3チャネルでしたが2層目は入力が
64チャネルになります。また2層目は出力も64チャネルあるので係数の数は64x9x64 = 36,864になります。

 1層目と同じように2層目を設計すると回路規模が巨大になるので、「入力画像のビット数を減らす」、「係数の種類を減らす」といった工夫が必要になります。

●2層目の重み係数値は4種類のみ

 vgg-2層目をEXCEL化します。これをダウンロードして開きましょう。

 シートは1つ(W2_Bias)だけで、これは重み係数のシートです(図4‐15)。入力は64チャネルあり、カーネル(2次元フィルタ)が3x3=9なので64x9 = 576行、出力は64チャネルあるので64列あります。
 係数が大量にあるので各値を-4, -1, +1, +4の4種類に制限しています。全て2の累乗なので
ビットシフトで乗算を達成できます(乗算器の節約になる)。またこの層もバイアスは省略するのでありません。


図4-15 畳み込み2層目は係数を4種に

●入力画像はVBAで転写する

 EXCELには重み係数シートのみ存在し、入力画像がありません。「開発」タブからVisual Basicをクリックし、Module01を実行します。するとlay1out_00.csv〜lay1out_63.csv(1層目の出力、これを解凍して同じディレクトリに置く)が新しいシートに転写され、それら(inCh00〜inCh63)が2層目の入力になります(図4‐16)。なお、1層目の出力は300×300ですが「
パディング」を施すことにより302×302画素になっています。

 入力値の範囲は0〜31(符号なし5ビット)に制限されています(1層目のReluでリミッタを施した)。ビット数を削減し、ハードウエアの規模を減らすのが目的です。


図4‐16 2層目の入力は64チャネル。値は0〜31の範囲。パディングで302×302になる

 その後はModule02〜08を順番に実行していきます。図4‐17はModule02の実行結果、im2col00〜63が生成されています(畳み込み用に画素の並び替え)。


図4‐17 im2col00〜63の自動生成

 EXCELのシートが多すぎるとパソコンのメモリを圧迫します。inCh00〜63はもう必要ないのでこの時点で削除するとよいかもしれません(図4‐18)。


図4‐18 im2col00〜63を生成したらもうinCh00〜63は要らない


次のページへ



目次へ戻る