Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Technologieën en modellen voor ons toekomstige computervisiesysteem zijn geleidelijk gecreëerd en verbeterd in verschillende projecten van ons bedrijf - in Mail, Cloud, Search. Ze rijpten als goede kaas of cognac. Op een dag realiseerden we ons dat onze neurale netwerken uitstekende resultaten laten zien op het gebied van herkenning, en we besloten ze te combineren in één enkel b2b-product - Vision - dat we nu zelf gebruiken en u aanbieden om te gebruiken.

Tegenwoordig werkt onze computer vision-technologie op het Mail.Ru Cloud Solutions-platform met succes en lost het zeer complexe praktische problemen op. Het is gebaseerd op een aantal neurale netwerken die zijn getraind op onze datasets en gespecialiseerd zijn in het oplossen van toegepaste problemen. Alle diensten draaien op onze serverfaciliteiten. U kunt de public Vision API integreren in uw applicaties, waardoor alle mogelijkheden van de dienst beschikbaar zijn. De API is snel - dankzij server-GPU's is de gemiddelde responstijd binnen ons netwerk 100 ms.

Ga naar de kat, er is een gedetailleerd verhaal en veel voorbeelden van Vision's werk.

Als voorbeeld van een dienst waarin wij zelf de genoemde gezichtsherkenningstechnologieën gebruiken, kunnen we noemen Evenementen. Eén van de onderdelen daarvan zijn de Vision fotostands, die wij op diverse congressen plaatsen. Als u zo'n fotostand nadert, een foto maakt met de ingebouwde camera en uw e-mailadres invoert, zal het systeem onmiddellijk tussen de foto's de foto's vinden waarop u bent vastgelegd door staffotografen van de conferentie, en, indien gewenst, zal de gevonden foto's per e-mail naar u toesturen. En dan hebben we het niet over geënsceneerde portretfoto’s: Vision herkent je zelfs op de achtergrond in een menigte bezoekers. Het zijn natuurlijk niet de fotostandaards zelf die worden herkend, dit zijn gewoon tablets in prachtige stands die eenvoudigweg foto's van gasten maken met hun ingebouwde camera's en informatie naar de servers verzenden, waar alle herkenningsmagie plaatsvindt. En we hebben meer dan eens gezien hoe verrassend de effectiviteit van de technologie zelfs onder beeldherkenningsspecialisten is. Hieronder zullen we enkele voorbeelden bespreken.

1. Ons gezichtsherkenningsmodel

1.1. Neuraal netwerk en verwerkingssnelheid

Voor herkenning gebruiken we een aanpassing van het neurale netwerkmodel ResNet 101. Average Pooling aan het einde wordt vervangen door een volledig verbonden laag, vergelijkbaar met hoe dit wordt gedaan in ArcFace. De grootte van de vectorweergaven is echter 128, niet 512. Onze trainingsset bevat ongeveer 10 miljoen foto's van 273 mensen.

Het model werkt zeer snel dankzij een zorgvuldig geselecteerde serverconfiguratiearchitectuur en GPU-computing. Het duurt 100 ms om een ​​antwoord van de API op onze interne netwerken te ontvangen - dit omvat gezichtsdetectie (het detecteren van een gezicht op een foto), het herkennen en retourneren van PersonID in het API-antwoord. Bij grote hoeveelheden binnenkomende gegevens (foto's en video's) zal het veel langer duren om de gegevens naar de dienst over te dragen en een antwoord te ontvangen.

1.2. Het beoordelen van de effectiviteit van het model

Maar het bepalen van de efficiëntie van neurale netwerken is een zeer dubbelzinnige taak. De kwaliteit van hun werk hangt af van de datasets waarop de modellen zijn getraind en of ze zijn geoptimaliseerd voor het werken met specifieke gegevens.

We zijn begonnen de nauwkeurigheid van ons model te evalueren met de populaire LFW-verificatietest, maar deze is te klein en eenvoudig. Na het bereiken van een nauwkeurigheid van 99,8% is het niet langer bruikbaar. Er is een goede concurrentie voor het evalueren van herkenningsmodellen - Megaface, waarop we geleidelijk 82% rang 1 bereikten. De Megaface-test bestaat uit een miljoen foto's - afleiders - en het model zou enkele duizenden foto's van beroemdheden goed moeten kunnen onderscheiden van de Facescrub dataset van afleiders. Nadat we echter de foutentest van Megaface hadden doorstaan, ontdekten we dat we met de gewiste versie een nauwkeurigheid van 98% op rang 1 bereiken (foto's van beroemdheden zijn over het algemeen vrij specifiek). Daarom hebben ze een aparte identificatietest gemaakt, vergelijkbaar met Megaface, maar dan met foto’s van ‘gewone’ mensen. Vervolgens hebben we de herkenningsnauwkeurigheid van onze datasets verbeterd en een grote stap vooruit gezet. Daarnaast gebruiken we een clusteringkwaliteitstest die bestaat uit enkele duizenden foto's; het simuleert gezichtstagging in de cloud van de gebruiker. In dit geval zijn clusters groepen van vergelijkbare individuen, één groep voor elke herkenbare persoon. We hebben de kwaliteit van het werk op echte groepen gecontroleerd (waar).

Herkenningsfouten komen uiteraard bij elk model voor. Maar dergelijke situaties worden vaak opgelost door de drempels af te stemmen op specifieke omstandigheden (voor alle conferenties gebruiken we dezelfde drempels, maar voor toegangscontrolesystemen moeten we de drempels bijvoorbeeld sterk verhogen zodat er minder false positives zijn). Het overgrote deel van de congresbezoekers werd correct herkend door onze Vision photobooths. Soms keek iemand naar het bijgesneden voorbeeld en zei: "Je systeem heeft een fout gemaakt, ik was het niet." Vervolgens hebben we de foto in zijn geheel geopend, en het bleek dat er echt deze bezoeker op de foto stond, alleen fotografeerden we hem niet, maar iemand anders, de persoon stond toevallig op de achtergrond in de onscherpe zone. Bovendien herkent het neurale netwerk vaak correct, zelfs wanneer een deel van het gezicht niet zichtbaar is, of de persoon in profiel staat, of zelfs half gedraaid. Het systeem kan een persoon herkennen, zelfs als het gezicht zich in het gebied van optische vervorming bevindt, bijvoorbeeld bij fotograferen met een groothoeklens.

1.3. Voorbeelden van testen in moeilijke situaties

Hieronder vindt u voorbeelden van hoe ons neurale netwerk werkt. Er worden foto's aan de invoer voorgelegd, die ze moet labelen met behulp van PersonID - een unieke identificatie van een persoon. Als twee of meer afbeeldingen dezelfde ID hebben, tonen deze foto's volgens de modellen dezelfde persoon.

Laten we meteen opmerken dat we bij het testen toegang hebben tot verschillende parameters en modeldrempels die we kunnen configureren om een ​​bepaald resultaat te bereiken. De openbare API is geoptimaliseerd voor maximale nauwkeurigheid bij veelvoorkomende cases.

Laten we beginnen met het eenvoudigste: gezichtsherkenning aan de voorzijde.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Nou, dat was te gemakkelijk. Laten we de taak ingewikkelder maken, een baard en een handvol jaren toevoegen.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Sommigen zullen zeggen dat dit ook niet zo moeilijk was, omdat in beide gevallen het hele gezicht zichtbaar is en er veel informatie over het gezicht beschikbaar is voor het algoritme. Oké, laten we Tom Hardy in profiel veranderen. Dit probleem is veel complexer en we hebben veel moeite gedaan om het met succes op te lossen met behoud van een laag foutenpercentage: we hebben een trainingsset geselecteerd, de architectuur van het neurale netwerk doordacht, de verliesfuncties aangescherpt en de voorverwerking verbeterd. van foto's.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Laten we hem een ​​hoofdtooi geven:

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Dit is trouwens een voorbeeld van een bijzonder moeilijke situatie, omdat het gezicht zwaar verduisterd is en op de onderste foto ook een diepe schaduw de ogen verbergt. In het echte leven veranderen mensen heel vaak hun uiterlijk met behulp van een donkere bril. Laten we hetzelfde doen met Tom.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Oké, laten we proberen foto's uit verschillende leeftijden te gebruiken, en deze keer experimenteren we met een andere acteur. Laten we een veel complexer voorbeeld nemen, waarbij leeftijdsgebonden veranderingen bijzonder uitgesproken zijn. De situatie is niet vergezocht; het komt vrij vaak voor wanneer je de foto in het paspoort moet vergelijken met het gezicht van de drager. De eerste foto wordt immers aan het paspoort toegevoegd als de eigenaar 20 jaar oud is, en op 45-jarige leeftijd kan iemand enorm veranderen:

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Denk je dat de belangrijkste specialist op onmogelijke missies met de jaren niet veel is veranderd? Ik denk dat zelfs een paar mensen de bovenste en onderste foto's zouden combineren, de jongen is door de jaren heen zo veranderd.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Neurale netwerken ondervinden veel vaker veranderingen in uiterlijk. Soms kunnen vrouwen bijvoorbeeld hun imago enorm veranderen met behulp van cosmetica:

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Laten we de taak nu nog ingewikkelder maken: stel dat verschillende delen van het gezicht op verschillende foto’s zijn bedekt. In dergelijke gevallen kan het algoritme niet hele monsters vergelijken. Vision gaat echter goed om met dit soort situaties.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Er kunnen trouwens veel gezichten op een foto staan; op een algemene foto van een zaal passen bijvoorbeeld meer dan 100 mensen. Dit is een moeilijke situatie voor neurale netwerken, omdat veel gezichten anders kunnen worden belicht, sommige onscherp. Als de foto echter met voldoende resolutie en kwaliteit is gemaakt (minimaal 75 pixels per vierkant die het gezicht bedekken), kan Vision deze detecteren en herkennen.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Het bijzondere van reportagefoto’s en beelden van bewakingscamera’s is dat mensen vaak onscherp zijn omdat ze onscherp waren of op dat moment in beweging waren:

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Ook kan de lichtintensiteit sterk variëren van afbeelding tot afbeelding. Ook dit vormt vaak een struikelblok; veel algoritmen hebben grote moeite met het correct verwerken van afbeeldingen die te donker en te licht zijn, om nog maar te zwijgen van het nauwkeurig matchen ervan. Ik wil u eraan herinneren dat u om dit resultaat te bereiken de drempels op een bepaalde manier moet configureren; deze functie is nog niet openbaar beschikbaar. We gebruiken voor alle cliënten hetzelfde neurale netwerk; het heeft drempels die geschikt zijn voor de meeste praktische taken.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

We hebben onlangs een nieuwe versie van het model uitgerold die Aziatische gezichten met hoge nauwkeurigheid herkent. Vroeger was dit een groot probleem, dat zelfs “machine learning” (of “neuraal netwerk”) racisme werd genoemd. Europese en Amerikaanse neurale netwerken herkenden blanke gezichten goed, maar met Mongoloïde en negroïde gezichten was de situatie veel erger. Waarschijnlijk was de situatie in China precies het tegenovergestelde. Het gaat allemaal om het trainen van datasets die de dominante typen mensen in een bepaald land weerspiegelen. De situatie is echter aan het veranderen; vandaag is dit probleem niet zo acuut. Visie heeft geen probleem met mensen van verschillende rassen.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Gezichtsherkenning is slechts een van de vele toepassingen van onze technologie; visie kan worden getraind om alles te herkennen. Bijvoorbeeld kentekenplaten, ook in omstandigheden die moeilijk zijn voor algoritmen: onder scherpe hoeken, vuile en moeilijk leesbare kentekenplaten.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

2. Praktische gebruiksscenario's

2.1. Fysieke toegangscontrole: wanneer twee personen dezelfde pas gebruiken

Met behulp van Vision kunt u systemen implementeren voor het registreren van de aankomst en het vertrek van medewerkers. Het traditionele systeem op basis van elektronische pasjes heeft duidelijke nadelen: je kunt met één badge bijvoorbeeld twee personen passeren. Als het toegangscontrolesysteem (ACS) wordt aangevuld met Vision, wordt eerlijk vastgelegd wie wanneer kwam/ging.

2.2. Tijdregistratie

Deze Vision-use case is nauw verwant aan de vorige. Als u het toegangssysteem aanvult met onze gezichtsherkenningsservice, kan deze niet alleen overtredingen van de toegangscontrole detecteren, maar ook de daadwerkelijke aanwezigheid van medewerkers in het gebouw of de faciliteit registreren. Met andere woorden, Vision helpt u eerlijk rekening te houden met wie op welk tijdstip naar het werk kwam en vertrok, en wie het werk helemaal oversloeg, zelfs als zijn collega's voor hem in het bijzijn van zijn superieuren zorgden.

2.3. Videoanalyse: volgen van mensen en beveiliging

Door mensen te volgen met Vision, kunt u het echte verkeer van winkelgebieden, treinstations, passages, straten en vele andere openbare plaatsen nauwkeurig inschatten. Onze tracking kan ook een grote hulp zijn bij het controleren van de toegang tot bijvoorbeeld een magazijn of ander belangrijk kantoorpand. En natuurlijk helpt het volgen van mensen en gezichten bij het oplossen van beveiligingsproblemen. Heeft u iemand betrapt op diefstal uit uw winkel? Voeg zijn door Vision geretourneerde PersonID toe aan de zwarte lijst van uw videoanalysesoftware, en de volgende keer waarschuwt het systeem onmiddellijk de beveiliging als dit type opnieuw verschijnt.

2.4. In handel

Retail- en diverse dienstverlenende bedrijven zijn geïnteresseerd in wachtrijherkenning. Met behulp van Vision kun je herkennen dat dit geen willekeurige mensenmassa is, maar een wachtrij, en de lengte ervan bepalen. En dan informeert het systeem de verantwoordelijken over een wachtrij, zodat ze de situatie kunnen achterhalen: er is een toestroom van bezoekers en er moeten extra werknemers worden gebeld, of iemand verveelt zich in zijn werk.

Een andere interessante taak is om bedrijfsmedewerkers in de hal te scheiden van bezoekers. Doorgaans is het systeem getraind om objecten te scheiden die bepaalde kleding dragen (dresscode) of een onderscheidend kenmerk hebben (sjaal met merkteken, badge op de borst, enzovoort). Dit helpt om de aanwezigheid nauwkeuriger te beoordelen (zodat werknemers de statistieken van mensen in de zaal niet “opblazen” door louter hun aanwezigheid).

Met gezichtsherkenning kunt u ook uw publiek evalueren: wat is de loyaliteit van bezoekers, dat wil zeggen hoeveel mensen terugkeren naar uw etablissement en met welke frequentie. Bereken hoeveel unieke bezoekers er maandelijks bij u komen. Om de kosten voor het aantrekken en behouden te optimaliseren, kunt u ook de verandering in het verkeer achterhalen, afhankelijk van de dag van de week en zelfs het tijdstip van de dag.

Franchisegevers en ketenbedrijven kunnen op basis van foto’s een beoordeling laten maken van de kwaliteit van de branding van diverse verkooppunten: de aanwezigheid van logo’s, uithangborden, posters, spandoeken, enzovoort.

2.5. Via vervoer

Een ander voorbeeld van het garanderen van de veiligheid met behulp van video-analyse is het identificeren van achtergelaten voorwerpen in de hallen van luchthavens of treinstations. Het gezichtsvermogen kan worden getraind om voorwerpen uit honderden klassen te herkennen: meubelstukken, tassen, koffers, paraplu's, verschillende soorten kleding, flessen, enzovoort. Als uw videoanalysesysteem een ​​object zonder eigenaar detecteert en dit herkent met behulp van Vision, stuurt het een signaal naar de beveiligingsdienst. Een soortgelijke taak houdt verband met de automatische detectie van ongebruikelijke situaties op openbare plaatsen: iemand voelt zich ziek, of iemand rookt op de verkeerde plaats, of een persoon valt op de rails, enzovoort - al deze patronen kunnen worden herkend door videoanalysesystemen via de Vision-API.

2.6. Documentstroom

Een andere interessante toekomstige toepassing van Vision die we momenteel ontwikkelen is documentherkenning en het automatisch parseren ervan in databases. In plaats van handmatig eindeloze reeksen, nummers, uitgiftedata, rekeningnummers, bankgegevens, geboortedata en -plaatsen en vele andere geformaliseerde gegevens handmatig in te voeren (of erger nog, in te voeren), kunt u documenten scannen en automatisch via een beveiligd kanaal versturen via de API naar de cloud, waar het systeem deze documenten direct herkent, parseert en een antwoord retourneert met gegevens in het vereiste formaat voor automatische invoer in de database. Tegenwoordig weet Vision al hoe documenten (inclusief pdf) moeten worden geclassificeerd - maakt onderscheid tussen paspoorten, SNILS, TIN, geboorteakten, huwelijksakten en andere.

Natuurlijk kan het neurale netwerk niet al deze situaties out-of-the-box aan. In elk geval wordt een nieuw model gebouwd voor een specifieke klant, wordt er rekening gehouden met veel factoren, nuances en vereisten, worden datasets geselecteerd en worden iteraties van training, testen en configuratie uitgevoerd.

3. API-bedieningsschema

De ‘toegangspoort’ van Vision voor gebruikers is de REST API. Het kan foto's, videobestanden en uitzendingen van netwerkcamera's (RTSP-streams) als invoer ontvangen.

Om Vision te gebruiken, hebt u nodig registreren in de Mail.ru Cloud Solutions-service en ontvang toegangstokens (client_id + client_secret). Gebruikersauthenticatie wordt uitgevoerd met behulp van het OAuth-protocol. De brongegevens in de hoofdtekst van POST-aanvragen worden naar de API verzonden. En als reactie ontvangt de klant van de API een herkenningsresultaat in JSON-formaat, en het antwoord is gestructureerd: het bevat informatie over de gevonden objecten en hun coördinaten.

Met baard, donkere bril en in profiel: moeilijke situaties voor computervisie

Voorbeeld antwoord

{
   "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
}

Het antwoord bevat een interessante parameter awesomeness - dit is de voorwaardelijke "koelheid" van een gezicht op een foto, met behulp daarvan selecteren we de beste opname van een gezicht uit de reeks. We hebben een neuraal netwerk getraind om de waarschijnlijkheid te voorspellen dat een foto leuk gevonden zal worden op sociale netwerken. Hoe beter de kwaliteit van de foto en hoe lachender het gezicht, hoe groter de geweldigheid.

API Vision maakt gebruik van een concept dat ruimte wordt genoemd. Dit is een hulpmiddel voor het maken van verschillende sets gezichten. Voorbeelden van ruimtes zijn zwart-witlijsten, lijsten van bezoekers, medewerkers, klanten etc. Voor elke token in Vision kun je maximaal 10 ruimtes aanmaken, elke ruimte kan maximaal 50 PersonID’s hebben, dat wil zeggen maximaal 500 per token. Bovendien is het aantal tokens per account niet beperkt.

Tegenwoordig ondersteunt de API de volgende detectie- en herkenningsmethoden:

  • Herkennen/instellen - detectie en herkenning van gezichten. Wijst automatisch een PersonID toe aan elke unieke persoon, retourneert de PersonID en coördinaten van de gevonden personen.
  • Verwijderen - het verwijderen van een specifieke PersonID uit de personendatabase.
  • Afkappen - wist de gehele ruimte van PersonID, handig als deze als testruimte werd gebruikt en u de database opnieuw moet instellen voor productie.
  • Detecteren - detectie van objecten, scènes, kentekenplaten, oriëntatiepunten, wachtrijen, enz. Geeft de klasse van gevonden objecten en hun coördinaten terug
  • Detecteren op documenten - detecteert specifieke soorten documenten van de Russische Federatie (onderscheidt paspoort, SNILS, belastingidentificatienummer, enz.).

We zullen binnenkort ook het werk afronden aan methoden voor OCR, het bepalen van geslacht, leeftijd en emoties, en het oplossen van merchandisingproblemen, dat wil zeggen voor het automatisch controleren van de weergave van goederen in winkels. De volledige API-documentatie vindt u hier: https://mcs.mail.ru/help/vision-api

4. conclusie

Nu hebt u via de openbare API toegang tot gezichtsherkenning in foto's en video's; identificatie van verschillende objecten, kentekenplaten, oriëntatiepunten, documenten en hele scènes wordt ondersteund. Toepassingsscenario's - de zee. Kom, test onze service en stel hem de meest lastige taken in. De eerste 5000 transacties zijn gratis. Misschien is het wel het “ontbrekende ingrediënt” voor uw projecten.

Na registratie en verbinding heeft u direct toegang tot de API. Visie. Alle Habra-gebruikers ontvangen een promotiecode voor extra transacties. Schrijf mij alstublieft het e-mailadres dat u heeft gebruikt om uw account te registreren!

Bron: www.habr.com

Voeg een reactie