フェイスアルゴリズムシリーズ:詳細MTCNN顔検出

ソース| AIアルゴリズムと画像処理

カバー写真|視覚的に中国をダウンロードするCSDN有料

この記事プレビューの内容

顔検出の概念

顔検出は、様々な用途で使用するためのコンピュータ技術であるデジタル画像に人間の顔を認識することができます。顔検出はまた、人間の視覚シーンを指し、人間の顔の位置を特定するプロセス

顔検出とみなすことができる物体検出の特別な場合ターゲットの検出では、タスクは、特定のクラスの画像の位置とサイズのすべてのオブジェクトを見つけることです。このような歩行者や自動車など。

顔検出例

顔検出アルゴリズムの広い応用がMTCNN(マルチタスクカスケード畳み込みネットワーク略称)です。MTCNNアルゴリズムをベースに深い学習顔検出と顔アライメント方式の男で、それは従来のアルゴリズムに比べて、同じ時間顔検出と顔アライメント作業で行うことができ、その性能はより速く、より良い検出です。

この記事は、トレーニングMTCNNモデルを強調するものではなく、作り方をされていない使用MTCNNエキス顔の特徴点と領域を、顔認識や顔画像などのフォローアップのための方法を事前に切り開きます。

次は、私たちはその原則のその当時の深い理解のための直感的な感覚を持っているので、こと、MTCNNの使用をしています。

MTCNN使用

紙の住所:

https://kpzhang93.github.io/MTCNN_face_detection_alignment/ 

githubのリンク:

https://github.com/kpzhang93/MTCNN_face_detection_alignment

その他のバージョン

https://github.com/AITTSMD/MTCNN-Tensorflow

私は何回かを設定するために、著者が失敗し、達成CAFFE基づいていますので、当然のことながら、またpytorchバージョンを付属、mxnetフレームワークを使用して、他のフレームワークを試してみてください。

プロジェクトのリンクを使用します。https://github.com/YYuanAnyVision/mxnet_mtcnn_face_detection

その他の参考文献:

pytorchバージョン:

https://github.com/TropComplique/mtcnn-pytorch

最初のステップ:クローニングプロジェクトダウン

git clone https://github.com/YYuanAnyVision/mxnet_mtcnn_face_detection

もちろんそう途中で失敗するの、私自身はいつも多くの遅い時間、ないを試して取得できませんでした。あなたは小さなパートナーを読めばしかし、クーデターを通じて共有する前に、解決する方法を知っている必要があります。

ここでは記事へのリンクを添付:

Githubのダウンロード速度にプロジェクトの問題や失敗を解決するためのパーフェクトは遅すぎます

ステップ2:必要な環境の設定

mxnetインストールがmxnetのGPUバージョンをインストールするには、たとえば、ここに私のコンピュータでは、非常に簡単です。

インストールを完了するためのコードは1行だけ、最初のクエリ自身のインストールバージョンCUDAに対応する指示を入力してください

# 例如我的电脑是cuda 9.0的
pip install mxnet-cu90

検索ソリューションをBaiduのできるサプリメントhttps://pypi.org/project/mxnet-cu90/、より多くのコンテンツがあります。

ステップ3:実行コード

プロジェクトは、事前に訓練されたモデルとなっており、直接実行することができmain.py.

しかし、あなたが実行すると、あなたは、ああ、除外エラーが見つかります。

プロジェクトはpython2書き込みがあるためであるので、いくつかの場所を改正する必要があります。

一つの問題:はImportError:CANないインポート名'izip'(エラーファイルmtcnn_detector.py)

ソリューション:izipでジップ同等python2のitertoolsでのpython3

そのため、以下の変更がitertoolsから与えられてmtcnn_detector.pyのみを行うことができますizipは彼の党トライ以下、コメントインポートします。

具体的な操作は、main.pyが見つかり   itertoolsインポートizipから、および以下に変更することができます。

#from itertools import izip
izip = zip

main.pyを解決した後、実行中

FML、だけでなく、ダイへ

问题2:TypeError例外:「フロート」の目的は、整数として解釈することはできません

エラーの種類:「浮遊」オブジェクトは整数として解釈することはできません

:回避策は、「/」に改正され、「//」することができ、同じエラー、エラーが存在する同じ溶液。

python2のpython3と差分演算子の計算。

python3 /浮動小数点演算の結果が含まれています。python3 //除算に切り捨て表す、でpython2 / //でのpython3と等価です。

