テクノロジー

今更聞けない「GoogLeNet」とは?基本や使い方を解説してみた

今更聞けない「GoogLeNet」とは?基本や使い方を解説してみた

近年、AI(人工知能)による画像認識技術の向上に畳み込みニューラルネットワークと呼ばれる技術が積極的に活用されていますよね。そのなかでも注目を集めているのがGoogLeNetという畳み込みニューラルネットワークの一種です。GoogLeNetはイメージ分類(イメージをカテゴリに分類する技術)において多大なる効果を発揮し、質の高い画像認識が可能となっています。

しかしながら、最先端の技術を追っていくのは労力がかかるので、いざ実践しようとなっても負担が大きいもの。そのため、GoogLeNetについて「実はGoogLeNetについて知らない・・・」という人もいるのは無理もありません。とはいえ、一般的に認知されていることを誰かに聞くのは誰しも恥ずかしく、できるなら自分で調べて知識をつけたいところ。

そこで今回は、GoogLeNetについて基本的な知識から使い方まで徹底的に解説します。まずは、GoogLeNetはどのようなものなのかについて解説しましょう。

GoogLeNetとは

画像分類のイメージ
GoogLeNetとは2014年の画像分類チャレンジコンテストISLVRC-2014で優勝したモデル(複数の層を組み合わせたネットワーク)です。その実態は22層という多数の層を持った「事前学習済みの畳み込みニューラルネットワーク」になります。そして、GoogLeNetが誇る最大の特徴はInceptionモジュールでしょう。

GoogLeNetでは複数の畳み込み層(入力された元の画像を畳み込み処理する層)やpooling層(重要な情報を保持したまま入力された元の画像を縮小する層)で構成されたInceptionモジュールという小さなネットワークを作っています。このInceptionモジュールをさらに重ねていくことで1つの大きな畳み込みニューラルネットワークを構成しているというのが最大の特徴。これにより、畳み込み層が深くなると画像サイズが小さくなるという従来の畳み込みニューラルネットワークの欠点を改善しました。

もう1つの特徴として、GoogleLeNetはGlobal Average Pooling(GAP)を導入しています。従来最後の層では全結合層と呼ばれる層が用いられてきましたが、過学習(汎用性が低くなる現象)がしばしば問題となっていました。そこで、GoogLeNetでは全結合層の代わりにGAPを採用することで、GoogLeNetでは過学習を減少させています。

ここまで主にGoogLeNetの特徴について解説しましたが、「事前学習」とはどういうことか気になる人もいるでしょう。次に、「事前学習済みの深層ニューラルネットワーク」について解説します。

事前学習済みの深層ニューラルネットワークとは何か

ニューラルネットワークのイメージ
深層ニューラルネットワークとは、人間の脳を模した数理モデルであるニューラルネットワークを、4層以上の層を持つディープラーニングに対応させて層を深くさせたニューラルネットワークのことです。そのため、畳み込みニューラルネットワークは深層ニューラルネットワークの一種なので、GoogLeNetとは事前学習済みの深層ニューラルネットワークと考えられるでしょう。

なお深層ニューラルネットワークには他にも、入出力するデータが同じという特徴を持ったオートエンコーダや、自然言語処理(日本語や英語など人間が普段使う言語に対する処理)などに使われる再帰型ニューラルネットワークなどが存在します。

深層ニューラルネットワークについて一通り説明したところで気になるのが「事前学習」というワードですよね。事前学習とは各層ごとに学習をさせたうえでそれぞれをつなげていくという技術で、これにより深く学習させる際に生じていた勾配消失問題(層の途中で学習が進まなくなる問題)を解消する手法の1つです。そのため「事前学習済みの深層ニューラルネットワーク」とは勾配消失問題を回避するように設計された4層以上のニューラルネットワークで、事前学習済みの畳み込みニューラルネットワークであるGoogLeNetは勾配消失問題を回避するように設計された畳み込みニューラルネットワークとなります。

GoogLeNetが勾配消失問題を回避するようになっていることがわかったところで、そもそもGoogLeNetにはなにができるのか解説しましょう。

