2-01 15層目以外のバイアス加算の省略

 SSDはとても複雑なアルゴリズムなので、そのままハードウエア化するとFPGAに入りきらない可能性が大です。したがってPythonの段階で重要度の低い処理は削っていきます


●バイアス加算は本当に必要か?

 畳み込みニューラルネットワークには「
バイアス加算」という作業があります(ここに簡単な説明)。ここではバイアス加算が認識に与える影響力を確認していきます。


●各層のバイアスを0にして結果を確認

 Pythonをリスト2‐01のように変更していきます。畳み込み1層目のバイアスを0、次は2層目のバイアスを0、その次は3層目…と進めていきます。


リスト2‐01 Pythonのバイアス配列を0で埋める


●畳み込みvgg15層目だけ残してバイアスを0にする

 vggと呼ばれる畳み込み層は1〜15、extras層が1〜8、conf層が1〜6、loc層が1〜6と多層ありますが、ほとんどはバイアス0でも認識結果に大差がないことが分かってきます。

 ただしvgg15層目だけは重要なようです。「
vgg15層目以外のバイアスを0」にした際の認識結果を図2-01、02に示します。


図2-01 畳み込みvgg15層目だけバイアスを残す(1)


図2-02 畳み込みvgg15層目だけバイアスを残す(2)

 オリジナル(バイアスすべて有効、ここに結果)のスコアと比べても大差ないことが分かります。


●vgg15層目のバイアスがないと認識率がぐっと落ちる

 ちなみにvgg15層目もバイアス0(すなわち全層のバイアスを0)にすると図2-03、04のように認識できない物体が散見されます。この層だけはバイアスを残すことにします。


図2-03 全層のバイアスを0にする(馬が未認識)


図2-04 全層のバイアスを0にする(人が未認識)



目次へ戻る