# 举个例子在python3中 //
print(3/2,3//2) # 输出 1.5, 1

莫大な苦難の後、ようやくの効果を示します:

ここでは、人物の顔を検出することができた、と独自のイメージのために、画像だけのパスにmain.py読み取りを変更する必要があります。このようなバッチ処理、保存などのよりカスタマイズは、自分のニーズに応じて添加することができます。

MTCNN原則

古典的なネットワークの場合のみ、その使用を習得するために、次は具体的にその固有の原理を説明しますので、十分ではありません。

ソースとオリジナルの論文

図4の操作、3つのステップが含まれるから知ることができます。

図1に示すように、画像ピラミッド

画像操作をリサイズ、原画像は、画像ピラミッドを生成し、異なるスケールにスケーリングされます。画像は次の3つのサブネットワークのトレーニングの異なるスケールに供給され、目的は、マルチスケール物体検出を達成するために、顔の可能な異なるサイズを検出することです。

画像ピラミッドは、マルチスケール表現の画像です。詳細はこちらを続行していない特定の画像ピラミッド原則について、興味がある記事を参照することができます。https://zhuanlan.zhihu.com/p/80362140

図3のサブネットワーク

2、P-ネット(提案ネットワーク)

用紙Pネットの元の説明:ネットワーク構造が主に得られる回帰ベクトル候補枠と顔領域のバウンディングボックス。これは、候補予測ブロック境界ボックスの回帰ベクトルに基づいて補正します。その後、我々は、NMS併合候補フレームの重複率を使用します。

P-Netは層3を畳み込む続い人物の顔領域候補ネットワーク、ネットワーク入力画像12x12x3、である、12×12の画像に顔があるか否かを判断し、背面フレーミングおよびヒトを与えますキーポイントに直面しています。

出力ネットワークの第1の部分は、顔画像が、出力ベクトルの大きさ1x1x2、すなわち2つの値が存在するか否かを決定するために使用されます。

ネットワークフレームの第2の部分の正確な位置を与えられ、一般的にコマ戻しと呼びます。時間が正確に正方形の面でない場合に12×12のP-Netの入力画像ブロックは、顔枠の完全な位置ではないかもしれない、それは左または右画像12×12することが可能であるので、出力する必要があります現在のフレームの位置比較的完璧な人物の顔枠の位置をオフセット。1×1×4のオフセットの大きさ、即ち、横軸は、フレームの左上隅の相対オフセットを示し、フレームの縦の左上隅、フレームエラーエラー、フレームの幅の高さに対してオフセット。

ネットワークの第3の部分は、顔の5つの主要な点の位置が与えられます。左目の鍵位置、右眼位置、鼻の位置、左右の口の口の位置に対応します。各キーは、出力が大きさ1×1×10のベクトルであるので、二次元を表現するために必要。

3、Rネット(絞り込みネットワーク)

Pネットの紙元の説明:すべてのP-Netの候補ブロックは、削除又はバウンディングボックス領域によって偽陽性の多くを戻すためにR-ネット、NMSとネットワーク構造に入力されます。

図のネットワークから見ることができますが、ネットワーク構造とP-Netネットワーク構造の異なるので、完全に接続された一の以上の層は、それが偽陽性抑制の優れた効果が得られます。Rネットに入る前に、スケール24x24x3に必要とされる、ネットワークの出力は、同一のP-ネット、R-Netの目的は、非顔枠の相当量を除去することです。

4、O-ネット(出力ネットワーク)

Oネットの紙元説明:この段階は、第二段階と同様であるが、この段階では、この段階で、我々はより多くの監視により顔領域を特定することを目的とします。具体的には、ネットワークは、5つの重要なポイントの出力位置に直面するだろう。

層はR-Netの層よりも厚い、処理の結果がより畳み込み層の層洗練されている方法を、図のネットワークから見ることができます。Nは、境界ボックス、スコアとキー位置の座標情報を出力含む入力画像サイズ48x48x3。

概要

P-netから、最終的なO-ネットRネットに、ネットワーク入力画像を増大させる、チャネル畳み込み複数層の数は、ネットワーク(層の数)の深さは、ますます深いですそのため、顔認識の精度も高く、高くなければなりません。

各ネットワークの理解、損失関数の利用で、私たちの深い外観の結果の効果の後。

MTCNN損失関数

顔認識、ボックスの交差エントロピーコスト関数を直接使用すると、キーポイントの位置を返すために、L2の損失を使用します。最後に、これらの三つの部分の損失は最終総損失を形成するために加算そのそれぞれの重みを乗算されます。
図1に示すように、顔認識損失関数(相互侵入損)

図2に示すように、フレーム損失関数(ユークリッド損失)への復帰

図3に示すように、ファンクションキーの損失(ユークリッド損失)

図4に示すように、総損失と

各式の意味は、特定の、我々はすべてここで強調して、理解しておく必要があり、の前に最後に添加した総重量損失  アルファ  重み関数相当する重量の損失で、矛盾しています。詳細な設定は、元の論文に記載されています。

【end】

◆有奖征文◆


推荐阅读检测、量化、追踪新冠病毒,基于深度学习的自动CT图像分析有多靠谱?百万人学AI:CSDN重磅共建人工智能技术新生态连续两天,8 大技术论坛,微软超 60 个烧脑议题等你来战Docker 开发环境的滑坡来,让我们逐一澄清以太坊 2.0 五大误解超 6 成程序员月薪 8000 以上,后端开发最吃香!| 中国开发者现状报告你点的每个“在看”,我都认真当成了AI
リリース1365元の記事 ウォンの賞賛10000 + ビュー638万+

おすすめ

転載: blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/104980479