星の本棚

サイエンス、テクノロジー、エンジニア関連情報のオンラインノートです。

ニューラルネットワーク / ディープラーニング

ニューラルネットワーク [Neural Network] / ディープラーニング [Deep Learning]

ニューラルネットワークディープラーニングに関してのマイノートです。今後も随時追加予定です。

s_30514787-10f19028-9b57-11e7-8091-de114932fd6a

尚、本記事内容に関連した Python & tensorflow ライブラリを用いた実装コード集は、以下の GitHub レポジトリにおいてあります。

github.com

又、より一般的な機械学習に関しては、以下の記事に記載しています。

yagami12.hatenablog.com

目次 [Contents]

  1. 概要 [Overview]
    1. 全体 MAP 図
    2. ニューラルネットワークの概要
    3. ニューラルネットワークの主動作
    4. 活性化関数 [activate functions]
      1. sigmoid, tanh, softsign
      2. Relu, Relu6, softplus, ELU
        1. ReLu 関数による勾配消失問題 [vanishing gradient problem] への対応と softmax 関数
    5. 学習方法の分類
      1. 教師あり学習 [supervised learning] と教師なし学習 [Unsupervised learning]
      2. バッチ学習 [batch learning] とオンライン学習 [online learning]
      3. 強化学習 [reinforcement learning]
      4. 転移学習 [transfer learning]
    6. ニューラルネットワークにおける損失関数(評価関数、誤差関数)
      1. ① 回帰問題の為の損失関数(評価関数、誤差関数)
      2. ② 分類問題の為の損失関数(評価関数、誤差関数)
  2. パーセプトロン [Perceptron]
    (階層型ニューラルネットワーク、フィードフォワード型構造)
    1. 単純パーセプトロン [Simple perceptron]
      1. 単層パーセプトロンのアーキテクチャ [architecture]
      2. 誤り訂正学習 [error correction learning rule](パーセプトロンの学習規則 [perceptron learing rule] )
        <教師あり学習、オンライン学習>
        1. 使用例
      3. 最急降下法 [gradient descent method] による学習(重みの更新)
        <教師あり学習、パッチ学習>
        1. 使用例
      4. 確率的勾配降下法 [stochastic gradient descent method]
        1. 使用例
    2. 多層パーセプトロン [ MLP : Multilayer perceptron]
      1. 多層パーセプトロンのアーキテクチャ [architecture]
      2. 最急降下法 [gradient descent method] による学習(重みの更新)
        <教師あり学習、パッチ学習>
      3. 確率的勾配降下法 [stochastic gradient descent method]
        <教師あり学習、オンライン学習>
      4. 誤差逆伝播法(バックプロパゲーション)[Backpropagation]
        <教師あり学習、バッチ学習 or オンライン学習>
        1. 誤差逆伝播法の学習特性
          1. 初期化依存性
          2. 中間層のノードの数と識別能力
          3. 中間層の数(層の深さ)と識別能力
          4. 過学習正則化
    3. パーセプトロンによる論理演算
    4. パーセプトロンの収束定理
  3. 畳み込みニューラルネットワーク [CNN :Convolutional Neural Network]
    <階層型ニューラルネットワーク、フィードフォワード型構造>
    1. 畳み込み [convolution] 処理について
      1. 畳み込みの数学的な一般的な定義
      2. 畳み込みニューラルネットワークにおける畳み込み
      3. 畳み込みニューラルネットワークにおける畳み込み処理の具体的な例(画像データとそのフィルタ処理)
      4. より一般化した畳み込み層のアーキテクチャの元での定式化
      5. 受容野の観点から見た、畳み込み層
    2. プーリング [pooling] 処理について
      1. 平均プーリング [average pooling]
      2. 最大プーリング [max pooling]
      3. Lp プーリング [Lp pooling]
    3. THE ALL CONVOLUTIONAL NETWORK
    4. CNN と 一般物体認識
      1. 局所特徴と大域特徴
    5. 一般物体認識を学習した CNN と転移学習
    6. タイル型畳み込み [Tiled convolution]
      (プーリング層における移動不変性 [location invariant]の拡張)
    7. 逆畳み込みネットワーク [deconvolutional network]
      (CNN の可視化)
    8. VGG-16
    9. VGG-19
  4. リカレントニューラルネット [RNN : Recursive Neural Network]
    <階層型ニューラルネットワーク>
    1. リカレントニューラルネットワークのアーキテクチャの種類
      1. 隠れ層間で回帰構造をもつネットワーク
        1. 通時的誤差逆伝搬法 [BPTT : back-propagation through time]
      2. 教師強制と出力層間での回帰構造をもつネットワーク
    2. 長・短期記憶(LSTM [long short-term memory])モデル
      1. CEC [constant error carousel]
      2. 重み衝突 [weight conflict] と入力ゲート [input gate]、出力ゲート [output gate]
      3. 忘却ゲート [forget gate]
      4. 覗き穴結合 [peephole connections]
      5. LSTM モデルの定式化
    3. GRU [gated recurrent unit]
    4. 双方向 RNN [BiRNN : Bidirectional RNN]
    5. RNN Encoder-Decoder (Seqenence-to-sequence models)
    6. Attention
      1. LSTM を使用した場合の Attention
  5. 連想記憶ネットワーク(ホップフィールドネットワーク [Hopfield network] )
    (相互結合型ニューラルネットワーク [mutual connected neural networks]))
  6. Sequence-to-Sequence モデル(seq2seq)
    1. RNN Encoder-Decoder
    2. (外部リンク)Attention
    3. (外部リンク)Memory Networks [MemN]
  7. 生成モデル [generative model]
    1. GAN [Generative Adversarial Network](敵対的ネットワーク)
      1. DCGAN [Deep Convolutional GAN]
    2. VAE [Variational Autoencoder]
  8. ニューラルネットワーク、ディープラーニングによる物体検出 [object detection]
    1. R-CNN
    2. Faster R-CNN
    3. SSD [Single Shot muitibox Detecter](単発検出器)
    4. YOLO
      1. YOLO v1
      2. YOLO v2
  9. (外部リンク)ニューラルネットワーク、ディープラーニングによる自然言語処理(NLP)
  10. 参考文献

