8-06 vgg-11, 12, 13層目のVHDL化(続き)
●13層目はプーリングがある
図8‐115にvgg-13層目のタイミングのイメージを示します。
13層目の入力は512ch、出力も512chです。入力は逐次処理、出力は32並列で計算します。入出力チャネル数、画素数が12層目と同じなので基本的に同じ回路ですが、この層にはプーリングがあります。 |

図8-115 vgg-13層目のタイミングのイメージ
●8ch×64並列なので出力512ch
図8‐115の上段はoutCh0,1,2,...15を計算するようすです。これら出力16chは1個の乗算器で「逐次的に」計算されます。したがって1画素の計算にかかる期間は90ns
x 512 x 16 = 737.28usになります。
1ライン19画素なので737.28 x 19 = 14.00832msで1ライン計算しますが、同図右にあるように「休み期間」が13.63968msあるので計27.648msで1ライン、1画面19ラインなので27.648ms
x 19 = 525.312msで1画面の計算が終わります。(*1)
「outCh16 to outCh31」、「outCh32 to outCh47」、...「outCh496 to outCh511」もそれぞれ1つの乗算器で計算されます。乗算器(ビットシフト型)が32個並列で16chづつ計算するので出力は512chになります(入力も512ch)。
またこの層はプーリングがありますが、画素数は変わりません。19x19画素をパディングで21x21として3x3のエリアの最大値をとります。その結果画素数は19x19のままです。
(*1)実際は27.648ms x 18 + 14.00832 = 511.67msで1画面の計算が終わる。518.4msより少し短い |
●12層目の出力が13層目の入力になる
12層目のシミュレーション結果relu.outの名前を変えてlay13.inとし、それが13層目の入力になります。図8‐116のようにRAM_X1_0〜3(入力バッファ、4ラインぶん)にlay13.inの内容が書き込まれます。
conv_layer13は入力バッファからの画像を処理してRAM_X2_0〜3(出力バッファ、4ラインぶん)に書き込みます。1ライン19画素なのでアドレスは32、出力512chなのでデータ幅は5bit x 512 = 2560bitになります。 |

図8-116 13層目のブロック図
次のページへ
目次へ戻る |