畳み込みニューラル ネットワークの実践 - Keras を使用して猫を識別する

畳み込みニューラル ネットワークの実践 - Keras を使用して猫を識別する

近年、ディープラーニングの分野における畳み込みニューラルネットワーク(CNN または ConvNet)は、さまざまな業界で数多くの実用的な問題を解決してきました。しかし、ほとんどの人にとって、CNN は謎に包まれているようです。ニューラルネットワークのプロセスを分解して、各ステップの結果がどうなるかを確認できたらどんなに素晴らしいだろうとよく思います。これがこのブログの意味です。

高度なCNN

まず、畳み込みニューラル ネットワークが得意とする分野を理解する必要があります。 CNN は主に画像内のパターンを見つけるために使用されます。このプロセスは主に 2 つのステップで構成されます。まず、画像に対して畳み込みが実行され、次にパターンが検出されます。ニューラル ネットワークでは、最初の数層は境界とコーナーを見つけるために使用されます。層の数が増えるにつれて、より複雑な特徴を認識できるようになります。この特性により、CNN は画像内のオブジェクトの識別に非常に優れています。

CNNとは

CNN は、畳み込み層、プーリング層、活性化層を含む特殊な種類のニューラル ネットワークです。

畳み込み層

畳み込みニューラル ネットワークとは何かを理解するには、まず畳み込みがどのように機能するかを知る必要があります。画像を表す 5*5 の行列があり、その画像上で 3*3 の行列をスライドさせるとします。 3*3 行列が点を通過するたびに、元の行列で覆われている行列にこの行列が掛けられます。これにより、単一の値を使用して現在のウィンドウ内のすべてのポイントを表すことができます。以下にプロセスの GIF を示します。

ご覧のとおり、特徴マトリックスの各エントリは元の画像内の領域に関連付けられています。

グラフ内でウィンドウのように動くものをカーネルと呼びます。カーネルは一般に正方行列です。小さい画像の場合、通常は 3*3 行列で十分です。ウィンドウが毎回移動する距離をステップ サイズと呼びます。一部の画像では境界部分がゼロで埋められることに注意してください。畳み込み演算を直接実行すると、境界部分のデータは小さくなります (もちろん、画像の中央部分のデータの方が重要です)。

畳み込み層の主な目的はフィルタリングです。画像を操作すると、パターンのどの部分が適用したフィルタリングによるものかを簡単に確認できます。畳み込みの出力に重みベクトルを掛けます。画像をトレーニングすると、これらの重みは常に変化し、以前に見たパターンに遭遇すると、対応する重みが増加します。さまざまなフィルターからの高重みの組み合わせにより、ネットワークは画像の内容を予測できるようになります。 このため、CNN アーキテクチャの図では、畳み込みステップは長方形ではなくボックスで表され、3 番目の次元はフィルターを表します。

注記:

畳み込み演算後の出力は、幅と高さが元の出力よりも小さくなります。

カーネルと画像ウィンドウ間の操作は線形です。

フィルタの重みは多数の画像にわたって学習されます。

プーリング層

プーリング層は畳み込み層と非常によく似ており、グラフ上を移動するために畳み込みカーネルも使用します。唯一の違いは、プーリング層におけるカーネルと画像ウィンドウの動作が線形ではなくなったことです。

*** プーリングと平均プーリングは最も一般的なプーリング関数です。 *** プーリングは現在のカーネルでカバーされている画像ウィンドウ内の最大の数値を選択し、平均プーリングは画像ウィンドウの平均を選択します。

レイヤーをアクティブ化

CNNでは活性化関数は他のネットワークと同じで、関数によって値を範囲に圧縮します。一般的な機能のいくつかを以下に示します。

CNN で最もよく使用されるのは relu (Rectified Linear Unit) です。 relu が好まれる理由はたくさんありますが、最も重要なのは、実装が非常に簡単で、値が負の場合は 0 を出力し、それ以外の場合はそれ自身を出力することです。この機能は操作が簡単なので、ネットワークのトレーニングも非常に高速です。

レビュー:

CNN には、畳み込み層、プーリング層、活性化層という 3 つの主要な層があります。

畳み込み層は畳み込みカーネルを画像ウィンドウに掛け合わせ、勾配降下法を使用して畳み込みカーネルを最適化します。

プーリング層は、最大値または平均を使用してグラフィック ウィンドウを記述します。

アクティベーションレイヤーはアクティベーション関数を使用して、入力を範囲(通常は [0, 1][-1, 1])に圧縮します。

CNNとは何ですか?

CNN について詳しく説明する前に、まず背景を説明しましょう。 1990 年代初頭、Yann LeCun 氏は CNN を使用して手書き数字認識プログラムを作成しました。時代の発展、特にコンピュータの性能と GPU の向上により、研究者には想像の余地が広がりました。 2010 年、スタンフォード大学のマシン ビジョン研究所は ImageNet プロジェクトをリリースしました。このプロジェクトには、説明が付けられた 1,400 万枚の画像が含まれています。これは、CNN モデルを比較するための標準になりつつあります。現在、*** のモデルはこのデータセットで 94% の精度を達成できます。精度を高めるために、モデルは絶えず改良されています。 2014 年には、GoogLeNet と VGGNet が最も人気のあるモデルになりましたが、それ以前は ZFNet でした。 ImageNet に適用された CNN の最初の実用例は AlexNet でした。これに先立ち、研究者は従来のコンピューター ビジョン技術の使用を試みましたが、AlexNet は他のすべてを 15% 上回るパフォーマンスを発揮しました。 LeNetを見てみましょう:

