ディープラーニングE資格

【概要を掴もう】画像認識CNNのAlexNetを分かりやすく解説

今回は画像認識CNNとして最初に有名になったAlexNetを取り上げてみたいと思います。

今述べたように、AlexNetはディープラーニングを用いた画像認識の火付け役として大変よく知られた存在です。ディープラーニングを学ぶのであれば、その基礎として確実に知っておくべきモデルと言えます。

今回はそのAlexNetを登場した背景からその特徴まで分かりやすく解説してみたいと思います。

画像認識の大会ISLVRC

AlexNetは画像認識の世界的な大会であるISLVRCで登場しました。

ISLVRCでは、ImageNetと呼ばれる画像データセットを利用して、1000クラスの画像の識別を行ない、画像識別誤差が少なかったモデルが優勝となります。

AlexNetが登場する前年は優勝したモデルの画像認識の誤差が26%でしたが、2012年に登場したAlexNetは誤差15.3%を叩き出し、前年の記録を大幅に更新しました。

これによりCNNを用いた画像認識技術が注目を集めることになりました。

AlexNetとは?

ここまで何度か述べたように、AlexNetはCNNを用いたモデルなので、大きく言えば、畳み込み層、プーリング層、全結合層から構成されています。

※CNNがよく分からないという方は是非↓の記事を先に読んでみて下さいね。

では、その畳み込み層、プーリング層、全結合層がどのような構成で使われているのかを具体的に見てみましょう。

まず、224×224のサイズ(RGBの3チャンネル)の入力画像に対して、11×11のサイズで96種類のフィルターを適用して、畳み込みを行ないます。畳み込みはstride = 4、padding = 2という条件で行なわれるため、畳み込み後のサイズは55×55です。畳み込み後のチャンネル数はフィルタの枚数と同じです。

畳み込み層の後は活性化関数を適応します。活性化関数はReLUです。
活性化関数としてReLUを用いたことも画期的で、これによって勾配消失問題を解消しました。ReLUを知らないという方は是非↓の記事を確認してみて下さい。

活性化関数の次は最大値プーリングです。3×3のプーリングをstride = 2という条件で実行します。プーリングなので、サイズは変わりますが、チャンネル数には変化はありません。

この後暫くは、以下のように、畳み込み層とプーリング層の繰り返しになるため、説明を割愛します。

さて、畳み込み層とプーリング層の繰り返しが終わった後は、全結合層が登場します。

最後のプーリング層を通過した時点で画像サイズは6×6、チャンネル数は256となっています。全結合層に入力する時には、これらは1列のデータとして入力されるため、6×6×256 = 9,216個のデータという扱いになります。

そして、9,216個のデータから1000クラスの画像識別結果を導出する全結合層は以下のような構造になっています。

1000クラスの画像分類を行なうことが目的なので、最後はノード数が1000個になっています。

1000クラスの画像分類を行なうということは、各クラスに該当する確率を計算するので、最後はsoftmax関数を使って確率に変換しています。
※softmax関数って何?という方は↓の記事でご確認ください。

実際にAlexNetの出力は以下のようになっており、各画像の下に該当する確率が高いクラスのトップ5を表示しています。

ImageNet Classification with Deep Convolutional Neural Networks

AlexNetの学習

最後にAlexNetの学習の特徴を少し説明したいと思います。

AlexNetの学習で使われた工夫として有名なのはドロップアウトデータ拡張です。

ドロップアウトについては、過学習対策として↓の記事で説明しているので、ここでは割愛します。

では、データ拡張とはどういったものでしょうか?

例えば、あなたの手元に猫の画像があったとします。仮に映っている猫の角度、サイズ、明るさ、日の当たり方などが変わったとしても、猫の画像は猫の画像です。

つまり、画像認識を実践的に行うためには、今述べたような画像の変化に対して揺るがない性能を持っている必要があります。

元々持っている猫の画像に少し変化を加えた画像がたまたま手元にあれば、それを学習に使えますが、そんなに都合よく画像が準備できることは多くありません。

そこで考え出されたのがデータ拡張です。
上記のような少し変化を加えた画像を元の画像に処理を加えることによって用意します。
言い換えれば、元データにちょっとした加工を加えて、学習用データを水増しするわけです。

具体的には次のような処理を行なうことが考えられます。

データ拡張の画像処理
  • 上下左右にずらす
  • 上下左右を反転する
  • 拡大・縮小する
  • 回転する
  • 斜めに歪める
  • 部分的に切り取る
  • コントラストを変える

このようにすることで、学習に必要なデータを疑似的に作る出せるため、データ拡張は今では一般的に使われている手法です。

ただし、実際に使う際には少し注意が必要です。
例えば、数字の1~9までの画像を判定するようなタスクを考えてみましょう。

このタスクで学習用データを増やすため、回転させた画像を用意したとします。しかし、よくよく考えてみると、例えば「6」を回転すると「9」になってしまう可能性があります。言い換えれば、モデルが「9」になっている画像を「6」のつもりで学習してしまうということです。

このような状況が発生してしまうと、逆に正しい学習を阻害することになるので、データ拡張はタスクの中身を考えて行わなければなりません。

以上がAlexNetの概要説明となります!

本格的にAIを学ぶならキカガク長期コース

本記事では、基礎的な内容について解説を行ないましたが、より本格的にAIを学んでみたいという方にはキカガク長期コースの受講をお薦めします。

キカガク長期コースのメリット
  • 基礎理論からAI搭載のWEBアプリ開発まで幅広く学習可能
  • 将来追加されるものも含めて、プロによる全ての講義動画がずっと見放題
  • 質問し放題のチャットや定期的な個別メンタリングなどのサポート体制
  • IT専門のキャリアアドバイザーによる転職サポート
  • 中央省庁からの給付金対象であるため受講料が最大70%
  • ディープラーニングE資格の受験資格を獲得可能

興味はあるけど、いきなり受講を申し込むには抵抗があるという方は、キカガク長期コースの無料オンライン説明会も是非活用してみてください!!

ABOUT ME
keikesu
電気機メーカーのエンジニア、オフィス・工場向けIOTシステムエンジニアを経て、現在は大手のコンサルティングファームに在籍し、様々な組織のDXを支援するITコンサルタントをしています。 JDLA G検定・E資格を取得しているので、このブログではディープラーニング(主に資格試験関連)の基礎的な内容を投稿しています。