概要 [Overview]

全体 MAP図

image image image

ニューラルネットワークの概要

twitter_nn1_1_160825 twitter_nn1_2_160825

ニューラルネットワークの主動作

twitter_nn3 -1_160827

ニューラルネットワーク、より広義には機械学習は、
大きく分けて以下の2つの問題設定&解決のための手法に分けることが出来る。
① 回帰問題の為の手法。(単回帰分析、重回帰分析、等)
② (クラスの)分類問題の為の手法(SVM、k-NN、ロジスティクス回帰、等)

活性化関数 [activate functions]

修正中... twitter_nn2-1_160826 twitter_nn2-2_160826

sigmoid, tanh, softsign

活性化関数のグラフ1

活性化関数の内、sigmoid, tanh, softsign 関数の図 processingformachinelearning_tensorflow_1-2

Relu, Relu6, softplus, ELU

活性化関数のグラフ2

活性化関数の内、Relu, Relu6, softplus, ELU 関数の図 processingformachinelearning_tensorflow_1-1 ReLu関数(ランプ関数)は、x=0 にて非連続で微分不可能な関数であるが、その他の領域では微分可能なので、ニューラルネットワークにおいては、微分可能な活性化関数として取り扱われることが多い。
そして、この ReLu は、勾配が一定なので、ディープネットワークにおける学習アルゴリズムにおいて発生する、勾配損失問題 [vanishing gradient problem] に対応することが出来るのが最大の利点である。(後述)

ReLu 関数による勾配消失問題 [vanishing gradient problem] への対応と softmax 関数

勾配消失問題 [vanishing gradient problem] とは、ニューラルネットワークの層が深くなるにつれて、誤差逆伝播法等の学習の際に損失関数の勾配(傾き)が 0 に近くなり、入力層に近い層で入出力誤差が消失してしまい、うまく学習できなくなるような問題である。

この問題に対応するために開発されたのが、ReLU [rectified linear unit] や MaxOut という活性化関数である。
これらの活性化関数では、勾配(傾き)が一定なので、誤差消失問題を起こさない。従って、深い層のネットワークでも学習が可能となり、現在多くのニューラルネットワークで採用されている。

但し、これらの活性化関数を通して出力される値は、先に示したグラフのように負の値が出てきたりと、そのままでは扱いづらい欠点が存在する。

従って、softmax 関数を通じて出力を確率に変換するようにする。 この softmax 関数の式は以下のように与えられる。

{ y_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}} }

image

参考サイト : 画像処理とか機械学習とか / Softmaxって何をしてるの?

【Memo】softmax 関数と統計力学での分配関数の繋がり

ニューラルネットワークの softmax 関数の形は、
統計力学で言う所のカノニカルアンサンブルでの sub system の微視的状態を与える確率の式

{ P_n = \dfrac{ e^{\frac{E_n}{k_B T}} }{ \sum_{i=1}^{n} e^{ \frac{E_i}{k_B \times T } }  } }

の形に対応している。

この確率の式の分母を統計力学では分配関数
{ Z=\sum_{i=1}^{n}e^( \frac{-E_i}{k_B \times T} }

といい重要な意味を持つが、これは、エントロピー最大化に繋がる話しであり、
Helmholtz の自由エネルギーは、この分配関数 Z を用いて、
{ F = - k_B \times T \times \log_e Z }
で表現できるけど、これを使えば、カノニカルアンサンブルのエントロピー S が
{ S = - k_B \times \sum_{i=1}{n} P_i \times \log_e P_i }
と書ける。これはまさに、情報理論でいうとこのシャノンの情報量に対応している。

学習方法の分類

教師あり学習 [supervised learning] と教師なし学習 [Unsupervised learning]

image

バッチ学習 [batch processing] とオンライン学習 [online learning]

image

強化学習 [reinforcement learning]

image

転移学習 [transfer learning]

image

ニューラルネットワークにおける損失関数(評価関数、誤差関数)

損失関数(評価関数、誤差関数)は、モデルの出力と目的値(真の値、教師データ)との差(いいえ変えれば、誤差、距離)を計測する関数であり、モデルの学習に適用されるものである。

ここで、ニューラルネットワーク、より広義には機械学習は、
大きく分けて以下の2つの問題設定&解決のための手法に分けることが出来た。
① 回帰問題の為の手法。(単回帰分析、重回帰分析、等)
② (クラスの)分類問題の為の手法(SVM、k-NN、ロジスティクス回帰、等)

従って、損失関数も同様にして、回帰問題の為の損失関数と、分類問題の為の損失関数が存在することになる。

① 回帰問題の為の損失関数(評価関数、誤差関数)

processingformachinelearning_tensorflow_2-1 [拡大]

  • L2 正則化の損失関数は、目的値への距離の2乗で表されるので、下に凸な2次関数の形状をしており、
    目的値(この場合 0)の近くで急なカーブを描く。
    この特性が、損失関数と扱う際に優れているのが特徴である。
  • L1 正則化の損失関数は、目的値への距離の絶対値で表される損失関数である。
    その為、目的値(この場合 0)からのズレが大きくなっても(ズレの大きなに関わらず)、その傾き(勾配)は一定である。
    その為、L1 正則化は L2 正則化よりも、外れ値にうまく対応するケースが多いのが特徴である。
    又、目的値(この場合 0)にて、関数が連続でないために、対応するアルゴリズムがうまく収束しないケースが存在することに注意が必要となる。

② 分類問題の為の損失関数(評価関数、誤差関数)

クラスの分類問題の為の損失関数は、現在の学習結果が与えられたデータに対してどの程度「良い感じなのか」を定量化するために使われる。(誤差逆伝播法時の計算等)
分類問題でのニューラルネットワークの最終結果は、例えば2クラスの分類問題の場合、正解は -1 or 1(又は 0 or 1)の負例と正例となる。従って、損失関数による損失は、連続な値ではなく sign 化したもの 、即ち正解ラベルと、ニューラルネットワークの出力の符号が一致しているならば損失は 0(=分類が成功)であり、符号が一致していなければ損失は 1 となる。 processingformachinelearning_tensorflow_2-2


パーセプトロン [Perceptron]
(階層型ニューラルネットワークフィードフォワード型構造)

単純パーセプトロン [Simple perceptron]

単層パーセプトロンアーキテクチャ [architecture]

修正中... twitter_nn4 -1_160829

誤り訂正学習 [error correction learning rule](パーセプトロンの学習規則 [perceptron learing rule] )
教師あり学習、オンライン学習>

image image image

使用例

image

最急降下法 [gradient descent method] による学習(重みの更新)
教師あり学習、パッチ学習>

image image image

使用例

image image

image image

確率的勾配降下法 [stochastic gradient descent method]

image image

使用例

image image image

多層パーセプトロン [ MLP : Multilayer perceptron]

多層パーセプトロンアーキテクチャ [architecture]

image image image image image

【参考 URL】softmax関数について

https://mathtrain.jp/softmax
http://s0sem0y.hatenablog.com/entry/2016/11/30/012350

image image

image

最急降下法 [gradient descent method] による学習(重みの更新)
教師あり学習、パッチ学習>

image image image image image image image

確率的勾配降下法 [stochastic gradient descent method]
教師あり学習、オンライン学習>

image image

誤差逆伝播法(バックプロパゲーション)[Backpropagation]
教師あり学習、バッチ学習 or オンライン学習>

image image image image image

image image image

パーセプトロンによる論理演算

twitter_nn6-1_160829 twitter_nn6-2_160829

パーセプトロンの収束定理

パーセプトロンの学習は、 線形分離可能な問題であれば、有限回の学習の繰り返しにより収束する ことが証明されている。
このことをパーセプトロンの収束定理と呼ぶ。


畳み込みニューラルネットワーク [CNN :Convolutional Neural Network]
<階層型ニューラルネットワークフィードフォワード型構造>

image image

畳み込み [convolution] 処理について

畳み込みの数学的な一般的な定義

image

畳み込みニューラルネットワークにおける畳み込み

image

畳み込みニューラルネットワークにおける畳み込み処理の具体的な例(画像データとそのフィルタ処理)

image image image image image image image

参考サイト

定番のConvolutional Neural Networkをゼロから理解する#畳み込みとは

より一般化した畳み込み層のアーキテクチャの元での定式化

image image image image image

受容野の観点から見た、畳み込み層

image image image

プーリング [pooling] 処理について

image image image

平均プーリング [average pooling]

image

最大プーリング [max pooling]

image

Lp プーリング [Lp pooling]

image

THE ALL CONVOLUTIONAL NETWORK

論文URL : https://arxiv.org/abs/1412.6806
Keras での実装コード : https://github.com/MateLabs/All-Conv-Keras

従来の CNN に対して、Pooling 層を使わず Conv 層のみの構成(Pooing層 → 複数の小さい Conv 層に置き換わる)で同等 or それ以上のレベルの識別性能を持つことを主張したモデル。


回帰結合ニューラルネット [RNN : Recursive Neural Network]
<階層型ニューラルネットワーク

image image

リカレントニューラルネットワークアーキテクチャの種類

隠れ層間で回帰構造をもつネットワーク

image image image image

通時的誤差逆伝搬法 [BPTT : back-propagation through time]

image image

通時的誤差逆伝搬法によるパラメータの更新式(誤差関数が最小2乗誤差)

image image image image image

長・短期記憶(LSTM [long short-term memory])モデル

CEC [constant error carousel]

image image image image

重み衝突 [weight conflict] と入力ゲート [input gate]、出力ゲート [output gate]

image image image

忘却ゲート [forget gate]

image image image image

覗き穴結合 [peephole connections]

image image image

LSTM モデルの定式化

image image image image image

GRU [gated recurrent unit]

image image image image

双方向 RNN [Bidirectional RNN]

image image image image image

RNN Encoder-Decoder (Seqenence-to-sequence models)

image image image image image image

Attention (Seqenence-to-sequence models)

image image image image image

LSTM を使用した場合の Attention

image image image image image




生成モデル [generative model]

image

GAN [Generative Adversarial Network](敵対的ネットワーク)

image image image image

記載中...

DCGAN [Deep Convolutional GAN]

image image image image image image image

記載中...



ニューラルネットワーク, ディープラーニングによる物体検出 [object detection]

[18/05/31] 別記事(コンピュータビジョン - 一般物体検出)に移行予定

SSD [Single Shot muitibox Detector](単発検出器)

☆ モデル(アーキテクチャ

image

  • SSD の基本的なアーキテクチャは、上図のように、フィードフォワード型(順方向)の多層 CNN をベースに構成される。

  • ネットワークの最初の部分のレイヤーは、画像分類にに使用される標準的なアーキテクチャ(上図では VGG-16)に基づいて構成され、これをベースネットワークという。
    このベースネットワークで、特徴量を検出する。(特徴量はより広い領域から抽出)

  • その後のレイヤーは、マルチスケール特徴マップによる多様な物体検出のための補助的な構造であり、主な特徴 [key features] は以下のようになる。

    • 直感的には、
      「多層 CNN では、conv 層や pooling 層で、特徴マップがダウンサンプリングされて、後段に行くほど、特徴マップのグリッドサイズが小さくなるが、このことは、各々の層の特徴マップには、色々なサイズの物体を検出出来る情報が含まれていることを意味している。
      従って、SSD モデルの後段の特徴マップ(特徴レイヤー)の各グリッドでは、大きな物体の情報。前段では、小さな物体の情報を取得することが出来る。
      そして、各グリッドにおける特徴量を使用して、バウンディングボックス(BBOX)のアスペクト比、所属クラス、座標のオフセットを学習させる。」
      というのが、基本的なコンセプトである。
      image

    • 「検出のためのマルチスケール特徴マップ」
      畳み込み特徴レイヤーを、(途中で打ち切られている)ベースネットワークの最後尾に追加している。
      これらのレイヤーは、特徴マップのサイズを小さくさせ(上図)、マルチスケールでの検出の予想を可能にする。(下図)
      image
      検出を予想するための畳み込みモデルは、各特徴レイヤーにおいて異なっている。(モデル図の青線元のレイヤー)
      (※ YOLO では、対照的に1つのスケールの特徴マップを扱っている)

    • 「検出のための、畳み込み予想器」
      ベースネットワークの後尾に追加された各特徴レイヤーは、
      畳み込みフィルタ(フィルタ行列)の集合を使用して、固定の検出予想の集合を生成可能である。 p 個のチャンネルをもつサイズ m×n の特徴レイヤーに対しての、潜在的なパラメータ予想のための基本要素は、3×3×p の小さなカーネルカーネル行列)であり、
      このカーネルは、予想カテゴリ(所属クラス)の 検出スコア(物体の中心座標が含まれているなら1となるようなスコア)、
      又は、デフォルトボックスの座標に関してのオフセット値を生成(算出)する。
      又、バウンディングボックスの座標オフセットの出力値は、各特徴マップの位置に対するデフォルトボックスの位置に対して測定される。

      SSD モデルは、(前述のように)いくつかの特徴レイヤーを、ベースネットワークの最後に追加するが、
      これらの特徴レイヤーは、異なるスケールとアスペクト比のデフォルトボックスに対するオフセット値と、それに付随する確信度を予測する。

    • 「デフォルトボックスとアスペクト比(デフォルトボックスと回帰によるオフセット予想)」
      ネットワークのトップで、複数の特徴マップに関して、各特徴マップのセル(グリッド)とデフォルトボックスの集合を関連付けている。
      その対応するセル(グリッド)に対して、各デフォルトボックスの位置が固定されるように、
      デフォルトボックスは、畳み込みのやり方で、特徴マップを隙間なく敷き詰め [tile] ている。(下図参照)
      image

      各特徴マップのセル(グリッド)において、
      検出したい物体が、各 BBOX 内に存在することを示す指標である検出スコア(物体の中心座標が含まれているなら1となる)と、セル中のデフォルトボックスのオフセット値を予想する。
      このオフセット値は、具体的には、ある座標位置で k 個のボックスそれぞれに対し、
      c 個のクラスの検出スコア(所属クラスの確率)と、元のデフォルトボックスに対するオフセット値 (x,y,w,h) の4つ(x,yの中心座標2つ、幅w、高さh)を計算する。
      その結果、特徴マップに適用されるフィルタは、合計 (c+4)×k 個となり、m×n の特徴マップに対して、(c+4)×k×mn 個の出力が生成されることになる。

      幾つかの特徴マップで、異なるデフォルトボックスの形状を利用することにより、
      出力されるボックス(出力特徴マップ)の形状を、効率よく離散化 [discretize] することが出来る。

    • 「デフォルトボックスとアスペクト比の選択(デフォルトボックスと回帰によるオフセット予想)の詳細」
      異なるスケールの物体検出を取り扱うために、元画像を異なるサイズで処理し、それらの結果を結合する手法を提案している研究も存在する。
      しかしながら、この SSD のように、単一のネットワークの中の幾つかの異なるレイヤーの特徴マップを利用することで、 全ての物体のスケールについて、同じパラメータを共有しながら、同様の効果を得ることがことが出来る。
      (更に、こちらの手法では同一の単一のネットワークの使用するため、処理が軽くなるメリットがある。)

      SSD では、物体検出に下位と上位の特徴マップを使用する。
      以下の図は、SSDフレームワークで使用している2つの典型的な特徴マップ(8×8、4×4) を示している。
      (実践的には、より多くの特徴マップを小さい計算コストで使用出来る。)
      image

      又、SSD では、特定の特徴マップが、特定のスケールの物体に対応するように学習させるために、 デフォルトボックスを ”敷き詰めて” 設計されている。
      image

      より詳細には、デフォルトボックスを中心とする提案領域は、物体のスケール値、中心座標、高さ、幅が合っていないことがあるため、スケール値、幅、高さ、中心座標に回帰する畳み込み層を追加している。(BBOXの形状回帰)

      具体的には、今、m 個の特徴マップを予想に使用するケースにおいて、
      各特徴マップ k についてのデフォルトボックスのスケール image は、以下のようにして計算される。
      image

      この式より、最下位のレイヤーのスケール 0.2 と最上位のレイヤーのスケールは 0.9 となり、
      中間レイヤーのスケールは、上式に従って規則的な間隔で設定される。
      又、デフォルトボックスのアスペクト比に関しては、image の異なるアスペクト比を設定する。
      このスケールとアスペクト比により、各デフォルトボックスに対して、
      image と、高さ image が設定される。

  • 「特徴マップとデフォルトボックスについて」 image

    • SSD が訓練中に必要とするのは、
      入力画像(上図の(a))と、各物体それぞれの正解ボックス(デフォルトボックスの内、各物体が収まるボックス。上図の赤枠と青枠)のみである。

    • 各層での畳み込み処理のやり方 [in a convolutional fashion] において、
      いくつかの特徴マップでの各位置(中心座標)において、異なるアスペクト比デフォルトボックスの少数の集合(上記例では4個)を、異なるスケールの特徴マップ内(例えば、上記の (b) の 8×8 の特徴マップ内、(c) の4×4の特徴マップ内)で評価する。

    • そして、これらのデフォルトボックスそれぞれにおいて、
      形状のオフセット loc : image と、全ての物体カテゴリー image に関する確信度 conf を予想する。

      • w : デフォルトボックスの幅、h : デフォルトの高さ、cx,cy : デフォルトボックスの左上座標
    • 訓練時には、最初にこれらのデフォルトボックスと正解 [ground truth] ボックスのマッチ度を図る。
      上図の例では、2つのデフォルトボックスの内、1つ目はネコ、2つ目はイヌとマッチさせているが、
      この組み合わせは正 [positive] として扱われ、残りは負 [negative] として扱われる。

    • モデルの誤差(損失関数)は、
      位置特定誤差 [localization loss] (例えば、Smooth L1)と、確信度誤差 [confidence loss] (例えば、softmax)との間の重み付き和 [weighted sum] である。


☆ 訓練(学習)アルゴリズム

  • 「マッチング戦略」
    訓練では、どのデフォルトボックスが正解ボックスとなるのか決定する必要があり、
    その結果を元にネットワークを学習させる。
    各正解ボックスは、座標位置、アスペクト比、スケール値が異なる幾つかのデフォルトボックスから選択するが、
    これらデフォルトボックスに対して、jaccard overlap (下図)の最良値(最もエリアが重複している)で、
    各正解ボックスのマッチ度(エリアの重複度)を算出することになる。
    image
    この際、ベストマッチした(最もエリアが重複している)デフォルトボックスだけでなく、
    jaccard overlap が 0.5 の値よりも大きいデフォルトボックスを正解ボックスと判定させ、学習させる。
    これにより、正解ボックスに複数に重なり合っているデフォルトボックスについて、高いスコア予想が可能になる。

  • 「損失関数」
    SSD の損失関数は、位置特定誤差(loc)と確信度誤差(conf)の重み付き和であり、
    SSD の学習は、複数の物体カテゴリーを扱うことを考慮して行われるため2つの線形和をとる。)以下の式で与えられる。
    image

    ここで、上式の位置特定誤差 image は、
    予想されたボックス(l)と正解ボックス(g)の間の Smooth L1 誤差(関数)であり、以下の式で与えられる。
    image

    又、確信度誤差 image は、
    所属クラスのカテゴリ(c)に対する softmax cross entropy 誤差(関数)であり、以下の式で与えられる。
    image

  • ハードネガティブマイニング [hard negative mining]
    マッチング工程の後、有効なデフォルトボックスの数が多い場合多くのデフォルトボックスは、負 [negative] に判定され、正と負の訓練データの比率が不均衡になってしまう。
    (=典型的な画像の多くの面積は、背景によって占められるが、これを有効なデフォルトボックスとして採用すると、
    背景しか出力しないネットワークでも、ある程度 loss 値を下げることが出来てしまい、結果として検出能力の低いモデルになってしまう。)

    この問題に対する対策として、
    負に判定される全訓練データを使用する代わりに、これらの(訓練データとしての)デフォルトボックスに対しての誤差関数が高い順(降順)にソートし、負と正の比率が、最大でも3:1になるように、誤差関数の値が上位のもののみを選択する。
    これにより、より速くモデルが最適化され、又、安定した学習に繋がる。

  • データ拡張 [data augumentation]
    モデルを様々な物体の大きさと形状に対して、よりロバスト(堅牢)にするために、
    各訓練画像は、以下のオプションをランダムに選択し、(画像中の領域の)サンプリングを行う。

    • 元の入力画像全体を使用する。
    • 物体画像との最小の jaccard overlap が、0.1 , 0.3 , 0.5 , 0.7 , 0.9 となるように、画像中の領域(サンプルパッチ)をサンプリングする。
    • 画像中の領域(サンプルパッチ)をランダムにサンプリングする。

    この各画像中の領域(サンプルパッチ)のサイズは、元の画像サイズの 0.1倍 ~ 1.0倍で、アスペクト比は 1/2 ~ 1.0 倍である。
    但し、サンプルパッチの中に正解ボックスの中心座標が存在する場合は、正解ボックスの重複部分はそのままにする。
    (サイズやアスペクト比を元の画像から変更しない)

☆ 物体検出(推論)フェイズ

top-k filtering

クラス所属の確信度が上位 k 個のもののみを抽出する。

non-maximum suppression アルゴリズム

推論されたデータに対し、バウンディングボックスの重複防止のために non-maximum suppression アルゴリズムを適用する。

image

参考サイト:
https://meideru.com/archives/353


参考サイト

  • SSD の論文の日本語訳
    qiita.com

  • スライドの 37 ページ目から SSD の解説有り(Keras でのコード付き)

www.slideshare.net

segafreder.hatenablog.com

www.slideshare.net

www.slideshare.net



参考文献

深層学習

深層学習

  • 作者: Ian Goodfellow,Yoshua Bengio,Aaron Courville,岩澤有祐,鈴木雅大,中山浩太郎,松尾豊,味曽野雅史,黒滝紘生,保住純,野中尚輝,河野慎,冨山翔司,角田貴大
  • 出版社/メーカー: KADOKAWA
  • 発売日: 2018/03/07
  • メディア: 単行本
  • この商品を含むブログ (1件) を見る

はじめてのパターン認識

はじめてのパターン認識

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

深層学習 Deep Learning (監修:人工知能学会)

深層学習 Deep Learning (監修:人工知能学会)

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

実践 Deep Learning ―PythonとTensorFlowで学ぶ次世代の機械学習アルゴリズム (オライリー・ジャパン)

実践 Deep Learning ―PythonとTensorFlowで学ぶ次世代の機械学習アルゴリズム (オライリー・ジャパン)