ホームページ > テクノロジー周辺機器 > AI > 顔認識アルゴリズム技術の開発動向が1つの記事でわかる

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

WBOY
リリース: 2023-04-09 13:21:06
転載
1370 人が閲覧しました

まえがき

ブラッド・バード監督、トム・クルーズ主演の『ミッション:インポッシブル4』を皆さんは見たことがあるのではないでしょうか?混雑した駅で、瞬きするだけでコンピューターに認識され、すぐにエージェントが追跡します。彼に会った美しい女性は致命的な殺人者で、携帯電話の警報音が鳴り響き、その美女の名前と情報がすでに表示されています。これがこの記事で紹介したい顔認識アルゴリズムであり、パブリック クラウド AI プラットフォームを使用してモデルをトレーニングする方法です。

人工知能の分野で初期に成熟し、広く実装されているテクノロジーの 1 つである顔認識の目的は、写真やビデオ内の顔の識別を決定することです。一般的な携帯電話の顔認証ロック解除や顔決済から、セキュリティ分野などの顔認証制御まで、顔認証技術の応用範囲は多岐にわたります。顔は各人の生得的な特徴であり、この特徴はユニークで簡単にコピーできないため、身元確認に必要な前提条件となります。

顔認識の研究は 1960 年代に始まり、コンピュータ技術と光学イメージング技術の絶え間ない進歩、そして近年のニューラル ネットワーク技術の復活、特に畳み込みアルゴリズムの大成功により、画像認識および検出におけるニューラル ネットワークにより、顔認識システムのパフォーマンスが大幅に向上しました。この記事では、顔認証技術の技術的な詳細から始まり、顔認証技術の開発プロセスを予備的に理解していただき、後半では ModelArts プラットフォームのカスタム イメージを使用して説明します。パブリック クラウド コンピューティング リソースを使用する方法により、使用可能な顔認識モデルを迅速にトレーニングできます。

#本文

従来の画像処理および機械学習テクノロジーに基づく場合でも、深層学習テクノロジーを使用する場合でも、プロセスは同じです。図 1 に示すように、顔認識システムには、顔検出、位置合わせ、エンコード、マッチングという 4 つの基本的なリンクが含まれています。したがって、このパートではまず、従来の画像処理および機械学習アルゴリズムに基づく顔認識システムの概要を説明し、顔認識分野における深層学習アルゴリズム全体の開発状況を理解できるようにします。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる#顔検出プロセス

従来の機械学習アルゴリズム

前述したように、顔認識の目的は画像内の顔が何であるかを判断するには、まず画像内の顔を検出する必要がありますが、実際、このステップは最終的にはターゲット検出の問題になります。従来の画像ターゲット検出アルゴリズムは主に、提案フレーム生成、特徴量エンジニアリング、分類の 3 つの部分で構成されており、有名な RCNN シリーズのアルゴリズムを含む最適化のアイデアもこの 3 つの部分に基づいています。

最初のステップは、提案フレームを生成することです。このステップの最も単純なアイデアは、画像内で検出されるフレームの束を切り出し、ターゲットが存在するかどうかを検出することです。フレーム内にターゲットが存在する場合、元の画像内のフレームの位置がターゲットが検出された位置になります。したがって、このステップでターゲットをカバーする範囲が広いほど、提案されたフレーム生成戦略はより適切になります。一般的な提案ボックス生成戦略には、次の図に示すように、スライディング ウィンドウ、選択的検索、ランダム化プリムなどが含まれ、多数の候補ボックスが生成されます。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

多数の候補フレームを取得した後、従来の顔検出アルゴリズムの次に重要な部分は特徴エンジニアリングです。特徴エンジニアリングでは、アルゴリズム エンジニアの専門知識を実際に使用して、さまざまなシーンの顔から、エッジ特徴、形状形態特徴、テクスチャ特徴などのさまざまな特徴を抽出します。具体的なアルゴリズム テクノロジには、LBP、Gabor、Haar、SIFT などが含まれます。特徴抽出アルゴリズムは、2 次元行列で表される顔画像をさまざまな特徴ベクトルの表現に変換します。

特徴ベクトルを取得した後、adaboost、カスケード、SVM、ランダム フォレストなどを使用して、従来の機械学習分類器を使用して特徴を分類し、それが顔であるかどうかを判断できます。待って。従来の分類器による分類後、顔領域、特徴ベクトル、分類信頼度などが得られます。この情報を使用して、顔の位置合わせ、特徴の表現、顔の一致認識を完了できます。

従来の手法の中でも古典的な HAAR AdaBoost 手法を例に挙げると、特徴抽出段階では、まず haar 特徴を使用して画像から多くの単純な特徴を抽出します。 Haar の特徴を以下の図に示します。さまざまなサイズの顔の検出に対応するために、通常はガウス ピラミッドを使用して、さまざまな解像度の画像からハール特徴を抽出します。

Haar特徴量の計算方法は、白い部分の画素の合計から黒い部分を減算するため、顔部分と顔以外の部分では得られる値が異なります。一般に、特定の実装プロセスでは、積分図法を使用して迅速に実装できます。一般に、20*20 に正規化されたトレーニング画像では、利用可能な Haar 特徴量は約 10,000 個であるため、この特徴スケールであれば、機械学習アルゴリズムを使用して分類と識別を行うことができます。

Haar 特徴を取得した後、分類に Adaboost を使用できます。Adaboost アルゴリズムは、複数の弱分類方法を組み合わせて、新しい強分類方法を形成します。カスケード分類器とトレーニングされた特徴選択閾値に基づいて、顔検出を完了できます。

上記の方法から、従来の機械学習アルゴリズムは特徴ベースのアルゴリズムであることがわかります。そのため、特徴エンジニアリングとパラメータの調整 アルゴリズムの効果もあまり良くありません。さらに、制約のない環境において、人工設計がさまざまな変化する条件に対して堅牢であることは非常に困難です。 これまで、画像アルゴリズムは従来の画像処理手法を使用して、現実のシナリオと専門家の経験に基づいて多数の特徴を抽出し、抽出された特徴に対して統計学習を実行していました。アルゴリズムは現実のシーンと専門家の経験に依存しており、顔などの巨大なカテゴリや各カテゴリのサンプルの不均衡が深刻な制約のないシーンでは効果があまり良くありません。したがって、近年の画像処理におけるディープラーニングの大成功に伴い、顔認識技術もディープラーニングに基づいており、非常に優れた成果を上げています。

#ディープラーニングの顔認識分野への応用

ディープラーニングによる顔認識システムでは、問題はターゲット検出問題とターゲット検出問題に分けられます。分類問題とターゲット検出問題は、本質的に深層学習における分類問題と回帰問題であるため、画像分類における畳み込みニューラル ネットワークの適用の成功により、顔認識システムの効果は急速かつ大幅に向上しました。その結果、多数のビジュアル アルゴリズム会社が誕生し、顔認識は社会生活のあらゆる側面に適用されています。

実際、顔認識にニューラル ネットワークを使用することは新しいアイデアではありません。1997 年に研究者は、顔検出、目の位置、顔認識に基づいた方法と呼ばれる方法を提案しました。確率的な意思決定に。この顔認識 PDBNN は、隠れユニットの数を減らし、過剰適合を回避するために、トレーニング対象ごとに完全に接続されたサブネットワークに分割されています。研究者らは、密度とエッジの特徴を使用して 2 つの PBDNN を個別にトレーニングし、その出力を組み合わせて最終的な分類の決定を行いました。しかし、当時は計算能力とデータが深刻に不足していたため、アルゴリズムは比較的単純だったため、あまり良い結果は得られませんでした。バックプロパゲーション理論と計算能力フレームワークが今年になってようやく成熟したことにより、顔認識アルゴリズムの有効性が大幅に向上し始めています。

ディープ ラーニングでは、完全な顔認識システムには、図 1 に示す 4 つのステップも含まれています。最初のステップは顔検出アルゴリズムと呼ばれ、本質的にはターゲット検出アルゴリズムです。 2 番目のステップは顔の位置合わせと呼ばれるもので、現在はキーポイントの幾何学的位置合わせと深層学習に基づく顔の位置合わせに基づいています。 3番目のステップは特徴表現であり、深層学習では、分類ネットワークの考え方を通じて、分類ネットワーク内のいくつかの特徴層が顔の特徴表現として抽出され、その後、標準の顔画像が同様に処理され、最後に比較を通じて、クエリ方式により顔認識システム全体が完成します。以下は、顔検出および顔認識アルゴリズムの開発の概要です。

顔検出

画像分類における深層学習が大成功を収めた後、それはすぐに顔検出の問題に使用されました。この問題を解決するには、CNN ネットワークのスケール不変性に基づいて、画像をさまざまなスケールでスケーリングし、推論を実行してカテゴリと位置情報を直接予測します。さらに、特徴マップの各点の直接位置回帰により、取得された顔フレームの精度は比較的低いため、一部の人々は、多段階分類器に基づく粗いから細かい検出戦略を提案しています。顔を検出する方法としては、主に Cascade、CNN、DenseBox、MTCNN などが挙げられます。

MTCNN は、顔領域検出と顔キーポイント検出を初めて組み合わせたマルチタスク手法です。Cascade CNN と同様に、これもカスケード フレームワークに基づいていますが、 MTCNN は通常、PNet、RNet、ONet の 3 つの部分に分かれており、そのネットワーク構造は次の図に示されています。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

まず、PNet ネットワークは入力画像をさまざまなサイズにリサイズします。入力として、2 つの畳み込み層を直接通過し、顔分類と顔検出フレームを返します。この部分は大まかな検出と呼ばれます。元画像から大まかに検出した顔を切り出した後、入力されたR-Net上で再度顔検出を行います。最後に、得られた顔は最終的に O-Net に入力され、得られた O-Net の出力結果が最終的な顔検出結果となります。 MTCNN の全体的なプロセスは比較的単純で、迅速に展開して実装できますが、MTCNN には多くの欠点もあります。複数段階のタスク トレーニングを含めるには時間がかかり、多数の中間結果を保存するには大量のストレージ スペースが必要になります。さらに、修正されたネットワークは特徴点に対して境界ボックス回帰を直接実行するため、小さなターゲットの顔の検出に対する効果はあまり良くありません。さらに、推論プロセス中に、さまざまなサイズの顔検出のニーズを満たすために、ネットワークは顔画像をさまざまなサイズにサイズ変更する必要があり、これは推論の速度に重大な影響を与えます。

ターゲット検出の分野の発展に伴い、ターゲット検出におけるボトルネックの多くは、基礎となるネットワーク セマンティクスは低いものの、比較的高い測位精度と高レベルのネットワークにあることが、ますます多くの実験証拠によって証明されています。セマンティクス 測位精度は高いが測位精度は低いという矛盾のため、有名な Faster-rcnn、SSD、yolo シリーズなどのターゲット検出ネットワークでは、アンカーベース戦略とクロスレイヤー融合戦略も一般的になってきました。したがって、顔検出アルゴリズムでは、さまざまなサイズの顔の検出効果を満たすために、アンカーとマルチチャネル出力を使用するものが増えており、最も有名なアルゴリズムは SSH ネットワーク構造です。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

上の図からわかるように、SSH ネットワークには、さまざまなネットワーク層の出力を処理するためのメソッドがすでにあり、次のように実行できます。したがって、異なるサイズの顔の検出プロセスは単一ステージと呼ばれます。 SSH ネットワークも比較的単純で、VGG のさまざまな畳み込み層で分岐計算と出力を実行するだけです。さらに、高レベルの特徴がアップサンプリングされ、低レベルの特徴を使用して Eltwise Sum が実行され、低レベルの特徴と高レベルの特徴の特徴融合が完了します。さらに、SSH ネットワークは検出モジュールとコンテキスト モジュールも設計しており、コンテキスト モジュールは検出モジュールの一部として、より多くのコンテキスト情報とより大きな受容野を取得するための開始構造を採用しています。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

#SSH の検出モジュール

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

SSH の検出モジュールのコンテキスト モジュール

SSH は、1×1 畳み込みを使用して最終回帰および分類分岐結果を出力し、全結合層を使用しないため、さまざまなサイズの画像の入力が出力結果を確実に取得できます。当時の完全畳み込み設計手法のトレンド。残念ながら、このネットワークはランドマーク ポイントを出力しません。また、コンテキスト構造は、より一般的な特徴ピラミッド構造を使用していません。VGG16 のバックボーンも比較的浅いです。顔最適化技術の継続的な進歩により、さまざまなトリックも可能になりつつあります。より成熟した。そこで最後に、現在の顔検出アルゴリズムで広く使用されている Retinaface ネットワークを紹介したいと思います。

