役に立つヒント | 複数の事前トレーニング済みビジョンモデルの転移学習

役に立つヒント | 複数の事前トレーニング済みビジョンモデルの転移学習

この記事では、Keras Tensorflow 抽象ライブラリに基づく転移学習アルゴリズム モデルを紹介します。このアルゴリズムはシンプルで実装が簡単で、優れた結果が得られます。

機械学習やデータサイエンスの分野では、「ディープラーニング」と呼ばれる手法が数多く登場しています。これらすべての「ディープラーニング」手法の中で、特に際立っているのが、学習した表現の転送です。学習した表現を転送するのに特に簡潔で堅牢かつ効果的な方法があります。特にコンピューター ビジョンの分野では、このアプローチは非常に大きな利点を示しており、以前は克服できなかったタスクが keras.applications import * のように簡単になりました。

簡単に言うと、このアプローチでは、大規模なデータセットを使用して、関心のあるオブジェクト (画像、時系列、顧客、さらにはネットワークなど) を分類やクラスタリングなどのデータ サイエンス研究タスクに適した特徴ベクトルとして表現することを学習する必要があることを示しています。一度学習すれば、新しいデータの量や利用可能なコンピューティング リソースのサイズをほとんど考慮せずに、他の研究者や他のデータセットで表現メカニズムを使用できます。

この記事では、keras TensorFlow 抽象化ライブラリを使用して、事前トレーニング済みのコンピューター ビジョン モデルに基づく転移学習の使用方法を説明しました。事前トレーニング済みのコンピューター ビジョン モデルは、大規模な ImageNet データセットでトレーニングされており、特徴ベクトルの形式で画像の単純な表現を生成することを学習しています。ここでは、このメカニズムを使用して鳥の分類器を学習します。

事前トレーニング済みモデルを使用する方法は多数あり、選択は通常、データセットのサイズと利用可能なコンピューティング リソースによって異なります。これらの方法には次のものがあります。

  1. 微調整: この場合、ネットワークの最終分類層は、現在のデータセットに適合する適切なサイズのソフトマックス層に置き換えられますが、他のすべての層の学習済みパラメータは変更されずに、新しいタスクでさらにトレーニングされます。
  2. 凍結:微回転法では、比較的強力な計算能力と大量のデータが必要になります。データセットが小さい場合、ネットワークの最も初期のレイヤーの一部を「フリーズ」するのが一般的です。つまり、事前トレーニング済みネットワークのパラメーターはこれらのレイヤーで固定されます。他のレイヤーは、新しいタスクで以前と同じようにトレーニングされます。
  3. 特徴抽出: この方法は、事前トレーニング済みのネットワークを最も自由に使用する方法です。画像は、特定のレイヤー (通常は最終的な分類器出力の前のレイヤー) を新しいタスク用に再トレーニングされることのない表現として使用して、ネットワークを通じてフィードフォワードされます。この画像からベクトルへのメカニズムの出力は、ほぼすべての後続タスクで使用できます。

この記事では、特徴抽出法を使用します。まず、事前にトレーニングされた単一のディープラーニング モデルを使用し、次にスタッキング手法を使用して 4 つの異なるモデルを組み合わせます。次に、選択された 200 種の鳥類の画像 (vision.caltech 提供) を含む CUB-200 データセットを分類します。

まず、データセットをダウンロードします。MAC/Linux システムのダウンロード パス:

または、ファイルを手動でダウンロードして解凍します。

次にプログラムの主な要素について説明します。読みやすいテキストにするためにインポートとデプロイメントのコードは省略しましたが、必要に応じて完全なコードを表示できます。

まず、ユーティリティ関数 (こちら) を使用してデータセットを読み込み、指定されたサイズの画像を含むデータセットをロードしてみましょう。 「CUB_200_2011」フォルダはデータセットが解凍されたときに作成され、定数 CUB_DIR はそのフォルダ内の「image」ディレクトリを指します。

まず、特徴抽出に Resnet50 モデル (論文と keras ファイルを参照) を使用します。 244x244 ピクセルのサイズの画像を使用していることに注意してください。データセット全体のベクトル表現を生成するには、次の 2 行のコードを追加する必要があります。

モデルが作成されると、初期トレーニング データ (ImageNet) は、平均チャネル ピクセル値を減算した結果である preprocess_input 関数を使用して正規化されます。 ResNet50.predict は実際の変換を実行し、各画像を表すサイズ 2048 のベクトルを返します。 ***が呼び出されると、ResNet501d[1]コンストラクターが事前トレーニング済みのパラメータファイルをダウンロードします。必要な時間はネットワーク速度によって異なります。その後、これらの特徴ベクトルは単純な線形 SVM 分類器とともに使用され、相互検証プロセスが実行されました。

[ 0.62522158 0.62344583 0.62852745 ]

総合精度: 62.6