GoogLeNetは何ができるのか

猫のイメージ
GoogLeNetは主に画像認識の分野で活躍するモデルですが、その中でもイメージ分類を得意としています。GoogLeNetは、ISLVRCに優勝するよう能力の高さを活かし、イメージ分類で医用画像の観点から医療への貢献が期待されたり、人検出や顔検出への応用がされたりしています。なお、イメージ分類は画像分類とも言い換えることができ、画像分類という言葉の方が比較的メジャーです。

イメージ分類とは画像の要素を読み取り、どのカテゴリに分類されるのか判断する技術です。例えば、ネコが草むらのねこじゃらしで遊んでいる写真を人間が見たとき、画像内にある要素を「ネコ」「草むら」「ねこじゃらし」とのように読み取って、カテゴリに分類しますよね。これをAI(人工知能)で実現するのがイメージ分類で、GoogLeNetを始めとした畳み込みニューラルネットワークの得意とする分野です。

イメージ分類の仕組みを「シンプル」に説明すると、元の画像を入力し、元画像を分類しやすいように変換して、コンピュータ側が理解しやすい形式で要素を抜き出して分類し、その分類結果をもとに人間が設定したカテゴリに整えた形で分類する、という流れになります。しかし実際にはもっと複雑な処理がなされており、大量の画像や重い画像に対する処理スピードを向上させる余地が残されています。そのため、さまざまな研究チームがこぞってより良いモデルを開発し、ISLVRCのようなコンテストが開催されるようになりました。

GoogLeNetでできることがわかったら、実際に使えるのか気になりますよね。ここから、GoogLeNetのダウンロードのしかたや使い方について解説しましょう。

GoogLeNetのダウンロードのしかた

プログラミングのイメージ
GoogLeNetを使う手段はいくつかありますが、ここではMATLABで環境を構築する方法と、Cafeeを使う方法を解説します。

MATLABとは現在のAI(人工知能)に欠かせないディープラーニングの開発などで使われるプログラミング言語の名称です。もともとMATLABは工学や経済学の分野でよく使われるソフトウェアで、プログラミング言語の特徴は簡単な文法で書ける、グラフ描画のための関数などがすでに用意され煩雑なコード記述の必要がない、などの特徴があります。

MATLABにはサポートパッケージというアドオン機能があり、その1つにGoogLeNetの取り込みがあります。ダウンロード方法は、コマンドラインで“googlenet”と打ち込み、表示されたリンクをクリックし、流れに沿って進めるというのが1つの例です(参考:googlenet)。

もう1つ、GoogLeNetのダウンロードでCaffeを使うという方法があります。Caffeとは機械学習のためのオープンソースライブラリで、とくに画像認識の処理が得意です。Caffe使用できるプログラミング言語はPython、C++、MATLABになります。

Caffeは更なる開発が盛んにおこなわれ、積極的にGitHubが更新されています。その中の1つにGoogLeNetのサンプルコードがあり、GitHub経由でダウンロードすることが可能です。まずcaffe/models/bvlc_googlenet at master · BVLC/caffe · GitHubにある「deploy.prototxt」「train_val.prototxt」「solver.prototxt」をダウンロードし、さらにcaffe/models/bvlc_googlenet at master · BVLC/caffe · GitHubからcaffemodelと呼ばれるネットワークの重みに関するファイルをダウンロードすることで、GoogLeNetを利用する環境を整える準備ができます。

GoogLeNetの使い方

進化のイメージ
ダウンロード方法がわかったところで次は使い方を解説しましょう。GoogLeNetは事前学習済みの畳み込みニューラルネットワークなので、こちらで学習させずとも使用できます。学習させたデータセットによって変わりますが、ImageNetデータセットの場合は1000種類の物体のカテゴリへとイメージ分類、Places365データセットの場合365種類の場所へとイメージ分類が可能です。

また、GoogLeNetでは転移学習が可能で、新たなイメージ分類パターンの生成など、さらなる性能の向上ができます。転移学習は学習済みのモデルで学習したことを少し改変して学習することで新たなモデルを作る技術で、学習時間の短縮できます。この転移学習を使えば、1から学習データを集めて与え学習させることなく、簡単にモデルが作れるでしょう。

