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

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

この記事では、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 つの主要なテクノロジー トレンド

ブログ    
ブログ    

推薦する

...

Zhihuのホットトピック:最近AmazonのAIチームから大量の人材が去った?李牧自ら事実を明らかにした!

[[326634]]最近、「アマゾンAI李牧のチームから大量の人材が抜けたことについてどう思います...

2025年までに世界のAIヘルスケア市場は272億ドルに達する

4月17日、市場調査会社リサーチ・アンド・マーケッツが最近発表したレポートでは、2025年までに世界...

...

ついに! SM2 国家暗号アルゴリズムが Linux カーネル コミュニティに承認されました

背景Guomi は国家商用暗号化の略称です。アルゴリズム標準は国家暗号管理局によって策定され、多数の...

今後の企業イノベーションを牽引する10の優れたテクノロジー

エンタープライズ テクノロジーの将来は、業界を変えるほどの大きな革新をもたらすでしょう。 5G から...

マスク氏のChatGPTバージョンが急成長中! Pythonなしで11人が2か月間懸命に働いた

マスク氏は突如行動を起こし、OpenAI開発者会議の前に大型モデルGrokをリリースした。他の Ch...

画像認識技術を実装し、多様な応用シナリオを探索

Alpha Goの勝利により、人工知能における「ディープラーニング」の概念が急速に普及し、画像認識の...

今後5~10年で、人工知能+ブロックチェーンは第三者による支払いを終わらせるだろう

インターネットの出現により、伝統的な取引方法は一変しました。第三者保証の取引プラットフォームとして、...

...

住宅地に顔認識システムを設置する前に、5つの主要なセキュリティの質問に答えてください

誰のため?なぜ?コミュニティ顔認識システム導入の需要の源と目的多くの居住コミュニティが顔認識システム...

機械学習の概念をインタラクティブに学習できる 5 つの視覚化 Web サイト

多くの人が理解していない点の 1 つは、機械学習アルゴリズムが舞台裏でどのように機能するかということ...

...

世界の通信業界の専門家が2024年を予測

世界の通信業界の専門家が2024年を予測5G が世界をカバーし、人工知能がネットワークを再形成し、デ...