顔検出用 PCN (1) - 紙の読み取り

論文:https://arxiv.org/abs/1804.06039

github アドレス: https://github.com/Rock-100/FaceKit/tree/master/PCN

序文

        顔検出は古いトピックであり、インターネット上には多くのオープン ソース モデルがありますが、ほとんどのモデルは「正の角度」の分布でトレーニングされています。つまり、目が上にあり、鼻が下にあるということです。 、モデルの使用をこのタイプのシーンに制限します。ただし、実際のシーンでは、正でない角度の面が頻繁に表示されます。このシーンでの顔検出のために、著者は 2018 年にプログレッシブ キャリブレーション ネットワーク (略して PCN) と呼ばれる検出速度の高い、粗いものから細かいものまで回転する顔検出モデルを提案しました。

まとめ

        実際のシーンでは、平面の角度が変化するため検出が困難であり、現在の既存の方法では精度や速度が低下していました。面内の任意の角度での顔検出を、粗から細かい処理方法により効率的に実現できる PCN ネットワークを提案します。PCN は 3 つのサブネットワークで構成され、各ネットワークは顔の存在を検出するだけでなく、平面の回転角度の関連する予測も提供します。最初の 2 つのサブネットワークでは、角度の代わりに大まかな角度範囲のみが提供されます。特定の角度で、速度と精度のバランスをとります。

序章

        ほとんどの顔検出方法は、平面の回転角度の影響を考慮していません。この場合、顔の特徴の分布が変化しやすく、課題が大きいためです。この問題に対処する方法は 3 つあります。詳細は次のとおりです。

1) データ拡張は、上図の(a)に示すように、さまざまな角度で回転する顔再学習モデルを生成しますが、顔の特徴の分布が複雑になり、ネットワーク構造が複雑になり、リアルタイム性が難しいという欠点があります。エンジニアリング要件を満たす

2) 分割統治, 上記 (b) に示すように, より小さな問題に分解して個別に解決する. たとえば, 4 つの顔検出器をトレーニングして 4 方向の顔をそれぞれ検出することができます. 欠点は, 全体の計算負荷がそれでも積み重なって大きくなる

3) 角度検出器は、上図の (c) に示すように、新しいネットワークを追加して顔候補領域の回転角度を計算し、これらの候補領域を正の顔に回転してから検出します。顔の誤検出につながる角度検出ネットワークのモデル、および角度検出ネットワークのモデルは比較的複雑であり、実装が困難です

        つまり、現在の方法はすべて計算量が多いという問題があります。

        したがって、著者は、顔を位置決めしながら粗い角度から細かい角度まで顔の角度を計算するプログレッシブ処理ネットワーク PCN を提案します。具体的には、1層目のネットワークが顔が上向きか下向きかを判断し、角度範囲を[-180°、180°]から[-90°、90°]に縮小し、同様の2層目ネットワークが角度を縮小します。 [ -90°,90°] の範囲が [-45°,45°] に縮小し、第 3 層ネットワークが正確な角度を計算します。各ネットワークのタスクが単純なため、ネットワーク モデルが単純で計算量が少なく、同時に全体の最終的な計算の精度も高く、具体的なプロセスは次のとおりです。

ネットワーク構造

        PCN のネットワーク構造は以下の通り. MTCNN と非常によく似ている. 唯一の違いは, 角度予測の出力が追加されていることである. ここでは, 顔の角度スコアの設計部分に焦点を当てる.

状態1

        特定の第 1 層ネットワークでは、出力の上向きまたは下向きの角度はバイナリ分類に似ており、その損失関数は面スコアと同じであり、2 次元クロスエントロピー損失関数が使用されます。詳細は以下の通り

Lcal=y*log(g)+(1-y)*log(1-g)

        ここで g は顔角度スコアであり、顔が上を向いているときに真の値が 1 であると定義され、推論の際には、まず顔スコアと NMS に従って非顔領域をフィルタリングし、次に、 0.5 の場合は θ1=0、それ以外の場合は 180° より大きくなるようにフェース角度スコアを定義します。人物の顔が下を向いている場合は、時計回りに 180° 回転させ、以降の処理を続行します。

インターンシップ2

        基本的にステージ 1 と同じですが、違いは角度予測部分にあります。角度予測では、[-90°、-45°]、[-45°、45°]、[45°、90°] の 3 つのカテゴリに顔が分割されます。 ]。著者は 3 カテゴリのワンホット エンコーディング (g0、g1、g2) を使用しており、上記の 3 つのカテゴリの真のスコアは (1,0,0)、(0,1,0)、(0,0,1) です。 )。(g0, g1, g2) の最大値のインデックスを推論時の g とし、g=0 のときは θ2=-90、g=1 のときは θ2=0、g のときは θ2=90 とする。 =2。その後、顔スコアとNMS閾値を満たす顔領域画像を反時計回りに角度θ2だけ回転させ、以降の処理を継続する。

ステージ3

        上記で処理された顔領域画像の角度範囲は [-45°, 45°] の間であり、この段階のネットワークは顔角度の予測 θ3 を直接出力します。顔の最終的な全体の回転角度は θ=θ1+θ2+θ3 です。反時計回りが負であることに注意してください。下の図は、2 つの面の角度計算プロセスを示しています。

まとめ

        著者は、粗から細への処理方法を使用して、速度と精度の両方を考慮し、高いエンジニアリング実装価値を持つフェース角度の予測を処理する PCN ネットワークを提案します。

        次の記事では、C++ と MNN を使用してネットワーク モデルを展開する方法について説明します。

おすすめ

転載: blog.csdn.net/lwx309025167/article/details/126571985