Help us understand the problem. What is going on with this article?

Network in Network(NIN)を理解してみる

More than 3 years have passed since last update.

ここ数ヶ月いろいろ資料を読んでいるのだが、どうにも腑に落ちない、というか、しっくりこないのが「Network in Network(NIN)」。

正直、何をしているのかよくわからない。
説明が分かりづらい。

ということで、理解できたところまでもまとめてみました。
勘違いしているところがあれば、指摘していただけるとありがたいです。

良くわからないこと

まず見かけるのが、この図。
image1.png

その内、この部分がNIN(の一要素と思われる)。
image2.png
ここでの処理(畳み込み)が「Multilayer Perceptron Convolution(Mlpconv)」と呼ばれるらしい。

ちなみに最後の方は「Global Average Pooling(GAP)」で、こちらにまとめを書いてみたので、興味があれば参照してみてください。

で、このMlpconvで何をしているのかが分からない。
これは何なのか?→①
image3.png

これは何なのか?→②
image4.png

これは全結合?→③
image6.png

どうするとこれになるの?→④
image5.png

この辺りを解決していきたいと思います。

ヒントとなる資料

解決のヒントとなる図がこちら。
image7.png
1x1の畳み込みフィルター「Cascaded Cross Channel Parametric Pooling(CCCP)」がポイントになりそうです。

そしてもう一つ。
image8.png
この細かく書かれた情報が役立ちそうです。

解決編

では疑問点を解決していきましょう。

①最初の畳み込みフィルター

image3.png
これは何なのかということですが、左側の入力データから一部を抜き出したわけではなく、どうやら畳み込みフィルターを表しているようです。
サイズも11x11だったり7x7だったり、ストライドも2だったり1だったり、パディングもしたりしなかったりと様々のようです。

②実は厚みのある面

image4.png
で、通常は畳み込みを行った出力結果を厚みのある面で表現するのですが、なぜかNINの図では1次元の配列で表すようです。(このせいで分かりづらくなっている)

ストライドや出力チャンネル数の指定によって異なりますが、NINではだいたい、サイズが小さくなり厚み(チャンネル数)も増えているようです。

③1x1の畳み込み

image6.png
この全結合に見えるものは、実は1x1の畳み込みを行っているようです。
1x1ですのでサイズは変わらないのですが、出力チャンネル数は減らすこともあるようです。
(この「チャンネル数が減った」ということが表せていないのは問題)

この処理がCCCPなのですが、ようはチャンネル間の同じ位置の画素をPoolingしているということのようです。

④厚みのある面

image5.png
実はここで何か処理をしているわけではなく、1次元配列のように表現していたものを、ちゃんと厚みのある面に表現しなおしただけ(!)でした。

よ~く見ると、微妙にサイズが小さくなっています。(気づかないって ^^;)
image9.png
でも厚みは変わっていないという...

結論

NINは、普通の1回の畳み込みの代わりに以下の処理を行い、それを繰り返すということのようです。
1)通常の畳み込み(サイズ小、チャンネル増)
2)1x1の畳み込み ※複数回実施する場合もあり

これにより、たとえばVGGnetのような、
1)畳み込み
2)畳み込み
3)Max Pooling
の繰り返しと比べると、レイヤー数が減ることにより、処理が速くなりそうです。
(重みパラメータ数も少し減りますね)

論文(pdf)を見ると精度も悪くなさそうです。
image10.png

mine820
もうプログラムを書かなくなって久しい、元アプリケーションエンジニアのおじさんです。 C言語万能教に侵されています。 OpenGLとOpenCVとDirectShowでメシ食ってました。 たまには趣味で書いていこうかと思っています。 ※発信の内容は全て個人の見解に基づくもので、所属する組織の見解ではありません
iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした