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

Global Average Pooling(GAP)を理解してみる

More than 3 years have passed since last update.

Deep Learningのテクニックの一つであるGlobal Average Pooling(GAP)を、なるべくわかりやすいように(自分がw)解説してみます。

基本となるネットワークモデル

今回はVGG-16をベースに考えてみます。
vgg16.png

ポイントとなるのは、最後の全結合の部分です。

現状は、max poolingにより、7x7x512のデータができています。
これを1x1x4,096に全結合してますので、25,088×4,096=102,760,448の重みパラメータが存在しています。
image1.png

Global Average Poolingとは

各チャンネル(面)の画素平均を求め、それをまとめます。
そうすると、重みパラメータは512で済みます。
image2.png

評価

論文(pdf)によると、識別率に問題はない模様です。
(反対に良いぐらい!)
image3.png

使用するメモリ量は少なく、識別率もよいなんて、いいことづくめですね!

おまけ

このGAPを利用した物体位置の検出がClass Activation Mapping(CAM)になります。
この辺りは

に書きましたので、参考にしていただければと思います。

mine820
もうプログラムを書かなくなって久しい、元アプリケーションエンジニアのおじさんです。 C言語万能教に侵されています。 OpenGLとOpenCVとDirectShowでメシ食ってました。 たまには趣味で書いていこうかと思っています。 ※発信の内容は全て個人の見解に基づくもので、所属する組織の見解ではありません
ark-info-sys
最新IT技術を利用したソフト開発、パッケージ製品の企画開発を中心に、お客様に満足いただけるサービスをご提供いたします。
https://www.ark-info-sys.co.jp/
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