Visual Artificial Intelligence (AI)リファレンス¶
このセクションでは、Visual Artificial Intelligence (AI)の技術コンポーネントの概要を簡単に説明します。
画像データをモデル化するための一般的なアプローチは、生のピクセル値を入力として受け取るニューラルネットワークを構築することです。 ただし、画像に完全に接続されたニューラルネットワークを使用すると、多くの場合、ネットワークのサイズが膨大になり、操作が困難になります。 たとえば、色(赤、緑、青)の224x224ピクセル画像には、150,528の入力特徴量(224 x 224 x 3)があります。 その場合、ネットワークは第1層だけで1億5000万を超える加重が発生する可能性があります。 画像には「ノイズ」が多すぎるため、個々のピクセルを見て画像を理解するのは非常に困難です。 しかし、ピクセルはその近傍のコンテキストで最も役立ちます。 画像内のオブジェクトを表すピクセルの位置と回転は変化する可能性があるため、たとえば画像内での猫の場所に関係なく、猫を検出するようにネットワークをトレーニングする必要があります。 Visual Artificial Intelligence (AI)は自動化された効率的な手法を提供して、これらの課題を解決し、モデルの解釈可能性、チューニング、および予測を人間が使用できる使い慣れたワークフローで提供します。
事前トレーニング済みのネットワークアーキテクチャ¶
モデリングアルゴリズムで画像を使用するには、まず画像を数値に変換する必要があります。 DataRobotブループリントでは、これは「フィーチャライザー」と呼ばれるブループリントタスクの役割です。 フィーチャライザーは、画像ファイルのバイナリコンテンツを入力として受け取り、さまざまなレベルの複雑さでその画像の主要な特性を表す特徴量ベクトルを生成します。 これらの特徴量ベクトルは、データセット内の他の特徴量(数値、カテゴリー、テキストなど)とさらに組み合わせて、ダウンストリームでモデラーへの入力として使用できます。
さらに、ファインチューニングされたフィーチャライザーは、事前にトレーニングされた情報で初期化した後、指定されたデータセットでニューラルネットワークをトレーニングし、出力特徴量をさらにカスタマイズします。 ファインチューニングされたフィーチャライザーはブループリントのサブセットに組み込まれており、オートパイロットによって 包括モードでのみ実行されます。 プロジェクトが別のモードを使用して構築されている場合は、リポジトリから実行できます。 さらに、 Composable MLを使用して既存のブループリントを編集し、事前トレーニング済みのフィーチャライザーをファインチューニングされたフィーチャライザーに置き換えることができます。
さまざまなタイプのフィーチャライザーによるドメイン適応の処理方法
ブループリントの個別のセットには、「ファインチューニングされた」フィーチャライザーと事前トレーニング済み(ファインチューニングされていない)フィーチャライザーが組み込まれています。 どちらも事前トレーニング済みですが、転移学習の扱いが異なります。 ファインチューニングされていないフィーチャライザーブループリントは、さまざまな複雑な特徴量を生成しますが、ダウンストリームMLアルゴリズムを使用して別のドメインに適応します。 一方、ファインチューニングされたフィーチャライザーのブループリントは、トレーニング中に独自の加重を調整します。
すべてのDataRobotフィーチャライザー、ファインチューニングされた分類子/リグレッサー、ファインチューニングされたフィーチャライザーは、事前にトレーニングされたニューラルネットワークアーキテクチャに基づいています。 アーキテクチャ は、フィーチャライザー(ニューラルネットワーク)の内部構造を定義し、実行時間と精度に影響を与えます。 DataRobotは、これらのフィーチャライザーとファインチューナーのハイパーパラメーターの選択をある程度自動化しますが、手動でさらに カスタマイズして結果を最適化することもできます。
さらに、「ニューラルネットワークを使用しない場合はどのような結果になるか」をシミュレーションするベースラインブループリントもあります。 このオプションを選択した場合、DataRobotはネットワークではないグレースケールダウンスケールのフィーチャライザーを含むブループリントを構築します。 このようなモデルは高速ですが、精度は低くなります。 このモデルはターゲットリーケージの調査で役立ちます(1つのクラスが他のクラスより明るいかどうか、各クラスに固有の透かしや視覚パッチがあるかどうか、精度は信用できるかどうか、など)。
さらに、DataRobotは、最先端のニューラルネットワーク最適化を実装して、一般的なアーキテクチャ上で実行し、同じ精度を維持しながら大幅に高速化します。 DataRobotは、いくつかの上位フィーチャライザーのプルーニングされたバージョンを提供します。そのアーキテクチャバリアントが存在する場合は、こちらのバージョンを使用することを強くお勧めします(最大3倍の速度で同じ精度を提供します)。
DataRobot Visual Artificial Intelligence (AI)は、最適なイメージングアーキテクチャを提供するだけでなく、データセットと問題タイプに最適なニューラルネットワークアーキテクチャとfeaturizer_poolingタイプを自動的に選択します。 Visual Artificial Intelligence (AI)ヒューリスティックとして知られる自動選択は、精度と速度のバランスを最適化することに基づいています。 さらに、オートパイロットが終了すると、ロジックは、精度を高めるEfficientNet-B0-Prunedアーキテクチャを使用して最適なリーダーボードモデルを自動的に再トレーニングします。 最先端のアーキテクチャを統合しているDataRobotでは、ニーズに最適なものを選択できます。 DataRobotがサポートするアーキテクチャのリストを以下に示します。
フィーチャライザー | 説明 |
---|---|
Darknet | このシンプルなニューラルネットワークは、Batch normalization、Leaky ReLuアクティブ化、およびプーリングを備えた8つの3x3畳み込みブロックで構成されています。 チャネルの深さは、ブロックごとに2倍になります。 最終的な緻密層を始めとして、ネットワークには合計9つの層があります。 |
Efficientnet-b0、Efficientnet-b4 | EfficientNetファミリーのネットワークで最速のネットワークであるb0モデルは、ImageNetのResNet-50のトップ1およびトップ5の精度を上回り、パラメーターの数は5分の1です。 EfficientNetモデルの主な構築は、パラメーターの数を制限するMBConv(mobile inverted residual bottleneck)畳み込みブロックです。 b4ニューラルネットワークは、特定のデータセットに対して最も正確である可能性があります。 b4モデルの実装は、ネットワークの幅(各畳み込みのチャネル数)を1.4、そしてネットワークの深さ(畳み込みブロックの数)を1.8に拡大し、b0よりも低速ですが、ResNext-101またはPolyNetに匹敵する正確なモデルを提供します。 EfficientNet-b4は実行に時間がかかりますが、精度を大幅に向上させることができます。 |
Preresnet10 | ResNetに基づいて、各残差ブロック内を除いて、バッチ正規化とReLuアクティベーションは畳み込み層の後ではなく、前に発生します**。 このPreResNetアーキテクチャの実装には、4つのPreResブロックがあり、それぞれに2つの畳み込みブロックがあり、入力畳み込み層と出力緻密層と合わせて合計10層になります。 モデルの計算の複雑さはネットワークの深さに比例してスケーリングする必要があるため、このモデルはResNet50よりも約5倍高速です。ただし、生成される特徴量の豊富さは、Early Stopping搭載XGBなどのダウンストリームモデラーのフィッティング時間に影響を与える可能性があるため、ResNet50などのより深いフィーチャライザーを使用してモデルをトレーニングするのにかかる時間は5倍以上になる可能性があります。 |
Resnet50 | この古典的なニューラルネットワークはスキップアヘッドレイヤーを含む残差ブロックに基づいており、実際に効果的にトレーニングを行う非常に深いネットワークを実現します。 各残差ブロックでは、ブロックへの入力は、3x3の畳み込み、バッチ正規化、ReLuの活性化(2回)によって実行されます。 その結果はブロックへの入力に追加され、結果を効果的に層の残差に変換します。 このResNetの実装には、入力畳み込み層、48の残差ブロック、最終的な緻密層があり、合計50層になります。 |
Squeezenet | DataRobotで最速のニューラルネットワークであるこのネットワークは、50分の1という少ないパラメーターでAlexNetの速度を実現するように設計されており、トレーニング、予測、ストレージサイズを高速化できます。 これは、「スクイーズ」レイヤーとその後に続く「拡張」レイヤーの組み合わせで構成されるファイアモジュールの概念に基づいています。その目的は、精度を維持しながら、使用するパラメーターの数を大幅に削減することです。 このSqueezNet v1.1の実装には、入力畳み込み層があり、その後にそれぞれ3つの畳み込みの8つのファイアモジュールがあり、合計25層になります。 |
Xception | このニューラルネットワークは、一般的なInception V3ネットワークよりも精度が向上しています。これはResNet-50に匹敵する速度ですが、一部のデータセットでは精度が向上します。 交差チャネル相関とは別に空間相関を学習することにより、パラメーターを節約します。 コアビルディングブロックは、深さ方向の分離可能な畳み込み(深さ方向の畳み込み + 点ごとの畳み込み)で、残りの層が追加されます(PreResNet-10と同様)。 このビルディングブロックは、空間次元(高さと幅)で発生する学習をチャネル次元(深さ)で発生する学習と「分離」することを目的としています。そのため、これらはネットワーク内の他のパラメーターダウンストリームから相互作用を学習できる個別のパラメーターで処理されます。 Xceptionの「エントリフロー」には11の畳み込み層があり、幅と高さが減少し、深さが増加します。次に24の畳み込み層があり、サイズは一定のままで合計36の畳み込み層になります。 |
MobileNetV3-Small-Pruned | MobileNet V3は、携帯電話のCPUやその他の低リソースデバイス用に特別に設計されたニューラルネットワークのMobileNetファミリーの最新バージョンです。2つのバリアントがあります。 リソース使用量が多い場合はMobileNet3-Large、リソース使用量が少ない場合はMobileNet3-Small。 MobileNetV3-Smallは、以前のMobileNetV2よりも6.6%精度が高く、レイテンシーは同じかそれ以上です。 軽量のブロックと操作に加えて、プルーニングが適用され、特徴量の抽出が高速化されます。 このプルーニングされたバージョンは同じアーキテクチャを維持しますが、レイヤー数が大幅に削減されます(〜50)。 Conv2DまたはDepthwiseConv2Dとそれに続くBatchNormalizationは、単一のConv2Dレイヤーにマージされます。 |
DarkNet-Pruned | DarkNetと同じアーキテクチャに基づいて、プルーニングされたバージョンでは推論速度が最適化されています。 Conv2Dレイヤーとそれに続くBatchNormalizationレイヤーは、単一のConv2Dレイヤーにマージされます。 |
EfficientNet-b0-Pruned、EfficientNet-b4-Pruned | EfficientNet-b0および-b4の修正バージョンを指定すると、プルーニングされたバリアントはConv2Dレイヤーの後のBatchNormalizationレイヤーを削除し、それらを前のConv2Dレイヤーにマージします。 ネットワークのレイヤー数は少なくなりますが、精度は同じになり、CPUとGPUの両方でより高速な推論が可能になります。 |
EfficientNetV2-S-Pruned | EfficientNetV2-S-Prunedは、EfficientNetファミリーの最新のニューラルネットワークの一部です。 これは、EfficientNetV1モデル(2019)からの以前のすべての洞察を組み合わせ、次のようにGoogleによるニューラルアーキテクチャー探索による新しいFused-MBConvアプローチを適用します。
|
ResNet50-Pruned | ResNet50とResNet50-Prunedの唯一の違いは、Conv2Dレイヤーの後のBatchNormalizationレイヤーが削除され、それらが前のConv2Dレイヤーにマージされることです。 ネットワークのレイヤー数は少なくなりますが、精度は同じになり、CPUとGPUの両方でより高速な推論が可能になります。 |
画像とニューラルネットワーク¶
フィーチャライザーは、シーケンシャルレイヤーで構成される深い畳み込みニューラルネットワークであり、各レイヤーは前のレイヤーからの情報を集約します。 最初のレイヤーは、ポイント、エッジ、コーナーなど、数ピクセルで構成される低レベルのパターンをキャプチャします。 次のレイヤーは形状とテクスチャーをキャプチャし、最終レイヤーがオブジェクトをキャプチャします。 ニューラルネットワークモデルから抽出する特徴量のレベルは、ニューラルネットワーク、チューニング、および結果の最適化から選択できます(レイヤーが多いほど実行時間が長くなります)。
Kerasモデル¶
リーダーボードからアクセスできるニューラルネットワーク視覚化ツールは、モデルのニューラルネットワークの各レイヤーのレイヤー接続を示します。 これは、前処理のステップがニューラルネットワーク(Visual Artificial Intelligence (AI)ブループリントの場合など)であるか、予測を行うアルゴリズムがKerasモデル(画像のない表形式のKerasブループリントの場合など)であるモデルに適用されます。
Baseline Image Classifier/Regressorを除くすべてのVisual Artificial Intelligence (AI)ブループリントは、画像の前処理にKerasを使用します。 一部のVisual Artificial Intelligence (AI)ブループリントは前処理にKerasを使用し、予測を行うために別のKerasモデルを使用します。これらのブループリントの名前には「Keras」が含まれます。 Kerasを使用して予測を行う非Visual Artificial Intelligence (AI)ブループリントもあります。これらのブループリントの名前にも「Keras」が含まれています。
畳み込みニューラルネットワーク(CNN)¶
CNNはディープラーニングネットワークのクラスで、画像入力を機械学習出力に変換する目的で画像処理に適用されます。 (CNNのKDnuggetsの説明も参照してください。) CNNでは、すべてのピクセルを他のすべてのピクセルに接続する代わりに、ネットワークは領域内のピクセルのみを接続し、次に領域を他の領域に接続します。 「正規化線形関数」またはReLUネットワーク層として知られるこのトレーニングプロセスは、パラメーターの数を大幅に減らし、次のように説明できます。
または
CNNの欠点は、正確なモデルをトレーニングするために数百万行のラベル付きデータが必要になることです。 さらに、大きな画像の場合、特徴量の抽出が非常に遅くなることがあります。 トレーニングデータの量とデータの解像度が増加すると、トレーニングに必要な計算リソースも劇的に増加します。
これらの問題に対処するために、Visual Artificial Intelligence (AI)は事前トレーニング済みネットワークを使用して画像を特徴量化します。ディープラーニングフィーチャライザーを最初からトレーニングする必要がないため、処理が高速になります。 また、Visual Artificial Intelligence (AI)に必要なトレーニングデータははるかに少なく、数千の画像ではなく数百の画像です。 さまざまなレイヤーの機能を組み合わせることで、Visual Artificial Intelligence (AI)は事前トレーニング済みのフィーチャライザーの出力のみを使用することに限定されず、後続のモデリングアルゴリズム(XGBoost、線形モデルなど)がトレーニング画像の真陰性率を学習できるようになります。 これはDataRobotの交換学習の応用で、あらゆる種類の問題にVisual Artificial Intelligence (AI)を適用できます。 交換学習のロジックにより、単一のプロジェクトで画像データと画像以外のデータを組み合わせることが可能になります。
ビジュアライゼーション¶
モデル固有の2つの可視化を使用して、Visual Artificial Intelligence (AI)が画像をどのようにグループ化し、画像のどの側面が最も重要であると見なされたかを理解できます。
アクティベーションマップ¶
アクティベーションマップは、モデルで注目されている画像領域を示します。 これらは、数値特徴量とカテゴリー特徴量での特徴量のインパクトと同様に計算され、データが変更されたときに予測がどのように変化するかを把握するためのPermutation方法やSHAP技術に依存します。 実装自体はクラスアクティベーションマップの変更済みバージョンを活用し、関心領域を強調表示します。 勾配加重クラスアクティベーションマッピング(Grad-CAM)に基づいて、DataRobotは次のことを行います。
-
共変量を考慮に入れますが、従来のアクティベーションマップは「画像のみ」のデータセットに対応しています。
-
最終モデルを含むアクティベーションマップを計算します。 たとえば、画像モデルがXGBoostに接続されている場合、アクティベーションマップにはXGBoostモデルの調整が含まれます。
-
アクティベーションマップをターゲットにスケーリングします。 言い換えれば、それは「モデルがこの領域に注目した」のではなく、「この領域がターゲット特徴量に影響を与えている」のです。
「Grad-CAMでアルゴリズムを理解する」も参照してください。
これらのマップは、モデルがユースケースに適した情報を学習していること、望ましくないバイアスが含まれていないこと、および誤った詳細に適合しすぎていないことを確認できるので重要です。 さらに、畳み込み層は、完全に接続された層では失われる空間情報を自然に保持します。 その結果、最後の畳み込み層には、高レベルのオブジェクト認識と詳細な空間情報との間の最良の妥協点があります。 これらの層は、画像内のクラス固有の情報を探します。 各クラスのアクティブ化の有用性を知ることは、深いモデルの焦点をよりよく理解するのに役立ちます。
画像埋め込み¶
入力層では、クラスは非常に複雑で分離度は高くありません。 Visual Artificial Intelligence (AI)は、事前トレーニング済みのニューラルネットワークの最後の層を使用します(ネットワークの最後の層は、ネットワークが複雑なオブジェクトの形成について知っていることの概要を表すためです)。 この層は、クラスがさらに分離された新しい表現を生成するので、類似性によって定義された2次元空間にクラスを投影することや画像埋め込みタブで検査することが可能です。 DataRobotでは、画像埋め込み実装のための次元削減アプローチとなる、最先端の教師なし学習であるTrimapを使用しています。
画像埋め込みは投影に関する機能です。 DataRobotは、画像が存在する超高次元空間(224x224x3または528次元)を使用して、それらを2D空間に投影します。 それらの近接性はデータに依存しますが、外れ値の検出に役立つことがあります。