Retinaface は Google によって提案され、基本的に RetinaNet のネットワーク構造に基づいており、特徴ピラミッド技術を使用してマルチスケール情報の融合を実現し、小さな情報の検出に重要な役割を果たします。オブジェクト。ネットワーク構成を以下に示します。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

上の図からわかるように、Retinaface のバックボーン ネットワークは一般的な畳み込みニューラル ネットワークであり、そこに機能ピラミッド構造とコンテキスト モジュールが追加されています。モジュール は、コンテキスト情報をさらに統合し、分類、検出、ランドマーク点回帰、画像の自己強化などのさまざまなタスクを完了します。

顔検出の本質はターゲット検出タスクであるため、ターゲット検出の今後の方向性は顔の最適化の方向にも当てはまります。現時点では、ターゲット検出において小さなターゲットや遮蔽されたターゲットを検出することは依然として困難であり、さらに、ほとんどの検出ネットワークはエンド側に導入されることが増えているため、エンド側に基づいたネットワークモデルの圧縮と再構成の高速化はアルゴリズムにとってより困難ですエンジニア ディープラーニング検出アルゴリズムの理解と応用。

顔認識

顔認識問題の本質は分類問題、つまり各個人をクラスとして分類して検出することですが、実際のアプリケーションのプロセスでは多くの問題が発生します。まず、顔のカテゴリが多数あります。町内の全員を識別したい場合は、100,000 近くのカテゴリが存在します。さらに、各人に利用できるラベル付きサンプルは非常に少なく、大量のロングテール データが存在します。 。上記の問題に基づいて、従来の CNN 分類ネットワークを変更する必要があります。

ディープ畳み込みネットワークはブラック ボックス モデルですが、データ トレーニングを通じて画像やオブジェクトの特徴を特徴付けることができることがわかっています。したがって、顔認識アルゴリズムは、畳み込みネットワークを通じて多数の顔特徴ベクトルを抽出し、類似性の判断とベース ライブラリとの比較に基づいて顔認識プロセスを完了することができるため、アルゴリズム ネットワークは異なる顔に対して異なる特徴を生成できます。同じ顔に対して類似の特徴を生成することは、このタイプの埋め込みタスクの焦点、つまり、クラス間距離を最大化し、クラス内距離を最小化する方法です。

顔認識では、バックボーン ネットワークはさまざまな畳み込みニューラル ネットワークを使用して、resnet、インセプションなどの特徴抽出を完了できます。損失関数の最後の層の設計と実装において。次に、2 つの考え方に基づく深層学習に基づく顔認識アルゴリズムのさまざまな損失関数を分析してみましょう。

アイデア 1: 対比損失、三重項損失、サンプリング方法を含む計量学習

アイデア 2: 中心を伴うソフトマックスを含むマージンベースの分類損失、球面、基準面、AM-sofrmax(cosface)、および円弧面。

#1. 指標の学習

##(1)対比損失 #深層学習における計量学習のアイデアの最初の応用の 1 つは、DeepID2 です。 DeepID2 の最も重要な改善点は、同じネットワークが検証と分類を同時に (2 つの監視信号を使用して) トレーニングすることです。このうち、検証損失の特徴層には対照的な損失が導入されています。

対照損失は、同じカテゴリの距離の最小化だけでなく、異なるカテゴリの距離の最大化も考慮し、ラベル情報を最大限に活用することで顔認識の精度を向上させます。トレーニングサンプルの。したがって、損失関数は基本的に、同じ人物の写真を特徴空間内で十分に近づけ、異なる人物は特定のしきい値を超えるまで特徴空間内で十分に遠く離れたものにします。 (トリプレット

の損失に少し似ています)。


#対比損失では 2 つの信号が導入され、その 2 つの信号を通じてネットワークがトレーニングされます。信号を識別する式は次のとおりです。 顔認識アルゴリズム技術の開発動向が1つの記事でわかる

信号を検証する式は次のとおりです。 顔認識アルゴリズム技術の開発動向が1つの記事でわかる

この信号を元にDeepID2は1枚の写真を単位とするのではなく、画像ペアを単位として学習するため、2枚の写真が入力されるたびに同一人物に対して1枚となる同一人物でない場合は -1.顔認識アルゴリズム技術の開発動向が1つの記事でわかる

(2)FaceNet からのトリプレット損失

この記事は 15 年前に作成されたものです。Google の FaceNet は、顔認識の分野における画期的な取り組みでもあります。これは、ほとんどの顔の問題に対する統一されたソリューション フレームワークを提案しています。つまり、認識、検証、検索などの問題はすべて特徴空間で実行できます。焦点を当てる必要があるのは、顔を特徴空間に適切にマッピングする方法です。 。

DeepID2 に基づいて、Google は分類層、つまり分類損失を放棄し、対照損失を三重項損失に改良しました。これは、より優れた特徴を学習するという 1 つの目的のみのためです。

トリプレット損失の損失関数を直接ポストします。入力は画像ペアではなくなり、アンカー面、ネガティブ面、ポジティブ面という 3 つの画像 (トリプレット) になります。アンカーとポジティブフェイスは同一人物、ネガティブフェイスは別人です。この場合、三重項損失の損失関数は次のように表すことができます:

この式を直感的に説明すると、特徴空間では、アンカーとポジティブの間の距離は、アンカーとネガティブの間の距離よりも小さく、マージン アルファを超えています。これとコントラスト損失との直感的な違いを次の図に示します。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

#(3) メトリクス学習の問題

上記 2 つ損失関数は非常に優れた効果があり、人間の客観的な認知と一致しているため、実際のプロジェクトで広く使用されていますが、この方法にはまだいくつかの欠点があります。

  • モデルのトレーニングは大量のデータに依存しており、フィッティング プロセスは非常に時間がかかります。コントラスト損失とトリプレット損失は両方ともペアまたはトリプレットに基づいているため、多数の正と負のサンプルを準備する必要があり、トレーニング中に長時間にわたってサンプルの可能なすべての組み合わせを完全に調査することは不可能です。インターネット上には、10,000 人のアジアのデータセットと約 500,000 枚の画像のフィッティングを完了するのに 1 か月かかるというブログがあります。
  • サンプル モードはモデルのトレーニングに影響します。たとえば、トリプレット損失の場合、トレーニング プロセス中にアンカー面、ネガティブ面、ポジティブ面をランダムにサンプリングする必要があります。適切なサンプル サンプリングによりトレーニング速度とモデルの収束が高速化されますが、ランダム サンプリング中に非常に良好な結果を達成することは困難です。プロセス。
  • ハード トリプレットのマイニングが不足していることも、ほとんどのモデル トレーニングで問題になります。たとえば、顔認識の分野では、ハード ネガは似ているが異なる人物を表し、ハード ポジティブは同じ人物だが完全に異なる姿勢や表情などを表します。認識モデルの精度を向上させるには、ハード サンプルの学習と特別な処理が不可欠です。

#2. メトリクス学習の欠点を修正するためのさまざまなトリック

(1 ) Finetune

参考論文: Deep Face Recognition

論文「Deep Face Recognition」では、三重項損失のトレーニングを高速化するために、最初にソフトマックスを使用して顔認識モデルをトレーニングし、次に最上位の分類層を削除し、次に三重項損失を使用してモデルの特徴層を微調整しました。トレーニングを加速しながら。この方法は、トリプレット損失をトレーニングするときに最も一般的に使用される方法でもあります。

(2) Triplet loss の修正

参考論文: In Defense of the Triplet Loss for人物の再識別

#著者は、トリプレット喪失の欠点について述べました。トリプレット損失トレーニングに必要なトリプレットの場合、アンカー (a)、ポジティブ (p)、およびネガティブ (n) をトレーニング セットからランダムに選択する必要があります。損失関数の駆動により、非常に単純なサンプルの組み合わせ、つまり、非常に似た正のサンプルと非常に似た負のサンプルが選択される可能性が非常に高くなります。ネットワークが単純なサンプルで学習を続けると、制限が生じます。ネットワークの正常化能力。そこで、三重項損失を修正し、新しいトリックを追加しました。多くの実験により、この改良された方法が非常にうまく機能することが証明されました。

Google が提供する Facenet Triplet Loss Training では、B の Triplet セットを選択すると、データが順番に 3 つずつグループに配置されるため、合計 3B 個の組み合わせが存在します。 , しかし、これらの 3B イメージには実際には有効なトリプレットの組み合わせが同じだけあり、3B だけを使用するのは無駄です。

この論文では、著者は TriHard 損失を提案しました。中心となるアイデアは、トリプレット損失に基づいてハード サンプル処理を追加することです。トレーニング バッチごとに、ID を持つ P 人の歩行者をランダムに選択します。 、各歩行者は K 個の異なるピクチャをランダムに選択します。つまり、バッチには P×K 個のピクチャが含まれます。次に、バッチ内の各画像 a に対して、最も困難なポジティブ サンプルと最も困難なネガティブ サンプルを選択して、a とのトリプレットを形成できます。まず、a と同じ ID を持つピクチャ セットを A として定義し、異なる ID を持つ残りのピクチャ セットを B として定義します。すると、TriHard 損失は次のように表されます。 その中には、人為的に設定されたしきい値パラメーターもあります。 TriHard 損失は、a と特徴空間内のバッチ内の各ピクチャとの間のユークリッド距離を計算し、a から最も遠い (最も似ていない) 正のサンプル p と、a に最も近い (最も似ている) 負のサンプル n を選択します。 . 三重項損失を計算します。ここで、d はユークリッド距離を表します。損失関数を記述する別の方法は次のとおりです。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

さらに、著者はラウンド中にいくつかの実験上のポイントも提案しました:

  • 平方根後のユークリッド距離は実際のユークリッドほど良くありません。平方根後の距離 距離 (理由は後で簡単に説明します)
  • は、元の Triplet 損失式を置き換えるために Soft-Margin 損失関数を提案しました。不正なローカルで関数が収束するのを防ぎ、アルゴリズムの収束をある程度加速できます。
  • 導入されたバッチ ハード サンプリング

この方法は、困難な例を考慮すると、従来の 3 重項損失よりも優れています。

(3) 損失およびサンプル手法の変更

参考論文: Lifted によるディープ メトリック ラーニング構造化特徴埋め込み

この論文では、まず、既存のトリプレット手法ではミニバッチ SGD トレーニングのトレーニング バッチの利点を十分に活用できず、変換されたペアワイズ距離のベクトルを創造的に使用することを提案します。ペアごとの
distance の行列に変換し、新しい構造化損失関数が設計され、非常に良好な結果が得られました。以下の図に示すように、コントラスト埋め込み、トリプレット埋め込み、リフト構造埋め込みの 3 つの方法のサンプル図です。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

直観的には、リフト構造化埋め込みには、より多くの分類モードが含まれます。大量のデータによって引き起こされるトレーニングの困難を避けるために、著者はこの A に基づいています。構造化された損失関数が与えられます。以下に示すように。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

#ここで、P は陽性サンプル セット、N は陰性サンプル セットです。上記の損失関数と比較すると、この損失関数はサンプルセットの問題を考慮し始めていることがわかります。ただし、サンプル ペア間のすべての負のエッジが有用な情報を持っているわけではありません。つまり、ランダムにサンプリングされたサンプル ペア間の負のエッジには、非常に限られた情報しか含まれていません。したがって、非ランダム サンプリング方法を設計する必要があります。

上記の構造化された損失関数を通じて、損失関数の最終計算では、最も類似したハード ペアと最も類似しないハード ペア (つまり、損失関数の最大値) が計算されることがわかります。これは、トレーニング プロセス中にトレーニング ミニバッチに困難な 近傍情報を追加することに相当します。このようにして、トレーニング データは、高い確率でハード ネガティブとハード ポジティブのサンプルを検索できます。継続的な進歩により、ハード サンプルのトレーニングでも、クラス間の距離を最大化し、クラス内の距離を最小化するという目的が達成されます。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

上の図に示すように、この記事ではメトリック学習を実行するときにサンプルのペアをランダムに選択するのではなく、複数の種類のサンプルを組み合わせます。それらを区別するのが難しい人。さらに、この記事では、最大値を求めるプロセスや単一の最も困難な負の値を求めるプロセスにより、ネットワークが不適切な局所最適値に収束する可能性があるとも述べられていますが、これはおそらく最大値の切り捨て効果が原因で、勾配が急になったり、グラデーションの不連続部が多すぎます。著者は、損失 関数をさらに改良し、次の式に示す滑らかな上限を採用しました。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

(4) サンプルメソッドと三重項損失へのさらなる修正

参考文献: 深層埋め込み学習におけるサンプリングの問題

  • サンプリング方法の修正

この記事では厳しく指摘されていますマイナス サンプルのアンカー距離が小さいため、ノイズがある場合、このサンプリング方法はノイズの影響を受けやすく、トレーニング中にモデルが崩壊する可能性があります。 FaceNetはかつてセミハードネガティブマイニング手法を提案していましたが、そこで提案された手法は、サンプリングされたサンプルをあまりハードにしないというものでした。しかし、著者の分析によれば、サンプルはサンプル内で均一にサンプリングされる必要があるため、最良のサンプリング状態は、ハードサンプル、セミハードサンプル、イージーサンプルを含む均一に分散したネガティブサンプルにあるはずであるため、著者は新しいサンプリング方法を提案しています距離加重サンプリング。

実際には、私たちのチームはすべてのサンプルをペアでサンプリングし、それらの距離を計算します。最終的に、点ペアの距離の分布には次の関係があります:

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

次に、指定された距離に基づいて、上記の関数の逆関数を通じてサンプリング確率を取得でき、各距離に必要なサンプリングの割合はこの確率に基づいて決定されます。アンカーが与えられた場合、負の例をサンプリングする確率は次のとおりです。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

トレーニング サンプルはトレーニング勾配と強い相関があるため、著者は、サンプリング距離、サンプリング方法、データ勾配分散の関係を次の図に示します。図からわかるように、ハード ネガティブ マイニング法でサンプリングされたサンプルはすべて高分散領域にあり、データセットにノイズがある場合、サンプリングはノイズの影響を受けやすく、モデルの崩壊につながります。ランダムにサンプリングされたサンプルは分散の低い領域に集中する傾向があるため、損失は非常に小さくなりますが、現時点ではモデルは実際には十分にトレーニングされていません。セミハード ネガティブ マイニングのサンプリング範囲は非常に小さいため、モデルが非常に早く収束し、損失が非常にゆっくりと減少する可能性がありますが、実際には、現時点ではモデルは十分にトレーニングされていません。この記事の目標は、Sample でデータセット全体にわたって均等に実現できます。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

  • 損失関数の変更

著者は保守的なものを観察しています。三重項損失中に発見された問題は、負のサンプルが非常に硬い場合、損失関数は非常に滑らかになるということです。つまり、勾配が非常に小さくなります。トレーニングの場合、勾配が小さいということは、非常に硬いサンプルを完全にはトレーニングできないことを意味します。ネットワーク上ではハードサンプルの有効な情報が得られないため、ハードサンプルの効果が悪くなってしまいます。したがって、ハードサンプルの周囲の損失がそれほど滑らかではない場合、つまり、ディープラーニングでよく使用される導関数が1である場合(reluなど)、ハードモードは勾配消失の問題を解決します。さらに、損失関数は、正と負のサンプルの両方を考慮するために三重項損失を実装する必要があり、さまざまなデータ分布に適応するマージン設計の機能も備えている必要があります。損失関数は次のとおりです:

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

アンカー サンプルとポジティブ サンプル間の距離をポジティブ サンプル ペア距離と呼び、アンカー サンプルと呼びます。サンプルとネガティブサンプル それらの間の距離は、ネガティブペア間の距離です。式のパラメータ beta は、正のペア間の距離と負のペア間の距離の間の制限を定義します。正のペア間の距離 Dij がベータより大きい場合、損失が増加します。または、負のペア間の距離 Dij が大きい場合、損失は増加します。ペアがベータより小さい場合、損失が増加します。 A はサンプルの分離間隔を制御します。サンプルが正のペアの場合、yij は 1 であり、サンプルが負のペアの場合、yij は -1 です。下の図は損失関数曲線を示しています。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

上の図を見ると、非常に難しいときにグラデーションが消える理由がわかります。0 点に近づくと、グラデーションが消えてしまうからです。ブルー 線はますます滑らかになり、グラデーションはますます小さくなります。さらに、作者は設定を最適化し、サンプルバイアス、カテゴリバイアス、ハイパーパラメータを追加し、損失関数をさらに最適化し、トレーニングプロセスに従って値を自動的に変更できます。

3. マージンベースの分類

マージンベースの分類は、損失を直接計算するメトリクス学習とは異なります。フィーチャ レイヤー フィーチャに強力な直感的な制限を課すため、顔認識をトレーニング用の分類タスクとして引き続き扱います。softmax
式を変更することで、間接的にフィーチャ レイヤーにマージン制限を実装し、最終的なフィーチャがネットワークによって取得されるようにします。もっと差別的。

#(1) 中心損失

## 参考論文: 深顔認識のための識別特徴学習アプローチ #

ECCV 2016 のこの記事では、主に、同じカテゴリをまとめて圧縮し、最終的により識別可能な特徴を取得するために、顔のトレーニングでソフトマックス損失を支援する新しい損失、中心損失を提案しています。中心損失とは、クラス内距離を短縮するという目的を達成するために、各カテゴリにカテゴリ中心を提供し、最小バッチ内の各サンプルと対応するカテゴリ中心との間の距離を最小化することを意味します。以下の図は、サンプルとクラス中心間の距離を最小化する損失関数を示しています。

は各バッチの各サンプルに対応するカテゴリ中心であり、特徴次元と同じであり、ユークリッド距離を用いた高次元多様体距離として表現されます。したがって、ソフトマックスに基づいて、中心損失の損失関数は次のようになります。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

個人的に理解している中心損失は、損失関数にクラスタリングを追加するようなものです。トレーニングとして処理が進むにつれて、サンプルは意識的に各バッチの中心に集められ、クラス間の差がさらに最大化されます。しかし、高次元の特徴の場合、ユークリッド距離はクラスタリングの距離を反映しないため、このような単純なクラスタリングでは高次元でより良い結果を達成できないと思います。

(2) L-Softmax

元の Softmax の目的は、ベクトルを乗算することです。関係に変換されます。ベクトルのモジュールと角度の間、つまり、これに基づいて、L-Softmax は正の整数変数 m を追加したいと考えています。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

# # がわかります。

#結果として得られる決定境界は、上記の不等式をより厳密に制限することができ、クラス内の距離をよりコンパクトにし、クラス間の距離をより区別することができます。したがって、上記の式とソフトマックスの式に基づいて、L-ソフトマックスの式は次のように取得できます。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

cos は減少関数なので、m をかけると内積が小さくなり、最終的には学習によりクラス間の距離自体が広がっていきます。 m の大きさを制御することで、クラス内およびクラス間の距離の変化を確認できます。2 次元グラフは次のようになります。著者は、順伝播と推論のプロセスでカテゴリ ベクトル間の角度がマージン プロセスを満たし、確実に単調減少することを確認するために、新しい関数形式を構築します。

L-Softmax のパラメータの調整が難しく、より良い結果を得るには m のパラメータを繰り返し調整する必要があると報告する人もいます。 顔認識アルゴリズム技術の開発動向が1つの記事でわかる

(3)Normface

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

##参考論文: NormFace: 顔認証のための L2 Hypersphere Embedding

この論文は非常に興味深い記事であり、重みと特徴の正規化について多くの興味深い議論が行われています。記事では、球面は良いが美しくない、と指摘している。テスト段階では、Sphereface はフィーチャ間のコサイン値によって類似性を測定します。つまり、角度が類似性の尺度として使用されます。ただし、学習プロセス中にも問題が発生します。重みが正規化されていません。学習プロセス中に損失 関数は減少しますが、重みのモジュールはますます大きくなるため、最適化の方向は異なります。球面損失関数はそれほど厳密ではありませんが、実際、最適化の方向性の 1 つはフィーチャの長さを長くすることです。一部のブロガーが実験を行ったところ、以下の図に示すように、m が増加するにつれて座標のスケールも増加し続けることがわかりました。

したがって、作成者は最適化プロセス中に特徴を正規化しました。対応する損失関数も次のようになります:



W と f は両方とも正規化された特徴であり、2 つの内積は角度の余弦値です。パラメータ s は、勾配サイズの合理性を保証する数学的性質のために導入されています。元の論文には比較的直感的な説明があります。焦点ではない元の論文を読むことができます。 s は、学習可能なパラメータまたはスーパー パラメータに変えることができます。論文の著者は多くの推奨値を示しており、それらは論文内で見つけることができます。実際、FaceNet では正規化ユークリッド距離とコサイン距離が統一されています。

4. AM-softmax/CosFace

##参考資料: 顔認証のための加算マージン Softmax

CosFace: ディープ顔認識のための大きなマージン コサイン損失

上記の論文を見ると、次のことがわかります。欠落しているものが 1 つある、つまりマージンまたはマージンが少ないということは、AM-softmax が正規化に基づいてマージンを導入することを意味します。損失関数は次のとおりです。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

直観的には、-m 比が小さいため、損失関数の値は Normface の値よりも大きくなります。という余裕感があります。 mはペナルティを制御するハイパーパラメータで、mが大きいほどペナルティが強くなります。この方法の良い点は、再現が簡単で、パラメータ調整のコツがあまりなく、効果が非常に優れていることです。


#(1) ArcFace

AM-softmax と比較すると、違いは Arcface がマージンを導入する方法にあります 損失関数:

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

一見すると AM-softmax と同じように見えますか? m がコサインの内側であることに注意してください。記事は、上記の式の最適化に基づいて得られた特徴間の境界がより優れており、より強力な幾何学的解釈を持っていると指摘しています。

しかし、このようにマージンを導入することに何か問題はあるのでしょうか? cos(θ m) が cos(θ) より小さい必要があるかどうかをよく考えてください。

最後に、記事内の図を使用してこの問題を説明し、この章のマージンベースの分類部分の概要も作成します。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

この図は Arcface からのものです。横軸は θ で、フィーチャとクラス中心の間の角度です。縦軸は の値です。損失関数の分子インデックス (s に関係なく)、その値が小さいほど、損失関数は大きくなります。

分類ベースの顔認識に関する論文を数多く読んだ後、皆さんも損失関数について、もっと具体的に言うと、誰もが大騒ぎしているように見えると感じていると思います。は、上図のターゲット ロジットθ曲線を設計する方法を説明しています。

この曲線は、目標から逸脱したサンプルをどのように最適化するか、言い換えれば、目標からの逸脱の程度に基づいてどの程度の罰を与えるべきかを意味します。要約する 2 つのポイント:

#1. 強すぎる制約を一般化するのは簡単ではありません。たとえば、Sphereface の損失関数は、m=3 または 4 の場合、クラス内の最大距離がクラス間の最小距離より小さいという要件を満たすことができます。このとき、損失関数の値は非常に大きく、つまり目標とするロジットは非常に小さい。しかし、それはトレーニングセット外のサンプルに一般化できるという意味ではありません。制約が強すぎると、モデルのパフォーマンスが低下し、トレーニングの収束が困難になります。

2. 最適化するサンプルの種類を選択することが重要です。 Arcface の記事では、θ∈[60°, 90°] のサンプルにあまりにも多くの罰を与えると、トレーニングが収束しない可能性があると指摘しています。 θ ∈ [30°, 60°] のサンプルを最適化するとモデルの精度が向上する可能性がありますが、θ ∈ [0°, 30°] のサンプルを最適化しすぎると大幅な改善は得られません。角度が大きいサンプルについては、ターゲットからの逸脱が大きく、強制的な最適化によりモデルのパフォーマンスが低下する可能性があります。

これは、前のセクションで残された質問への答えでもあります。上の図の円弧面の後ろの曲線は上昇していますが、これは無関係であり、有益ですらあります。角度が大きい硬いサンプルを最適化してもメリットがない可能性があるためです。これは、FaceNet のサンプル選択のセミハード戦略と同じです。

マージンベースの分類 拡張読書

1. 深顔認識のための識別特徴学習アプローチ [14]

提案中心損失は重み付けされ、元のソフトマックス損失に統合されます。ユークリッド空間クラス中心を維持することにより、クラス内距離が短縮され、特徴の識別力が強化されます。

2. 畳み込みニューラル ネットワークのマージンが大きいソフトマックス損失 [10]

Sphereface 著者の以前の記事「非正規化重み」では、ソフトマックス損失におけるマージンを紹介しました。スフィアフェイスのトレーニングの詳細も含まれます。

ModelArts を使用して顔モデルをトレーニングする

顔認識アルゴリズムの実装の説明

この記事で導入した顔認識アルゴリズムこのモデルは主に 2 つの部分で構成されます。

  1. 最初の部分は顔検出アルゴリズム モデルで、写真内の顔を認識し、顔の位置情報を返します。
  2. 2 番目の部分は、顔の特徴表現アルゴリズム モデルであり、認識モデルとも呼ばれます。この部分では、トリミングされた顔画像を固定次元ベクトルに埋め込み、そのベクトルを使用して基本ライブラリと比較し、顔認識のプロセス全体を完了します。

下の図に示すように、アルゴリズム実装プロセス全体はオフライン部分とオンライン部分に分かれています。さまざまな人物を識別する前に、まずトレーニングを使用します。アルゴリズムは、標準の顔のベースデータベースを作成し、そのベースデータベースデータをモデルアーツ上に保存します。次に、各推論プロセス中に、画像入力は顔検出モデルと顔認識モデルを通過して顔の特徴を取得し、これらの特徴に基づいて、最も類似性の高いペアを持つ特徴がベース ライブラリで検索されて完了します。顔認識プロセス。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

実装プロセスでは、Retinaface resnet50 arcface に基づくアルゴリズムを使用して、顔画像の特徴抽出を完了しました。ここでは Retinaface が次のように使用されます。検出モデルと resnet50 アークフェイスを特徴抽出モデルとして使用します。

画像には、トレーニングを実行するための 2 つのスクリプトがあり、それぞれ顔検出トレーニングと顔認識トレーニングに対応します。

  • 顔検出のトレーニング スクリプトは次のとおりです:
run_face_detection_train.sh
ログイン後にコピー

このスクリプトの起動コマンドは # です# #

<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_face_detection_train.sh data_path model_output_path
ログイン後にコピー

ここで、model_output_path はモデル出力のパス、data_path は顔検出トレーニング セットの入力パス、入力画像のパス構造は次のとおりです:

detection_train_data/train/images/label.txtval/images/label.txttest/images/label.txt
ログイン後にコピー

  • 人顔認識のトレーニング スクリプトは次のとおりです:
run_face_recognition_train.sh
ログイン後にコピー

このスクリプトの起動コマンドは

<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_face_recognition_train.sh data_path model_output_path
ログイン後にコピー

ここで、model_output_path はモデル出力のパス、data_path は顔検出トレーニング セットの入力パスです。入力画像のパス構造は次のとおりです:

recognition_train_data/cele.idxcele.lstcele.recproperty
ログイン後にコピー
  • Scriptベース ライブラリによって生成される:
run_generate_data_base.sh
ログイン後にコピー

このスクリプトの起動コマンドは次のとおりです:

<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_generate_data_base.sh data_path detect_model_path recognize_model_path db_output_path
ログイン後にコピー

ここで、data_path はベース ライブラリの入力ですpath、detect_model_path は検出モデルの入力パス、recognition_model_path は認識モデルの入力パス、db_output_path はベース ライブラリの出力パスです。

  • 最下位ライブラリによって生成されたスクリプト:
run_face_recognition.sh
ログイン後にコピー

このスクリプトの起動コマンド:

<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_generate_data_base.sh data_path db_path detect_model_path recognize_model_path
ログイン後にコピー

ここで、data_path はテスト イメージの入力パス、db_path はベース ライブラリのパス、detect_model_path は検出モデルの入力パス、recognition_model_path は認識モデルの入力パスです。

トレーニングプロセス

Huawei Cloud ModelArtsにはトレーニングジョブの機能があり、モデルのトレーニングとモデルトレーニングパラメータとバージョンの管理に使用できます。この機能は、複数バージョンの反復開発に従事する開発者にとって確かに役立ちます。トレーニング ジョブにはいくつかのプリセット イメージとアルゴリズムがあり、現在、一般的に使用されるフレームワーク (Caffe、MXNet、Pytorch、TensorFlow など) と Huawei 独自の Ascend チップ エンジン イメージ (Ascend-Powered-Engine) のプリセット イメージがあります。

この記事では、ModelArts のカスタム イメージ機能に基づいて、ローカルでデバッグした完全なイメージをアップロードし、Huawei Cloud の GPU リソースを使用してモデルをトレーニングします。

Huawei Cloud 上の ModelArts を使用して、Web サイト上の一般的な有名人のデータに基づいて顔認識モデルを完成させたいと考えています。この際、顔認証ネットワークはエンジニア自身が設計したネットワーク構造であるため、カスタム画像を介してアップロードする必要があります。したがって、顔トレーニングのプロセス全体は次の 9 つのステップに分かれています:

  1. ローカル Docker 環境を構築します
  2. Huawei Cloud から基本イメージをダウンロードします
  3. に従ってカスタム イメージを構築しますニーズに合わせて環境
  4. #トレーニング データをカスタム イメージにインポート
  5. #顔認識ベース ライブラリをカスタム イメージにインポート
  6. 事前トレーニングされたモデルをカスタム イメージにインポートします
  7. カスタム イメージを SWR にアップロードします
  8. Huawei Cloud を使用しますトレーニングのためのトレーニング ジョブ
  9. 推論作業に Huawei Cloud を使用する
##ローカル Docker 環境の構築

Docker 環境はローカル コンピューター上に構築することも、Huawei Cloud でエラスティック クラウド サーバーを購入して Docker 環境を構築することもできます。プロセス全体については、Docker の公式ドキュメントを参照してください:

https://docs.docker.com/engine/install/binaries/#install-static-binaries

Huawei Cloud から基本イメージをダウンロードします。

公式 Web サイトの説明 URL:

https://support. huaweicloud.com/engineers -modelarts/modelarts_23_0085.html#modelarts_23_0085__section19397101102

トレーニングには MXNet 環境を使用する必要があります。まず、対応するカスタム イメージのベース イメージを以下からダウンロードする必要があります。ファーウェイのクラウド。公式サイトで公開されているダウンロードコマンドは以下の通りです。

