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にする(人が未認識)
目次へ戻る
|