ここまで、ダウンロードや使い方の概要を解説しました。最後に、GoogLeNetでのイメージ分類について紹介します。

GoogLeNetを使ったイメージ分類

分類のイメージ
イメージ分類の手順として、まずは事前準備としてGoogLeNetを処理に使えるようにします。MATLABではアドオンで設定して読み込めるように、Cafeeではライブラリを組み込んで呼び出せるようにしましょう。

準備ができたら分類したい画像を、関数を利用して読み取らせます。GoogLeNetが処理できる画像のサイズは原則正方形なので、事前に正方形の画像を用意するか、プログラム内で正方形に変換するか、正方形である必要がないようにプログラムを組まなければならないので注意が必要です。

画像の読み取りとサイズ調整が終わったら、分類処理をおこなう関数を使い、先ほどの画像を指定して分類の処理をさせます。そして最後に、読み取った画像がどのカテゴリに分類できるのか予測結果の表示です。最終的に私たち人間が元データと結果をもとに精度を判断しましょう。

まとめ
さて、今回はGoogLeNetについて基本的な知識から使い方まで徹底的に解説しました。GoogLeNetとは22の層を持った事前学習済みの畳み込みニューラルネットワークのことで、画像分類のコンテストで優勝経験があります。GoogLeNetには次のような特徴がありました。

  • Inceptionモジュール:深い層で画像サイズが小さくなる従来のモデルの欠点を改善
  • Global Average Pooling(GAP):過学習を減少
  • 事前学習済み:勾配消失問題を回避

イメージ分類が得意な畳み込みニューラルネットワークですが、GoogLeNetも例に漏れず医療や人検出、顔検出に関する技術開発などのイメージ分類の分野で使われています。

GoogLeNetのダウンロード方法として、今回はMATLABというソフトウェア上でおこなうパターンと、Cafeeというオープンソースライブラリを導入するパターンを紹介しました。開発環境に応じて、適宜参考にしてください。

また、GoogLeNetはそのままでも使えますが、転移学習を使うことで新たなモデルの作成ができます。新しいことに挑戦したい場合は、転移学習を活用すると良いでしょう。

GoogLeNetは奥が深く、さまざまな応用方法が考えられるモデルです。GoogLeNetについて知見を深め、イメージ分類に強くなりましょう!

参考文献
googlenet
GoogLeNet を使用したイメージの分類
GoogLeNet / Inception | Inception モジュール構造を取りれて 22 層のニューラルネットワークを実現したアーキテクチャ
サーベイ論文] 畳み込みニューラルネットワークの研究動向
【07.実践1】GoogLeNetで画像認識の実行と改造
【01.概要】Neural Compute Stickで始めるディープラーニング
代表的なCNNのアーキテクチャについて
深層学習/GoogLeNet, ResNet
畳み込みニューラルネットワーク_CNN(Vol.16)
ディープニューラルネットワーク(DNN:Deep Neural Network)とは?
オートエンコーダー(Autoencoder)とは?
RNN(Recurrent Neural Network: 再帰型ニューラルネットワーク)とは?
ここからはじめるディープラーニングの主流手法まとめ【保存版】
AI(人工知能)による画像認識「分類」の仕組みについて、さくっと学びたいあなたのはこちらをどうぞ
ディープラーニングの最前線と医療分野への応用
Idein Ideas
ホームロボットにおける ディープラーニングによる物体認識
MATLAB 無償利用できる機能のまとめ
【MATLABとは?】ディープラーニングで人気の言語を初心者向けに解説
サポート パッケージのインストール
Caffe
オープンソースのAI・人工知能/Caffeとは
機械学習ライブラリ・ディープラーニングフレームワークおすすめ15選:特徴・便利な点・利用方法など
ホームロボットにおける ディープラーニングによる物体認識
転移学習とは?ディープラーニングで期待の「転移学習」はどうやる?
トップへ戻る
タイトルとURLをコピーしました