顔認識アルゴリズム技術の開発動向が1つの記事でわかるコマンドの説明はトレーニングジョブベースイメージの仕様書に記載されています。

https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0217.html

スクリプト要件に従って、これを使用しましたは cuda9 のイメージです:

顔認識アルゴリズム技術の開発動向が1つの記事でわかる公式は、docker ファイルを使用する別の方法も提供しています。基本イメージの dockerfile は、トレーニング ジョブの基本イメージの仕様にも含まれています。 dockerfile を参照できます:

https://github.com/huaweicloud/ModelArts-Lab/tree/master/docs/custom_image/custom_base

自分のニーズに応じてカスタム イメージ環境を構築する

私は怠け者なので、まだ Dockerfile を使用して自分でイメージを構築していません。別のアプローチを取ります!

私たちのニーズは cuda 9 とそれに関連する Python 依存関係パッケージであるため、公式イメージが cuda 9 を提供していると仮定すると、このチュートリアルに従ってトレーニング スクリプトに追加できます。 TXT。シンプル、効率的、迅速なソリューションでニーズに応えます。 ! !以下はチュートリアルです~~~

https://support.huaweicloud.com/modelarts_faq/modelarts_05_0063.html

カスタム イメージのアップロードSWR

## 公式 Web サイトのチュートリアル:

https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0085.html# modelarts_23_0085__section19397101102

  • https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html
  • をアップロードするためのページ画像を読み取る場合、解凍後のファイルは 2GB を超えてはなりません。ただし、提供されている公式の基本イメージは 3.11 GB で、必要な事前トレーニング済みモデルを追加すると、イメージは 5 GB になるため、ページを使用してアップロードすることはできず、クライアントを使用する必要があります。イメージをアップロードするには、まず組織を作成する必要があります。

製品ドキュメントを理解するのが難しい場合は、pull/ SWR ページでのイメージ エクスペリエンスのプッシュ: 顔認識アルゴリズム技術の開発動向が1つの記事でわかる

次のガイドでは、ローカル イメージをクラウドにプッシュする方法をお客様に説明します。最初のステップはログインすることです。倉庫へ: 顔認識アルゴリズム技術の開発動向が1つの記事でわかる

2 番目のステップは、イメージをプルすることです。これを独自のカスタム イメージに置き換えます。

3 番目のステップは、組織を変更し、作成された組織を使用することです製品ドキュメントの名前に従ってください。この手順では、ローカル イメージの名前をクラウド上で認識されるイメージ名に変更する必要があります。詳細については、以下の説明を参照してください。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

4 番目のステップは、画像

顔認識アルゴリズム技術の開発動向が1つの記事でわかる# をプッシュすることです。

##これら 4 つの手順に習熟したら、このチュートリアルを終了し、クライアントを使用してアップロードできます。クライアントを使用してログインし、アップロードします。クライアント ログインは、一時的な docker login コマンドを使用して生成できます。このページは、「マイ イメージ」 -> 「クライアント アップロード」 -> 「一時的な Docker ログイン手順の生成」にあります。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

ローカル Docker 環境では、生成された一時的な docker login コマンドを使用してログインし、次のコマンドを使用してイメージをアップロードします:

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

トレーニングに Huawei Cloud トレーニング ジョブを使用します

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

Huawei Cloud ModelArts は、ユーザーがモデルをトレーニングするためのトレーニング ジョブを提供します。トレーニング ジョブで選択できるプリセット画像とカスタム画像があります。プリセット画像には市販されているほとんどのフレームワークが含まれており、特別な要件がない場合にはこれらのフレームワークの画像をトレーニングに使用することも非常に便利です。このテストでもカスタム イメージを使用します。

カスタム イメージでは、イメージ内で独自の環境を構成する必要があるだけでなく、トレーニング ジョブの開始方法を変更する場合は、トレーニングの起動方法も変更する必要があります。脚本。 Huawei Cloud ModelArts公式サイトから取得した公式イメージの/home/work/パスに起動スクリプト「run_train.sh」があるので、これを元にカスタマイズした起動スクリプトを修正する必要があります。注目すべき点は、OBSからのダウンロードに関するコマンドである「dls_get_app」です。他の部分は独自のトレーニング スクリプトに従って変更されます。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

トレーニング結果やモデルを OBS にアップロードする必要がある場合は、「dls_get_app」と「dls_upload_model」コマンドを参照する必要があります。トレーニングでは、アップロードされたスクリプトは次のとおりです。

顔認識アルゴリズム技術の開発動向が1つの記事でわかる

トレーニング ジョブをデバッグする場合、現在、無料の 1 時間の V100 を使用できます。 ModelArts トレーニング ジョブの優れた点の 1 つは、バージョン管理が容易になることです。バージョンには、実行パラメータを通じてトレーニング スクリプトに渡されたすべてのパラメータが記録されます。バージョン比較を使用してパラメータを比較することもできます。もう 1 つの便利な点は、特定のバージョンに基づいて変更できることです。これにより、すべてのパラメータを再入力する手順が減り、デバッグがより便利になります。

トレーニング ジョブでトレーニングが完了した後、モデルを ModelArts に展開してオンラインにすることもできます。

追記

現在の顔認識アルゴリズムの最適化はボトルネック時期に達していますが、技術レベルでは顔の構造や顔の姿勢の類似性、年齢の変化、複雑な環境での照明の変化、顔の装飾のブロックなど、依然として多くの問題を抱えており、複数のアルゴリズム技術の統合に基づいて顔認識のさまざまな問題を解決することは、セキュリティとインターネットの分野で依然として巨大な市場です。また、顔認証の段階的な改善に伴い、銀行やショッピングモールなどでも顔認証システムが利用されるようになってきています。そのため、生体検知など、顔認証のセキュリティ問題や攻撃対策の問題も解決すべき喫緊の課題となっています。 、3D顔認識などはお待ちください。

最後に、顔認識はディープ ラーニングの中で比較的成熟したプロジェクトです。その開発は、ディープ ラーニング自体の技術開発とも密接に関係しています。現在、多くの最適化において、ディープ ラーニングの最大の欠点は、対応する数学理論はなく、サポートと最適化によって向上するパフォーマンスも非常に限定的であるため、深層学習アルゴリズム自体の研究も今後の焦点です。

以上が顔認識アルゴリズム技術の開発動向が1つの記事でわかるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート