Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Teknologioj kaj modeloj por nia estonta komputilvida sistemo estis kreitaj kaj plibonigitaj iom post iom kaj en malsamaj projektoj de nia firmao - en Poŝto, Nubo, Serĉo. Ili maturiĝis kiel bona fromaĝo aŭ konjako. Iun tagon ni rimarkis, ke niaj neŭralaj retoj montras bonegajn rezultojn en rekono, kaj ni decidis kombini ilin en ununuran b2b-produkton - Vision - kiun ni nun uzas ni mem kaj proponas al vi uzi.

Hodiaŭ, nia komputilvida teknologio sur la platformo Mail.Ru Cloud Solutions sukcese funkcias kaj solvas tre kompleksajn praktikajn problemojn. Ĝi baziĝas sur kelkaj neŭralaj retoj, kiuj estas trejnitaj sur niaj datenoj kaj specialiĝas pri solvado de aplikataj problemoj. Ĉiuj servoj funkcias per niaj servilaj instalaĵoj. Vi povas integri la publikan Vision API en viajn aplikojn, per kiuj ĉiuj kapabloj de la servo estas disponeblaj. La API estas rapida - danke al servilaj GPU-oj, la meza respondtempo ene de nia reto estas 100 ms.

Iru al la kato, estas detala rakonto kaj multaj ekzemploj de la laboro de Vision.

Ekzemplo de servo en kiu ni mem uzas la menciitajn vizaĝrekonajn teknologiojn estas Eventoj. Unu el ĝiaj komponantoj estas Vision-fotostandoj, kiujn ni instalas ĉe diversaj konferencoj. Se vi alproksimiĝas al tia fotostando, prenu foton per la enkonstruita fotilo kaj enigu vian retpoŝton, la sistemo tuj trovos inter la aro da fotoj tiujn, en kiuj vi estis kaptitaj de personaj fotistoj de la konferenco, kaj, se vi deziras, sendos la trovitajn fotojn al vi retpoŝte. Kaj ni ne parolas pri surscenigitaj portretaj fotoj—Vision rekonas vin eĉ en la fono mem en amaso da vizitantoj. Kompreneble, ne la fotaj standoj mem estas rekonitaj, ĉi tiuj estas nur tablojdoj en belaj standoj, kiuj simple prenas fotojn de gastoj per siaj enkonstruitaj fotiloj kaj transdonas informojn al la serviloj, kie okazas la tuta rekonmagio. Kaj ni vidis pli ol unufoje kiom surpriza la efikeco de la teknologio estas eĉ inter specialistoj pri bildrekono. Malsupre ni parolos pri kelkaj ekzemploj.

1. Nia Vizaĝa Rekono-Modelo

1.1. Neŭrala reto kaj pretiga rapideco

Por rekono, ni uzas modifon de la modelo de neŭrala reto ResNet 101. Meza Kunigo ĉe la fino estas anstataŭigita per plene ligita tavolo, simile al kiel ĝi estas farita en ArcFace. Tamen, la grandeco de la vektoraj reprezentoj estas 128, ne 512. Nia trejnado enhavas ĉirkaŭ 10 milionojn da fotoj de 273 593 homoj.

La modelo funkcias tre rapide danke al zorge elektita servila agorda arkitekturo kaj GPU-komputado. Necesas de 100 ms por ricevi respondon de la API en niaj internaj retoj - ĉi tio inkluzivas detekton de vizaĝo (detekti vizaĝon en foto), rekoni kaj resendi PersonID en la respondo de la API. Kun grandaj volumoj de envenantaj datumoj - fotoj kaj filmetoj - necesos multe pli da tempo por transdoni la datumojn al la servo kaj ricevi respondon.

1.2. Taksante la efikecon de la modelo

Sed determini la efikecon de neŭralaj retoj estas tre ambigua tasko. La kvalito de ilia laboro dependas de kiaj datumaj aroj la modeloj estis trejnitaj kaj ĉu ili estis optimumigitaj por labori kun specifaj datumoj.

Ni komencis taksi la precizecon de nia modelo kun la populara LFW-kontrola testo, sed ĝi estas tro malgranda kaj simpla. Post atingado de 99,8% precizeco, ĝi ne plu utilas. Estas bona konkurso por taksi rekonajn modelojn - Megaface, sur kiu ni iom post iom atingis 82% rangon 1. La Megaface-testo konsistas el miliono da fotoj - distrantoj - kaj la modelo devus povi bone distingi plurajn milojn da fotoj de famuloj de la Facescrub. datumaroj de distrantoj. Tamen, foriginte la teston de Megaface de eraroj, ni trovis, ke kun la malbarita versio ni atingas precizecon de 98% rango 1 (fotoj de famuloj estas ĝenerale sufiĉe specifaj). Tial ili kreis apartan identigan teston, similan al Megaface, sed kun fotoj de "ordinaraj" homoj. Tiam ni plibonigis la rekonoprecizecon sur niaj datenoj kaj iris malproksimen antaŭen. Krome, ni uzas cluster-kvalitan teston kiu konsistas el kelkmil fotoj; ĝi simulas vizaĝmarkadon en la nubo de la uzanto. En ĉi tiu kazo, aretoj estas grupoj de similaj individuoj, unu grupo por ĉiu rekonebla persono. Ni kontrolis la kvaliton de laboro sur veraj grupoj (vera).

Kompreneble, rekonaj eraroj okazas kun iu ajn modelo. Sed tiaj situacioj ofte estas solvataj per fajnagordado de la sojloj por specifaj kondiĉoj (por ĉiuj konferencoj ni uzas la samajn sojlojn, sed, ekzemple, por alirkontrolsistemoj ni devas multe pliigi la sojlojn por ke estu malpli da falsaj pozitivoj). La granda plimulto de konferencaj vizitantoj estis ĝuste rekonitaj de niaj Vision-fotobudoj. Kelkfoje iu rigardis la tranĉitan antaŭrigardon kaj diris: "Via sistemo eraris, ĝi ne estis mi." Tiam ni malfermis la foton tute, kaj montriĝis, ke vere estis ĉi tiu vizitanto en la foto, nur ni ne fotis lin, sed iun alian, la persono simple estis en la fono en la malklara zono. Krome, la neŭrala reto ofte ĝuste rekonas eĉ kiam parto de la vizaĝo ne videblas, aŭ la persono staras profile aŭ eĉ duonturnita. La sistemo povas rekoni homon eĉ se la vizaĝo estas en la areo de optika distordo, ekzemple, kiam oni pafas per larĝangula lenso.

1.3. Ekzemploj de testado en malfacilaj situacioj

Malsupre estas ekzemploj pri kiel funkcias nia neŭrala reto. Fotoj estas senditaj al la enigo, kiun ŝi devas etikedi uzante PersonID - unikan identigilon de persono. Se du aŭ pli da bildoj havas la saman identigilon, tiam, laŭ la modeloj, ĉi tiuj fotoj prezentas la saman personon.

Ni tuj rimarku, ke dum testado, ni havas aliron al diversaj parametroj kaj modelaj sojloj, kiujn ni povas agordi por atingi apartan rezulton. La publika API estas optimumigita por maksimuma precizeco en oftaj kazoj.

Ni komencu per la plej simpla afero, kun front-vizaĝa rekono.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Nu, tio estis tro facila. Ni malfaciligu la taskon, aldonu barbon kaj manplenon da jaroj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Iuj diros, ke tio ankaŭ ne estis tro malfacila, ĉar en ambaŭ kazoj la tuta vizaĝo estas videbla, kaj multaj informoj pri la vizaĝo estas disponeblaj al la algoritmo. Bone, ni transformu Tom Hardy en profilon. Ĉi tiu problemo estas multe pli kompleksa, kaj ni elspezis multan penon por sukcese solvi ĝin, konservante malaltan eraran indicon: ni elektis trejnan aron, pensis tra la arkitekturo de la neŭrala reto, plibonigis la perdfunkciojn kaj plibonigis la antaŭtraktadon. de fotoj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Ni metu al li kapvestaĵon:

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Cetere, ĉi tio estas ekzemplo de precipe malfacila situacio, ĉar la vizaĝo estas tre malklarigita, kaj en la malsupra foto ankaŭ estas profunda ombro kaŝanta la okulojn. En la reala vivo, homoj tre ofte ŝanĝas sian aspekton helpe de malhelaj okulvitroj. Ni faru la samon kun Tom.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Bone, ni provu enĵeti fotojn de malsamaj aĝoj, kaj ĉi-foje ni eksperimentos kun alia aktoro. Ni prenu multe pli kompleksan ekzemplon, kie aĝ-rilataj ŝanĝoj estas precipe prononcitaj. La situacio ne estas malproksime; ĝi okazas sufiĉe ofte kiam vi bezonas kompari la foton en la pasporto kun la vizaĝo de la portanto. Post ĉio, la unua foto estas aldonita al pasporto kiam la posedanto havas 20 jarojn, kaj ĝis la aĝo de 45 homo povas multe ŝanĝiĝi:

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Ĉu vi pensas, ke la ĉefa specialisto pri neeblaj misioj ne multe ŝanĝiĝis kun aĝo? Mi pensas, ke eĉ kelkaj homoj kombinus la suprajn kaj malsuprajn fotojn, la knabo tiom ŝanĝiĝis dum la jaroj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Neŭralaj retoj multe pli ofte renkontas ŝanĝojn en aspekto. Ekzemple, foje virinoj povas multe ŝanĝi sian bildon helpe de kosmetikaĵoj:

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Nun ni eĉ pli kompliki la taskon: supozu, ke malsamaj partoj de la vizaĝo estas kovritaj de malsamaj fotoj. En tiaj kazoj, la algoritmo ne povas kompari tutajn specimenojn. Tamen, Vision bone traktas tiajn situaciojn.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Cetere, povas esti multaj vizaĝoj en foto; ekzemple, pli ol 100 homoj povas konveni en ĝenerala foto de halo. Ĉi tio estas malfacila situacio por neŭralaj retoj, ĉar multaj vizaĝoj povas esti lumigitaj malsame, iuj malfokusaj. Tamen, se la foto estas prenita kun sufiĉa rezolucio kaj kvalito (almenaŭ 75 pikseloj por kvadrato kovranta la vizaĝon), Vision povos detekti kaj rekoni ĝin.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

La propreco de raportaj fotoj kaj bildoj de gvatkameraoj estas ke homoj ofte estas neklaraj ĉar ili estis malfokusaj aŭ moviĝis en tiu momento:

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Ankaŭ, la lumintenso povas multe varii de bildo al bildo. Ankaŭ ĉi tio ofte fariĝas malfacilaĵo; multaj algoritmoj havas grandan malfacilecon ĝuste prilabori bildojn, kiuj estas tro malhelaj kaj tro helaj, por ne mencii precize kongrui kun ili. Mi memorigu al vi, ke por atingi ĉi tiun rezulton vi devas agordi la sojlojn laŭ certa maniero; ĉi tiu funkcio ankoraŭ ne estas publike havebla. Ni uzas la saman neŭralan reton por ĉiuj klientoj; ĝi havas sojlojn, kiuj taŭgas por la plej multaj praktikaj taskoj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Ni lastatempe lanĉis novan version de la modelo, kiu rekonas aziajn vizaĝojn kun alta precizeco. Ĉi tio antaŭe estis granda problemo, kiu eĉ estis nomita "maŝina lernado" (aŭ "neŭrala reto") rasismo. Eŭropaj kaj amerikaj neŭralaj retoj bone rekonis kaŭkazajn vizaĝojn, sed kun mongoloidaj kaj negroidaj vizaĝoj la situacio estis multe pli malbona. Verŝajne, en Ĉinio la situacio estis ĝuste la mala. Ĉio temas pri trejnaj datumaj aroj, kiuj reflektas la dominajn specojn de homoj en aparta lando. Tamen, la situacio ŝanĝiĝas; hodiaŭ ĉi tiu problemo ne estas tiel akra. Vizio ne havas problemon kun homoj de malsamaj rasoj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Vizaĝa rekono estas nur unu el la multaj aplikoj de nia teknologio; Vizio povas esti trejnita por rekoni ion ajn. Ekzemple, numerplatoj, inkluzive en kondiĉoj malfacilaj por algoritmoj: ĉe akraj anguloj, malpuraj kaj malfacile legeblaj numerplatoj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

2. Praktikaj uzkazoj

2.1. Fizika alirkontrolo: kiam du homoj uzas la saman enirpermesilon

Kun la helpo de Vision, vi povas efektivigi sistemojn por registri la alvenon kaj foriron de dungitoj. La tradicia sistemo bazita sur elektronikaj enirpermesiloj havas evidentajn malavantaĝojn, ekzemple, vi povas preterpasi du homojn uzante unu insignon. Se la alirkontrolsistemo (ACS) estas kompletigita kun Vision, ĝi honeste registros kiu venis/foriris kaj kiam.

2.2. Tempo spurado

Ĉi tiu Vision uzkazo estas proksime rilatita al la antaŭa. Se vi kompletigas la alirsistemon per nia vizaĝa rekono-servo, ĝi povos ne nur detekti malobservojn de alirkontrolo, sed ankaŭ registri la realan ĉeeston de dungitoj en la konstruaĵo aŭ instalaĵo. Alivorte, Vision helpos vin honeste konsideri, kiu venis al laboro kaj foriris je kiu tempo, kaj kiu tute preterlasis laboron, eĉ se liaj kolegoj kovris por li antaŭ siaj superuloj.

2.3. Video Analytics: Homoj Spurado kaj Sekureco

Spurante homojn uzante Vision, vi povas precize taksi la realan trafikon de butikumadaj areoj, fervojaj stacidomoj, trairejoj, stratoj kaj multaj aliaj publikaj lokoj. Nia spurado ankaŭ povas esti de granda helpo por kontroli aliron, ekzemple, al magazeno aŭ aliaj gravaj oficejoj. Kaj kompreneble, spuri homojn kaj vizaĝojn helpas solvi sekurecajn problemojn. Ĉu vi kaptis iun ŝtelante de via vendejo? Aldonu lian PersonID, kiu estis resendita de Vision, al la nigra listo de via videoanalitika programaro, kaj venontfoje la sistemo tuj atentigos la sekurecon se ĉi tiu tipo aperas denove.

2.4. En komerco

Podetalaj kaj diversaj servaj entreprenoj interesiĝas pri vicrekono. Kun la helpo de Vision, vi povas rekoni, ke ĉi tio ne estas hazarda amaso da homoj, sed vico, kaj determini ĝian longon. Kaj tiam la sistemo informas la respondeculojn pri atendovico, por ke ili eltrovu la situacion: aŭ estas alfluo de vizitantoj kaj necesas voki aldonajn laboristojn, aŭ iu malstreĉas siajn labordevojn.

Alia interesa tasko estas apartigi firmaajn dungitojn en la halo de vizitantoj. Tipe, la sistemo estas trejnita por apartigi objektojn portantajn certajn vestaĵojn ( vestokodo) aŭ kun iu karakterizaĵo (markita koltuko, insigno sur la brusto, ktp). Ĉi tio helpas pli precize taksi ĉeeston (por ke dungitoj ne "ŝveligu" la statistikon de homoj en la salono per sia nura ĉeesto).

Uzante vizaĝan rekonon, vi ankaŭ povas taksi vian publikon: kia estas la lojaleco de vizitantoj, tio estas, kiom da homoj revenas al via starigo kaj kun kia ofteco. Kalkulu kiom da unikaj vizitantoj venas al vi monate. Por optimumigi la kostojn de altiro kaj reteno, vi ankaŭ povas ekscii la ŝanĝon de trafiko depende de la semajnotago kaj eĉ la horo de la tago.

Franĉizantoj kaj ĉenaj kompanioj povas mendi taksadon bazitan sur fotoj pri la kvalito de markado de diversaj vendejoj: ĉeesto de emblemoj, signoj, afiŝoj, standardoj ktp.

2.5. Per transporto

Alia ekzemplo de certigi sekurecon per videoanalitiko estas identigi forlasitajn erojn en la haloj de flughavenoj aŭ fervojaj stacidomoj. Vido povas esti trejnita por rekoni objektojn de centoj da klasoj: mebloj, sakoj, valizoj, ombreloj, diversaj specoj de vestaĵoj, boteloj, ktp. Se via videoanalitika sistemo detektas senposedan objekton kaj rekonas ĝin per Vision, ĝi sendas signalon al la sekureca servo. Simila tasko estas asociita kun aŭtomata detekto de nekutimaj situacioj en publikaj lokoj: iu sentas sin malsana, aŭ iu fumas en malĝusta loko, aŭ persono falas sur la relojn, ktp - ĉiuj ĉi tiuj ŝablonoj povas esti rekonitaj per videoanalitikaj sistemoj. tra la Vision API.

2.6. Dokumentfluo

Alia interesa estonta aplikaĵo de Vision, kiun ni nuntempe disvolvas, estas dokumenta rekono kaj ilia aŭtomata analizo en datumbazojn. Anstataŭ mane enigi (aŭ pli malbone, enigi) senfinajn seriojn, nombrojn, eldondatojn, kontajn nombrojn, bankajn detalojn, datojn kaj naskiĝlokojn kaj multajn aliajn formaligitajn datumojn, vi povas skani dokumentojn kaj aŭtomate sendi ilin per sekura kanalo per la API al la nubo, kie la sistemo rekonos ĉi tiujn dokumentojn sur la flugo, analizos ilin kaj resendos respondon kun datumoj en la bezonata formato por aŭtomata eniro en la datumbazon. Hodiaŭ Vision jam scias kiel klasifiki dokumentojn (inkluzive PDF) - distingas inter pasportoj, SNILS, TIN, naskiĝatestojn, geedziĝatestojn kaj aliajn.

Kompreneble, la neŭrala reto ne kapablas trakti ĉiujn ĉi tiujn situaciojn el la skatolo. En ĉiu kazo, nova modelo estas konstruita por specifa kliento, multaj faktoroj, nuancoj kaj postuloj estas konsiderataj, datumoj aroj estas elektitaj, kaj ripetoj de trejnado, testado kaj agordo estas efektivigitaj.

3. API-operacia skemo

La "enireja pordego" de Vision por uzantoj estas la REST API. Ĝi povas ricevi fotojn, videodosierojn kaj elsendojn de retaj fotiloj (RTSP-riveretoj) kiel enigo.

Por uzi Vision, vi bezonas subskriboj en la servo Mail.ru Cloud Solutions kaj ricevu alirĵetonojn (client_id + client_secret). Uzanto-konfirmo estas farita per la OAuth-protokolo. La fontaj datumoj en la korpoj de POST-petoj estas senditaj al la API. Kaj responde, la kliento ricevas de la API rekonrezulton en formato JSON, kaj la respondo estas strukturita: ĝi enhavas informojn pri la trovitaj objektoj kaj iliaj koordinatoj.

Kun barbo, malhelaj okulvitroj kaj en profilo: malfacilaj situacioj por komputila vizio

Ekzempla respondo

{
   "status":200,
   "body":{
      "objects":[
         {
            "status":0,
            "name":"file_0"
         },
         {
            "status":0,
            "name":"file_2",
            "persons":[
               {
                  "tag":"person9"
                  "coord":[149,60,234,181],
                  "confidence":0.9999,
                  "awesomeness":0.45
               },
               {
                  "tag":"person10"
                  "coord":[159,70,224,171],
                  "confidence":0.9998,
                  "awesomeness":0.32
               }
            ]
         }

         {
            "status":0,
            "name":"file_3",
            "persons":[
               {
               "tag":"person11",
               "coord":[157,60,232,111],
               "aliases":["person12", "person13"]
               "confidence":0.9998,
               "awesomeness":0.32
               }
            ]
         },
         {
            "status":0,
            "name":"file_4",
            "persons":[
               {
               "tag":"undefined"
               "coord":[147,50,222,121],
               "confidence":0.9997,
               "awesomeness":0.26
               }
            ]
         }
      ],
      "aliases_changed":false
   },
   "htmlencoded":false,
   "last_modified":0
}

La respondo enhavas interesan parametron mirindaĵon - jen la kondiĉa "malvarteco" de vizaĝo en foto, kun ĝia helpo ni elektas la plej bonan pafon de vizaĝo el la sekvenco. Ni trejnis neŭralan reton por antaŭdiri la verŝajnecon, ke foto estos ŝatata en sociaj retoj. Ju pli bona estas la kvalito de la foto kaj ju pli ridetanta estas la vizaĝo, des pli granda estas la mirindaĵo.

API Vision uzas koncepton nomatan spaco. Ĉi tio estas ilo por krei malsamajn arojn de vizaĝoj. Ekzemploj de spacoj estas nigraj kaj blankaj listoj, listoj de vizitantoj, dungitoj, klientoj, ktp. Por ĉiu ĵetono en Vision, vi povas krei ĝis 10 spacojn, ĉiu spaco povas havi ĝis 50 mil PersonID-oj, tio estas, ĝis 500 mil. po ĵetono. Plie, la nombro da ĵetonoj per konto ne estas limigita.

Hodiaŭ la API subtenas la sekvajn detektajn kaj rekonajn metodojn:

  • Rekoni/Aro - detekto kaj rekono de vizaĝoj. Aŭtomate asignas PersonID al ĉiu unika persono, resendas PersonID kaj koordinatojn de la trovitaj personoj.
  • Forigi - forigante specifan PersonID de la persondatumbazo.
  • Detranĉu - forigas la tutan spacon de PersonID, utila se ĝi estis uzata kiel prova spaco kaj vi devas rekomencigi la datumbazon por produktado.
  • Detekti - detekto de objektoj, scenoj, numerplatoj, famaĵoj, atendovicoj, ktp. Resendas la klason de trovitaj objektoj kaj iliajn koordinatojn
  • Detekti dokumentojn - detektas specifajn specojn de dokumentoj de la Rusa Federacio (distingas pasporton, SNILS, impostan identigan numeron, ktp.).

Ni ankaŭ baldaŭ finos laboron pri metodoj por OCR, determini sekson, aĝon kaj emociojn, kaj ankaŭ solvos komercajn problemojn, tio estas, por aŭtomate kontroli la montradon de varoj en vendejoj. Vi povas trovi kompletan API-dokumentadon ĉi tie: https://mcs.mail.ru/help/vision-api

4. Konkludo

Nun, per la publika API, vi povas aliri vizaĝan rekonon en fotoj kaj filmetoj; identigo de diversaj objektoj, numerplatoj, famaĵoj, dokumentoj kaj tutaj scenoj estas subtenata. Aplikaj scenaroj - la maro. Venu, provu nian servon, starigu al ĝi la plej malfacilajn taskojn. La unuaj 5000 transakcioj estas senpagaj. Eble ĝi estos la "mankanta ingredienco" por viaj projektoj.

Vi povas tuj aliri la API post registriĝo kaj konekto. Vizio. Ĉiuj uzantoj de Habra ricevas reklaman kodon por pliaj transakcioj. Bonvolu skribi al mi la retadreson, kiun vi uzis por registri vian konton!

fonto: www.habr.com

Aldoni komenton