このシンプルなアプローチにより、200 クラスのデータセットで 62.6% の精度を達成しました。次のセクションでは、いくつかの事前トレーニング済みモデルとスタッキングアプローチを使用して、この結果をさらに改善していきます。

複数の事前トレーニング済みモデルを使用した後の感覚は、機能セットを使用するあらゆる状況と同じです。つまり、組み合わせると優れたパフォーマンスにつながる重複しない情報を提供することが期待されます。

私たちが使用する方法は、これら 4 つの事前トレーニング済みモデル (VGG19、ResNet、Inception、Xception) から派生した機能に基づいており、総称して「スタッキング」と呼ばれます。スタッキングは、一連のモデル (基本分類器) の予測を集約し、第 2 段階の予測器 (メタ分類器) に渡す 2 段階のアルゴリズムです。この例では、各基本分類器は単純なロジスティック回帰モデルになります。これらの出力確率は平均化され、線形 SVM アルゴリズムに渡されて最終的な決定が下されます。

事前トレーニング済みの各モデル (上記の ResNet など) は、特徴セット (X_vgg、X_resnet、X_incept、X_xcept) を生成できます。これを開始点として使用します (完全なコードについては、git リポジトリを参照してください)。便宜上、すべての機能セットは単一のマトリックスに積み重ねられますが、各モデルが正しいセットを指すことができるように境界インデックスは保持されます。

強力な mlxtend 拡張ライブラリを使用して、スタッキング アルゴリズムをさらに簡単にします。 4 つの基本分類器のいずれに対しても、適切な特徴を選択し、LogisticRegression アルゴリズムのパスに従う転送メソッドを構築しました。

各基本分類器によって提供される平均確率を集計関数として使用するように、スタック分類器を定義および構成します。

***、スタッキング方法をテストする準備ができました:

[ 0.74221322 0.74194367 0.75115444 ]

総合精度: 74.5

いくつかのモデルベースの分類器を提供し、これらの個々の事前トレーニング済み分類器のスタッキング方法を使用することで、74.5% の精度を達成しました。これは、単一の ResNet モデルと比較して大幅な改善です (同じ方法を使用して他のモデルをテストし、2 つの方法を比較することもできます)。

要約すると、この記事では、複数の事前トレーニング済みモデルを特徴抽出メカニズムとして利用し、スタッキング アルゴリズムを使用してそれらを組み合わせて画像分類を行う方法について説明しました。このアプローチはシンプルで実装が簡単で、驚くほど良い結果が得られます。

[1] ディープラーニングモデルは通常、GPUでトレーニングされます。ローエンドのラップトップGPUを使用している場合、メモリ不足の例外が発生するため、ここで使用するモデルの一部を実行するのに適していない可能性があります。この場合、tf.device("/cpu:0")を使用して、すべてのディープラーニング関連コンテンツをブロックの下に配置し、TensorFlowがすべてをCPUで実行するように強制する必要があります。

<<:  Lingzhi Unuo CTO Xu Ke: AI技術が従来の保険販売モデルのジレンマを打破

>>:  CES 2018: 見逃せない 4 つの主要なテクノロジー トレンド

ブログ    
ブログ    

推薦する

顔認識技術の推進は情報漏洩に悩まされている

2021年CCTV「3.15」ガラで、多くの店舗がカメラを使って顔情報を取得している事例が暴露され、...

マルチモーダル大規模モデルの最も包括的なレビューはここにあります!マイクロソフトの研究者7人が5つの主要トピックについて協力し、119ページの文書を公開した。

マルチモーダル大規模モデルの最も包括的なレビューはここにあります!マイクロソフトの中国人研究者7名に...

Huyaは人間とシーンの分離技術を使用して、顔を覆わずにスマートな弾丸スクリーンを作成します

【元記事は51CTO.comより】 「(段)幕」という言葉はシューティングゲームから生まれたもので、...

...

...

北京大学とテンセントは、デザイナーと同じくらいクリエイティブなテキストロゴ生成モデルを提案した。

テキスト ロゴのデザインはデザイナーの創造性と経験に大きく依存しますが、その中でも各テキスト要素のレ...

...

AES暗号化アルゴリズムの強度が弱まった

この脆弱性は、広範囲にわたる暗号分析を行った3つの大学とマイクロソフトの研究者によって発見されたが、...

AIは中国のインターネットを狂ったように汚染している

AIは中国のインターネットを汚染する「犯人」の1つとなった。問題はこれです。最近、誰もが AI に相...

...

...

AIは当面、都市のゴミ出しを支援できないかもしれない

上海がゴミの分別を推進し始めて以来、クレイジーな上海寧は多くのジョークや絵文字を投稿し、大多数のネッ...

AI革命はネットゼロデータセンターを終わらせるか?

データセンターは現代生活に欠かせないものです。あらゆるものがインターネットでつながっているこの時代に...

AI 開発企業向けのトップ機械学習フレームワーク (2020 年版)

[[283218]] [51CTO.com クイック翻訳] 実際、人工知能技術は私たちの生活を日々...

...