サンプルプロジェクトのMulScalarについて

169 views
Skip to first unread message

kitte

unread,
Jul 24, 2019, 3:41:17 AM7/24/19
to Neural Network Console Users (JP)
お世話になっております。

サンプルプロジェクトのResNetに関して質問です。
Inputの次のレイヤーにMulScalarXがありますが、
これは何をしているのでしょうか。

MulScalarXとAddScalarXだけ抜き出して出力を見てみると
画像が真っ黒になるので、何をしているのかよくわかりません。

ご教示のほどよろしくお願いいたします。

小林由幸

unread,
Aug 11, 2019, 10:06:40 PM8/11/19
to Neural Network Console Users (JP)
入力した画像の輝度を平均0、分散1付近に正規化しています。

DATASETタブのImageNormalizationがチェックされている状態では、
画像ファイルから入力した画像の輝度(0~255)は1/255倍することで0.0~1.0に正規化されます。
ResNetサンプルプロジェクトなどではこの正規化はOFFになっており、0~255の値がそのまま入力されますので、MulScalarXとAddScalarXによって正規化を行っています。

Neural Network Consoleの評価画像は0.0~1.0の範囲の出力値が輝度0~255になるように出力されますので、ImageNormalizationのチェックを外した状態でMulScalarXとAddScalarXだけを行うと、平均輝度以下は黒くなり、平均輝度以上、1.0以下の部分が輝度0~255になったような画像が得られるかと思います。

kitte

unread,
Sep 5, 2019, 7:55:40 PM9/5/19
to Neural Network Console Users (JP)
ご教示ありがとうございます。

>>入力した画像の輝度を平均0、分散1付近に正規化しています。
  →申し訳ありません。上記の原理どのような内容か参考サイトなど
   あるでしょうか。
   なぜ-1.99などを足しているのか、理解できておりません。

マニュアルに記載のあるネットワーク中で1/255をかけて0.0~1.0に正規化するのとは
上記の正規化では、平均0、分散1付近に収めるほうが精度が高いのでしょうか。

昔のサンプルはなかったですが、追加した方が精度が上がるのでしょうか。

2019年8月12日月曜日 11時06分40秒 UTC+9 小林由幸:

小林由幸

unread,
Sep 10, 2019, 9:00:51 PM9/10/19
to Neural Network Console Users (JP)
サンプルプロジェクトにおける-1.99という値は、ILSVRC2012、ImageNetデータセットの学習画像を用い、全画素の輝度の平均と分散を求め、そこからおよそ平均0、標準偏差1に正規化するよう決められた値になっています。

同様の処理をご自身のデータセットで行うには、同様に全画素で平均と分散を求め、平均を引き、標準偏差で割るとよいかと思います。

入力の正規化は必ずしも必須ではありませんが、行っておいた方が重み係数の初期化や、正規化に気を使わなくても済むというメリットがあります。
Reply all
Reply to author
Forward
0 new messages