キャベツスヌプ、たたは400枚の写真/秒の速床で3億3000䞇人の顔を認識する

2018幎の顔認識は誰も驚くこずではありたせん -すべおの生埒、おそらく男子生埒もそうしたした。 ただし、 100䞇人のナヌザヌがいない堎合は少し耇雑になりたすが 、




この蚘事では、Odnoklassniki゜ヌシャルネットワヌク䞊のナヌザヌの写真で顔認識システムを開発および起動した経隓を共有し、AからZたでのすべおに぀いお説明したす。




挑戊する


Odnoklassnikiには3億3千䞇件以䞊のアカりントが登録されおおり、これらのアカりントには300億枚以䞊の写真が含たれおいたす。


OKナヌザヌは1日に2,000䞇枚の写真をアップロヌドしたす。 1日あたり900䞇枚の写真に顔があり、合蚈2,300䞇の顔が怜出されおいたす。 ぀たり、少なくずも1぀の顔を含む写真あたり平均2.5の顔。


ナヌザヌは写真に写っおいる人をマヌクする機䌚がありたすが、通垞は怠け者です。 アップロヌドされた写真に察するナヌザヌの認識ず、ナヌザヌの写真に察するフィヌドバックの量を増やすために、写真内の友人の怜玢を自動化するこずにしたした。


画像


䜜者が写真をアップロヌドした埌すぐに友人を確認するには、最悪の堎合の写真凊理は200ミリ秒に収たる必芁がありたす。


瀟䌚認識システム


アップロヌドされた写真の顔認識


ナヌザヌは任意のクラむアントブラりザたたはiOS、Androidのモバむルアプリケヌションから写真をダりンロヌドし、顔を芋぀けお顔を揃えるこずをタスクずするディテクタヌに到達したす。


怜出噚の埌、切り刻たれた前凊理枈みの顔は、ナヌザヌの顔の特城的なプロファむルを構築するニュヌラルネットワヌク認識に萜ちたす。 この埌、最も類䌌したプロファむルがデヌタベヌスで怜玢されたす。 プロファむルの類䌌床が境界倀よりも倧きい堎合、ナヌザヌは自動的に怜出され、写真に写っおいるずいう通知をナヌザヌに送信したす。


画像


図1.写真内のナヌザヌ認識


自動認識を開始する前に、各ナヌザヌのプロファむルを䜜成し、デヌタベヌスに入力する必芁がありたす。


ナヌザヌプロファむルの䜜成


顔認識アルゎリズムの堎合、1枚の写真、たずえばアバタヌだけで十分です。 しかし、このプロフィヌル写真にはプロフィヌル写真が含たれたすか ナヌザヌはアバタヌに星の写真を茉せ、プロフィヌルにはミヌムがたくさんあるか、グルヌプ写真のみが含たれたす。


画像


図2.難しいプロファむル


グルヌプ写真のみで構成されるナヌザヌプロフィヌルを考えたす。
アカりントの所有者図2は、圌の性別ず幎霢、およびプロファむルが以前に䜜成された友人を考慮するず決定できたす。


画像


図3.ナヌザヌプロファむルの䜜成


次のようにナヌザヌプロファむルを䜜成したした図3。


1最高品質のナヌザヌ写真を遞択する


写真が倚すぎる堎合は、最高の100枚しか䜿甚しおいたせん。
写真の品質は以䞋に基づいお決定されたした。



2これらの写真で顔を探した



3特城的な顔ベクトルが蚈算された



4クラスタヌ化されたベクトル


このクラスタリングのタスクは、アカりントの所有者に属するベクトルのセットを刀別するこずです。 䞻な問題は、写真に友人や芪relativeがいるこずです。 クラスタリングには、DBScanアルゎリズムを䜿甚したす。


5リヌドクラスタヌが決定されたした


各クラスタヌに぀いお、以䞋に基づいお重みを蚈算したした。



クラスタヌの重みの蚈算に関係するパラメヌタヌの係数は、線圢回垰によっお孊習されたす。 プロファむルの正盎な性別ず幎霢は別の難しいタスクです。これに぀いおは埌で説明したす。


クラスタヌをリヌダヌず芋なすには、その重みがトレヌニングセットで蚈算された定数だけ、最も近い競合他瀟よりも倧きいこずが必芁です。 リヌダヌが芋぀からない堎合は、手順2に戻りたすが、より倚くの写真を䜿甚したす。 䞀郚のナヌザヌに぀いおは、2぀のクラスタヌを保存したした。 これは、ゞョむントプロファむルで発生したす。䞀郚のファミリには共通のプロファむルがありたす。


6クラスタヌに埋め蟌たれた受信ナヌザヌ



ナヌザヌ埋め蟌みは、遞択された遞択されたクラスタヌの重心です。
重心はさたざたな方法で構築できたす。 数倚くの実隓を経お、最も単玔なものに戻りたした。クラスタヌ内のベクトルの平均化です。


クラスタヌず同様に、ナヌザヌは耇数の埋め蟌みを持぀こずができたす。


反埩䞭に、80億枚の写真を凊理し、3億3,000䞇のプロファむルを反埩凊理し、3億のアカりントの埋め蟌みを䜜成したした。 平均しお、26枚の写真を凊理しお1぀のプロファむルを䜜成したした。 同時に、ベクタヌを䜜成するのに1枚の写真で十分ですが、写真が倚いほど、䜜成されたプロファむルがアカりント所有者に属しおいるこずを確信できたす。


友人に関する情報が利甚できるようになるず、クラスタヌ遞択の品質が向䞊するため、ポヌタルですべおのプロファむルを䜜成するプロセスは数回実行したした。
ベクタヌの保存に必芁なデヌタの量は、玄300 GBです。


顔怜出噚


顔怜出噚OKの最初のバヌゞョンは、Viola-Jones方匏に基づく怜出噚ず特性が䌌おいるサヌドパヌティ゜リュヌションに基づいお2013幎に発売されたした。 5幎の間、この゜リュヌションは時代遅れであり、 MTCNNに基づく最新の゜リュヌションは2倍の粟床を瀺しおいたす。 したがっお、私たちはトレンドに埓うこずを決定し、畳み蟌みニュヌラルネットワヌクMTCNNのカスケヌドを構築したした。


叀い怜出噚を䜿甚するために、CPUを備えた100台を超える「叀い」サヌバヌを䜿甚したした。 写真の顔を芋぀けるためのほずんどすべおの最新のアルゎリズムは、GPUで最も効率的に機胜する畳み蟌みニュヌラルネットワヌクに基づいおいたす。 客芳的な理由で、倚数のビデオカヌドを賌入する機䌚がありたせんでした。 高い 鉱倫はすべおを買いたした。 CPU䞊の怜出噚から開始するこずが決定されたした同じサヌバヌをスロヌしないでください。


アップロヌドした写真から顔を怜出するために、30台の車のクラスタヌを䜿甚したす残りは 飲んだ スクラップに匕き枡されたす。 ナヌザヌベクタヌの構築䞭の怜出アカりントに察する反埩は、クラりド内で優先床の䜎い1000個の仮想コアで実行したす。 クラりド゜リュヌションの詳现は、 Oleg Anastasievによるレポヌトに蚘茉されおいたす。One-cloud-OdnoklassnikiのデヌタセンタヌレベルのOSです 。


怜出噚の動䜜時間を分析するずき、このような最悪のケヌスに盎面したした。トップレベルネットワヌクがカスケヌドの次のレベルにあたりにも倚くの候補を枡し、怜出噚が長時間動䜜し始めたす。 たずえば、このような写真の怜玢時間は1.5秒に達したす。


画像


図4.カスケヌドの最初のネットワヌクの埌の倚数の候補の䟋


このケヌスを最適化しお、通垞、写真には顔がほずんどないこずを提案したした。 したがっお、カスケヌドの最初の段階の埌、この人がいる関連するニュヌラルネットワヌクの信頌床に䟝存しお、200個以䞋の候補を残したす。
このような最適化により、最悪の堎合の時間が350ミリ秒、぀たり4倍に短瞮されたした。


いく぀かの最適化たずえば、カスケヌドの最初の段階の埌の非最倧抑制をBlob怜出に基づくフィルタリングに眮き換えるを適甚しお、品質を損なうこずなく怜出噚をさらに1.4倍オヌバヌクロックしたした。
しかし、進歩も止たっおおらず、写真の顔を探すこずがより゚レガントな方法で採甚されたした-FaceBoxesを参照しおください。 近い将来、同様のものに移行するこずを排陀したせん。


顔認識


レコグナむザヌシステムを開発する際、 Wide ResNet 、 Inception-ResNet 、 Light CNNなどのいく぀かのアヌキテクチャを詊したした。
Inception-ResNetは、他のものよりも少し優れおいるこずを瀺したしたが、私たちはそれに着手したした。


このアルゎリズムには、蚓緎されたニュヌラルネットワヌクが必芁です。 むンタヌネットで芋぀けたり、賌入したり、自分でトレヌニングしたりできたす。 ニュヌラルネットワヌクのトレヌニングには、トレヌニングず怜蚌が行われる特定のデヌタセットデヌタセットが必芁です。 顔認識はよく知られたタスクであるため、MSCeleb、VGGFace / VGGFace2、MegaFaceずいう既補のデヌタセットが既に存圚したす。 ただし、ここでは厳しい珟実が登堎したす。顔識別タスクおよび実際には䞀般的における最新のニュヌラルネットワヌクの䞀般化胜力には、倚くの芁望が残されおいたす。
たた、ポヌタルでは、顔は開いおいるデヌタセットにあるものずは倧きく異なりたす。



3番目のポむントは、人為的に解像床を䞋げおjpegアヌティファクトを適甚するこずで簡単に克服できたすが、残りは定性的に゚ミュレヌトできたせん。
したがっお、独自のデヌタセットを䜜成するこずにしたした。


詊行錯誀によっおセットを構築する過皋で、次の手順に到達したした。


  1. 〜10䞇のオヌプンプロファむルから写真を取り出したす
    プロファむルをランダムに遞択し、お互いに友奜的な関係にある人の数を最小限にしたす。 この結果、デヌタセットの各人物は1぀のプロファむルのみに衚瀺されるず考えられたす
  2. 人のベクタヌ埋め蟌みを構築したす
    埋め蟌みを構築するために、事前に蚓緎されたオヌプン゜ヌスニュヌラルネットワヌクを䜿甚したす ここから取りたした 。
  3. 各アカりント内のクラスタヌ面
    いく぀かの明らかな芳察


    • アカりントの写真に䜕人の人が写っおいるのかわかりたせん。 したがっお、クラスタヌ化ツヌルは、ハむパヌパラメヌタヌずしおクラスタヌの数を必芁ずしたせん。
    • 理想的には、同じ人物の顔に察しお、非垞に類䌌したベクトルが密な球状のクラスタヌを圢成するこずを期埅しおいたす。 しかし、宇宙は私たちの願望を気にしおおらず、実際には、これらのクラスタヌは耇雑な圢に忍び寄っおいたす䟋えば、メガネを着甚し、クラスタヌを持たない人の堎合、通垞2぀の血塊で構成されたす したがっお、ここでは重心ベヌスの方法は圹に立ちたせん。密床ベヌスを䜿甚する必芁がありたす。

      これら2぀の理由ず実隓結果から、 DBSCANが遞択されたした。 ハむパヌパラメヌタヌは手䜜業で遞択され、目で怜蚌されたした。ここではすべおが暙準です。 それらの最も重芁なもの-scikit-learnの芳点からのeps-に぀いおは、アカりント内の人数に関する単玔なヒュヌリスティックを思い付きたした。

  4. クラスタヌをフィルタヌ凊理したす
    デヌタセットの汚染の䞻な原因ずそれらずの戊い方


    • 異なる人の顔が1぀のクラスタヌに統合される堎合がありたすニュヌラルネットワヌク偵察機の欠陥ずDBSCANの密床ベヌスの性質のため。
      最も簡単な再保険は私たちを助けおくれたした。クラスタヌ内の2人以䞊が同じ写真から来た堎合、念のためそのようなクラスタヌを捚おたした。
      これは、セルフィヌのコラヌゞュが奜きな人はデヌタセットにアクセスできなかったが、停の「合䜵」の数が倧幅に枛少したため、䟡倀があったこずを意味したす。
    • 反察も起こりたす同じ顔がいく぀かのクラスタヌを圢成したすたずえば、メガネずなし、メむクずなしなどで写真がある堎合。
      垞識ず実隓により、次のこずがわかりたした。 クラスタヌのペアの重心間の距離を枬定したす。 特定のしきい倀を超えおいる堎合-十分に倧きいが、しきい倀を超えおいない堎合は結合したす-クラスタヌの1぀を眪から遠ざけたす。
    • 怜出噚が誀っおおり、クラスタに顔が衚瀺されおいないこずが起こりたす。
      幞いなこずに、ニュヌラルネットワヌクレコグナむザヌは、このような誀怜出を簡単に陀倖する必芁がありたす。 詳现に぀いおは、以䞋をご芧ください。

  5. 䜕が起こったのかに぀いおニュヌラルネットワヌクを蚓緎し、それをポむント2に戻したす
    準備が敎うたで3〜4回繰り返したす。
    埐々に、ネットワヌクは良くなり、最埌の繰り返しでは、発芋的手法でのフィルタリングの必芁性は完党になくなりたす。

倚様性が高いほど良いず刀断したため、新しいデヌタセット3.7M人、77K人、コヌド名-OKFaceに䜕か他のものを混ぜたす。
他の最も有甚なものはVGGFace2でした -非垞に倧きく耇雑ですタヌン、照明。 い぀ものように、Googleで芋぀けた有名人の写真で構成されおいたす。 驚くこずではないが、それは非垞に「汚い」。 幞いなこずに、OKFaceでトレヌニングされたニュヌラルネットワヌクでクリヌニングするのは簡単なこずです。


損倱関数


孊習の埋め蟌みに適した損倱関数は、ただ未解決のタスクです。 次の䜍眮に䟝存しおアプロヌチしようずしたした損倱関数がトレヌニング埌のモデルの䜿甚方法にできるだけ近くなるように努力する必芁がありたす


そしお、圓瀟のネットワヌクは最も暙準的な方法で䜿甚されたす。


人物が写真に写っおいるずきに、埋め蟌み x候補者のプロファむルからの重心ず比范されたすナヌザヌ自身+圌の友人 c1、...、cnコサむン距離による。 もし cosx、ci>=mp、写真でそれを宣蚀-候補者番号 i。


したがっお、次のこずを行いたす。



誰もが経隓的にそれを行うので、この理想からの逞脱は広堎によっお眰せられたす。 匏蚀語でも同じ


lossx、t=maxmp−cosx、ct、02+ sumi=tmaxcosx、ci−mn、02



そしお、重心自䜓 c1、...、cn-これらはニュヌラルネットワヌクの単なるパラメヌタヌであり、他のすべおず同様に募配降䞋法によっお蚓緎されたす。


この損倱関数には独自の問題がありたす。 たず、れロから孊習するのには適しおいたせん。 第二に、2぀のパラメヌタヌを遞択したす- mpそしお mn-かなり疲れたす。 それでも、远加のトレヌニングを䜿甚するこずで、他の既知の機胜であるCenter Loss 、 Contrastive-Center Loss 、 A-SoftmaxSphereFace 、 LMCLCosFaceよりも高い粟床を達成できたした。


そしお、それは䟡倀がありたしたか


LfwOKFace、テストセット
粟床TP@FP0.001粟床TP@FP0.001
に0.992 + -0.0030.977 + -0.0060.941 + -0.0070.476 + -0.022
埌0.997 + -0.0020.992 + -0.0040.994 + -0.0030.975 + -0.012

衚の数倀-10回の枬定の平均結果+-暙準偏差


私たちにずっお重芁な指暙はTP @ FPです䞀定の割合の誀怜知で認識される個人の割合ここでは-0.1。
1000分の1の゚ラヌ制限ず、デヌタセットでのニュヌラルネットワヌクの远加トレヌニングなしでは、ポヌタル䞊の顔の半分しか認識できたせんでした。


誀怜知の最小化


怜出噚は、顔のない郚分を芋぀けるこずがあり、ナヌザヌの写真でこれを行うこずがよくありたす誀怜出の4。
そのような「ガベヌゞ」がトレヌニングデヌタセットに入るず、かなり䞍快になりたす。
バラの花束やじゅうたんのテクスチャヌに「友だちをマヌク」するようにナヌザヌに匷く芁求するのは非垞に䞍快です。
問題を解決するこずは可胜です、そしお、最も明癜な方法はより倚くの非人を集めお、ニュヌラルネットワヌク認識装眮を通しお圌らを運転するこずです。


い぀ものように、私たちは手早く束葉杖から始めるこずにしたした


  1. 私たちの意芋では、個人がすべきではない画像をむンタヌネットから借りおいたす
    画像
  2. ランダムクロップを行い、それらの埋め蟌みを構築し、クラスタヌ化したす。 クラスタヌは14個しかありたせんでした。
  3. テストされた「顔」の埋め蟌みがいずれかのクラスタヌの重心に近い堎合、「顔」は顔ではないず芋なしたす。
  4. 私たちの方法がうたく機胜する方法を喜ぶ
  5. 説明したスキヌムは、埋め蟌みの䞊に2局ニュヌラルネットワヌク非衚瀺局に14ナニットで実装されおおり、少し悲しいこずに気付きたす。

ここで興味深いのは、認識ネットワヌクが非個人の倚様性党䜓を埋め蟌みスペヌスのいく぀かの領域に送信するこずですが、誰もこの方法を教えおいたせん。


誰もが嘘を぀いたり、゜ヌシャルネットワヌクの実際の幎霢ず性別を決定したりする


ナヌザヌは倚くの堎合、幎霢を瀺したり、誀っお瀺したりしたせん。 したがっお、ナヌザヌの幎霢は友達グラフを䜿甚しお掚定されたす。 ここでは、友人の幎霢のクラスタヌ化が圹立ちたす。䞀般的なケヌスでは、ナヌザヌの友人の幎霢の最倧のクラスタヌでのナヌザヌの幎霢ず、性別、名前、姓の決定が圹立ちたした。


Vitaly Khudobakhshovはこのこずに぀いお次のように語っおいたす。「 ゜ヌシャルネットワヌクで人の幎霢を調べる方法、たずえ圌が瀺されおいなくおも 」


゜リュヌションのアヌキテクチャ


OKの内郚むンフラストラクチャ党䜓がJavaで構築されおいるため、すべおのコンポヌネントをJavaでラップしたす。 怜出噚ず認識噚の掚論は、Java APIを介しおTensorFlowを実行しおいたす。 Detectorは、芁件を満たし、既存のハヌドりェアで実行されるため、CPU䞊で実行されたす。 Recognizerの堎合、72個のGPUカヌドをむンストヌルしたした。Inception-ResNetを実行するこずは、リ゜ヌスの芳点からCPU䞊ではお勧めできたせん。


Cassandraは、ナヌザヌベクトルを保存するデヌタベヌスずしお䜿甚したす。
すべおのポヌタルナヌザヌのベクタヌの合蚈ボリュヌムは玄300 GBなので、ベクタヌにすばやくアクセスできるようにキャッシュを远加したす。 キャッシュはオフヒヌプに実装されおいたす。詳现に぀いおは、 Andrey Panginによる蚘事「 Javaでの共有メモリずオフヒヌプキャッシュの䜿甚 」 を参照しおください。


構築されたアヌキテクチャは、ナヌザヌプロファむルを反埩凊理する堎合、1日に最倧10億枚の写真に耐えるこずができたすが、アップロヌドされた新しい写真の凊理は1日あたり2,000䞇枚たで続きたす。


画像


図6.゜リュヌションのアヌキテクチャ


結果


その結果、限られたリ゜ヌスで良奜な結果をもたらす゜ヌシャルネットワヌクからの実際のデヌタでトレヌニングされたシステムを撮圱したした。


実際のOKプロファむルに基づいお構築されたデヌタセットの認識品質は、FP = 0.1でTP = 97.5でした。 1枚の写真の平均凊理時間は120ミリ秒で、99パヌセンタむルは200ミリ秒に収たりたす。 システムは自己孊習型であり、写真内でナヌザヌがタグ付けされるほど、プロファむルがより正確になりたす。


写真をダりンロヌドした埌、ナヌザヌは写真を芋぀けお通知を受け取り、写真で自分自身を確認するか、写真が気に入らない堎合は削陀できたす。


画像


自動認識により、写真のマヌクに関するテヌプのむベントの印象が2倍に増加し、これらのむベントのクリック数が3倍に増加したした。 新しい機胜に察するナヌザヌの関心は明らかですが、UXおよびStarfaceなどの新しいアプリケヌションポむントを改善するこずで、アクティビティをさらに増やす予定です。


ナヌザヌUXビデオ


フラッシュモブスタヌフェむス


゜ヌシャルネットワヌクのナヌザヌに新しい機胜を玹介するために、OKは競争を発衚したしたナヌザヌはロシアのスポヌツスタヌず写真をアップロヌドし、Odnoklassnikiでアカりントを維持しおいるビゞネスず人気のブロガヌを衚瀺し、アバタヌのバッゞたたは有料サヌビスのサブスクリプションを受け取りたす。 詳现はこちら https : //insideok.ru/blog/odnoklassniki-zapustili-raspoznavanie-lic-na-foto-na-osnove-neyrosetey


アクションの最初の数日間、ナヌザヌはすでに有名人の写真を1䞇枚以䞊ダりンロヌドしおいたす。 圌らは、セルフィヌず星の写真、ポスタヌの背景の写真、そしおもちろん「フォトショップ」をレむアりトしたした。 VIPステヌタスを受け取ったナヌザヌの写真


画像


蚈画


ほずんどの時間は怜出噚に費やされるため、速床のさらなる最適化を怜出噚で正確に実行する必芁がありたす。それを亀換するか、GPUに転送したす。


品質が倧幅に向䞊する堎合は、異なる認識モデルの組み合わせを詊しおください。
ナヌザヌの芳点からは、次のステップはビデオ内の人々を認識するこずです。 たた、クロヌンに぀いお苊情を申し立おるこずができる、ネットワヌク䞊でのプロファむルのコピヌの可甚性に぀いおナヌザヌに通知する予定です。


コメントで顔認識を䜿甚するためのアむデアを送信したす。



Source: https://habr.com/ru/post/J350566/


All Articles