この図にはアクティベーション レイヤーは示されていません。全体のプロセスは次のとおりです。

入力画像 → 畳み込み層 → Relu → *** プーリング → 畳み込み層 → Relu → *** プーリング → 隠れ層 → Softmax (活性化) → 出力層。

実際の例を見てみましょう

以下は猫の写真です。

この画像は長さ 400 ピクセル、幅 320 ピクセルで、3 つのカラー チャネル (RGB) があります。

では、畳み込み演算のレイヤーを経るとどうなるでしょうか?

これは、3*3 畳み込みカーネルと 3 つのフィルターを使用した場合の効果です (フィルターが 3 つ以上ある場合は、猫の 2D 画像を描くことができます。高次元は処理が困難です)

ランダムな初期化値を使用し、ネットワークをまだトレーニングしていないため、猫が非常にぼやけていることがわかります。それらはすべて重なり合っており、各レイヤーに詳細があっても、それを見ることはできません。しかし、猫の部分を目や背景と同じ色にすることはできます。カーネル サイズを 10x10 に増やすとどうなりますか?

カーネルが大きすぎるために、詳細が失われていることがわかります。また、数学的に言えば、カーネルが大きくなるほど、画像の形状が小さくなることに注意してください。

少し圧縮すると、カラー チャネルに何が起こるかがよくわかります。

こちらのほうがずっと良くなりました! これで、フィルターが見ているものの一部がわかります。猫の黒い鼻と黒い目が赤に、薄い灰色の縁取りが青に置き換えられているようです。レイヤーが写真のより重要な詳細をどのように捉えているかがわかります。

カーネル サイズを大きくすると、より詳細な情報が得られますが、当然ながら画像は他の 2 つよりも小さくなります。

アクティベーションレイヤーを追加する

relu を追加することで、青色以外の部分を多く削除します。

プーリング層を追加する

プーリング レイヤーを追加します (画像の可視性を最大化するためにアクティベーション レイヤーを削除します)。

予想通りまだら模様になってしまいましたが、さらにまだら模様にすることも可能です。

画像は元のサイズの約 3 分の 1 になりました。

アクティベーションとプーリング

レネット

畳み込みとプーリングのために猫の写真を LeNet モデルに入れると何が起こるでしょうか?

要約する

ConvNet は、画像のコア機能を抽出し、その機能を使用してその機能を含む画像を識別できるため、強力です。 2 層の CNN であっても、ネットワークが猫のひげ、鼻、目などの領域に多くの注意を払っていることがわかります。これらは、CNN が猫と鳥を区別できるようにする特徴の種類です。

CNN は非常に強力であり、これらの視覚化は完璧ではありませんが、ConvNet をより深く理解しようとしている私のような人々の役に立つことを願っています。

<<:  CNNの簡単な分析と、長年にわたるImageNetチャンピオンモデルの分析

>>:  PyTorch でリカレントニューラルネットワークを実装するにはどうすればいいですか?

ブログ    

推薦する

...

機械学習が金融サイバー犯罪と戦う方法: 人工知能はセキュリティの洞察にとって不可欠

過去数か月間、コロナウイルス関連の請求による多大なストレスの期間中、失業保険制度から数百万ドルが盗ま...

Googleの人工知能部門DeepMindが想像力を駆使した新システムを開発

北京時間8月19日のreadwriteによると、2014年にGoogleに買収された英国の人工知能企...

機械学習技術におけるアンサンブル学習とは何ですか?

[51CTO.com クイック翻訳] アンサンブル学習は強力な機械学習技術の 1 つです。アンサン...

...

IBM、スタートアップを支援するために5億ドルのエンタープライズAIベンチャーファンドを設立

IBMは最近、新たな企業投資ツールであるEnterprise AI Venture Fundを立ち上...

OpenVINOの新バージョンがリリースされ、視覚を超えた音声をサポートし、よりインテリジェントなエッジ開発者の力を高める

本日、インテルとその開発者エコシステム パートナーは、「インテリジェント エッジに焦点を当て、開発者...

AI 主導の DevOps はどのようにビジネス変革を実現できるのでしょうか?

[[420376]] AI 技術を採用することで、包括的なセキュリティの基盤としてシステムにインテ...

あらゆる角度から監視されることへの不安:AI はプライバシー侵害にどう対抗できるか?

インテリジェント時代では、アルゴリズムと計算能力の継続的な進歩により、AI 技術が急速に発展しました...

機械学習とビジネスを組み合わせる上で最も重要なことは何でしょうか?

純粋に学術的な目的で機械学習モデルを構築することと、製造、金融サービス、小売、エンターテインメント、...

AIは胸部X線写真からCOVID-19を検出できる

先週、ノースウェスタン大学の研究者らは、胸部X線写真からCOVID-19感染の兆候を検出できる新たな...

...

Microsoft の 37 ページの論文では、Sora をリバース エンジニアリングしています。どのような結論に達したのでしょうか。

現段階では、Sora に追いつくことが多くのテクノロジー企業の新たな目標となっている。研究者たちが興...

避けるべきビジネス インテリジェンス実装の悪い例トップ 10

ビジネス インテリジェンスは、あらゆる業界のグローバル企業の従来のワークロードを変革しています。ビジ...

人工知能を活用して社会問題を解決する方法

人工知能はデータに命を吹き込み、過去のさまざまな目録や調査から収集された膨大なデータから再利用の機会...