この記事では、Keras Tensorflow 抽象ライブラリに基づく転移学習アルゴリズム モデルを紹介します。このアルゴリズムはシンプルで実装が簡単で、優れた結果が得られます。 機械学習やデータサイエンスの分野では、「ディープラーニング」と呼ばれる手法が数多く登場しています。これらすべての「ディープラーニング」手法の中で、特に際立っているのが、学習した表現の転送です。学習した表現を転送するのに特に簡潔で堅牢かつ効果的な方法があります。特にコンピューター ビジョンの分野では、このアプローチは非常に大きな利点を示しており、以前は克服できなかったタスクが keras.applications import * のように簡単になりました。 簡単に言うと、このアプローチでは、大規模なデータセットを使用して、関心のあるオブジェクト (画像、時系列、顧客、さらにはネットワークなど) を分類やクラスタリングなどのデータ サイエンス研究タスクに適した特徴ベクトルとして表現することを学習する必要があることを示しています。一度学習すれば、新しいデータの量や利用可能なコンピューティング リソースのサイズをほとんど考慮せずに、他の研究者や他のデータセットで表現メカニズムを使用できます。 この記事では、keras TensorFlow 抽象化ライブラリを使用して、事前トレーニング済みのコンピューター ビジョン モデルに基づく転移学習の使用方法を説明しました。事前トレーニング済みのコンピューター ビジョン モデルは、大規模な ImageNet データセットでトレーニングされており、特徴ベクトルの形式で画像の単純な表現を生成することを学習しています。ここでは、このメカニズムを使用して鳥の分類器を学習します。 事前トレーニング済みモデルを使用する方法は多数あり、選択は通常、データセットのサイズと利用可能なコンピューティング リソースによって異なります。これらの方法には次のものがあります。
この記事では、特徴抽出法を使用します。まず、事前にトレーニングされた単一のディープラーニング モデルを使用し、次にスタッキング手法を使用して 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 つの主要なテクノロジー トレンド
[[326634]]最近、「アマゾンAI李牧のチームから大量の人材が抜けたことについてどう思います...
Google は最近、TensorFlow Quantum (TensorFlow の拡張) のオー...
4月17日、市場調査会社リサーチ・アンド・マーケッツが最近発表したレポートでは、2025年までに世界...
背景Guomi は国家商用暗号化の略称です。アルゴリズム標準は国家暗号管理局によって策定され、多数の...
エンタープライズ テクノロジーの将来は、業界を変えるほどの大きな革新をもたらすでしょう。 5G から...
マスク氏は突如行動を起こし、OpenAI開発者会議の前に大型モデルGrokをリリースした。他の Ch...
Alpha Goの勝利により、人工知能における「ディープラーニング」の概念が急速に普及し、画像認識の...
インターネットの出現により、伝統的な取引方法は一変しました。第三者保証の取引プラットフォームとして、...
誰のため?なぜ?コミュニティ顔認識システム導入の需要の源と目的多くの居住コミュニティが顔認識システム...
多くの人が理解していない点の 1 つは、機械学習アルゴリズムが舞台裏でどのように機能するかということ...
世界の通信業界の専門家が2024年を予測5G が世界をカバーし、人工知能がネットワークを再形成し、デ...