Technologijos ir modeliai mūsų būsimai kompiuterinio matymo sistemai buvo kuriami ir tobulinami palaipsniui ir įvairiuose mūsų įmonės projektuose – pašte, debesyje, paieškoje. Jie subrendo kaip geras sūris ar konjakas. Vieną dieną supratome, kad mūsų neuroniniai tinklai rodo puikius atpažinimo rezultatus, ir nusprendėme juos sujungti į vieną b2b produktą – „Vision“, kurį dabar naudojame patys ir siūlome naudotis jums.
Šiandien mūsų kompiuterinio matymo technologija Mail.Ru Cloud Solutions platformoje sėkmingai veikia ir sprendžia labai sudėtingas praktines problemas. Jis pagrįstas daugeliu neuroninių tinklų, kurie yra apmokyti mūsų duomenų rinkiniuose ir specializuojasi taikomųjų problemų sprendimu. Visos paslaugos teikiamos mūsų serveriuose. Į savo programas galite integruoti viešąją Vision API, per kurią pasiekiamos visos paslaugos galimybės. API yra greita – serverio GPU dėka vidutinis atsako laikas mūsų tinkle yra 100 ms.
Eikite į katę, ten yra išsami istorija ir daug Vizijos darbo pavyzdžių.
Kaip paslaugos, kurioje mes patys naudojame minėtas veido atpažinimo technologijas, pavyzdį galime paminėti
1. Mūsų veido atpažinimo modelis
1.1. Neuroninis tinklas ir apdorojimo greitis
Atpažinimui naudojame ResNet 101 neuroninio tinklo modelio modifikaciją.Average Pooling pabaigoje pakeičiamas visiškai sujungtu sluoksniu, panašiai kaip tai daroma ArcFace. Tačiau vektorinių vaizdų dydis yra 128, o ne 512. Mūsų mokymo rinkinyje yra apie 10 milijonų 273 593 žmonių nuotraukų.
Modelis veikia labai greitai dėl kruopščiai parinktos serverio konfigūracijos architektūros ir GPU skaičiavimo. Atsakymas iš API mūsų vidiniuose tinkluose užtrunka nuo 100 ms – tai apima veido aptikimą (veido aptikimą nuotraukoje), asmens ID atpažinimą ir grąžinimą API atsakyme. Esant dideliam gaunamų duomenų kiekiui – nuotraukų ir vaizdo įrašų – duomenų perkėlimas į paslaugą ir atsakymo gavimas užtruks daug daugiau laiko.
1.2. Modelio efektyvumo įvertinimas
Tačiau neuroninių tinklų efektyvumo nustatymas yra labai dviprasmiška užduotis. Jų darbo kokybė priklauso nuo to, kokiais duomenų rinkiniais modeliai buvo mokomi ir ar jie buvo optimizuoti darbui su konkrečiais duomenimis.
Savo modelio tikslumą pradėjome vertinti naudodami populiarų LFW patikros testą, tačiau jis per mažas ir paprastas. Pasiekus 99,8% tikslumą, jis nebenaudingas. Vyksta geras atpažinimo modelių vertinimo konkursas – „Megaface“, kuriame pamažu pasiekėme 82 proc. 1 reitingo. „Megaface“ testą sudaro milijonas nuotraukų – atitraukiančių priemonių – ir modelis turėtų gerai atskirti kelis tūkstančius įžymybių nuotraukų nuo „Facescrub“. duomenų rinkinys iš trukdžių. Tačiau išvalę „Megaface“ testą nuo klaidų, nustatėme, kad su išvalyta versija pasiekiame 98% tikslumą 1 reitinge (įžymybių nuotraukos paprastai yra gana specifinės). Todėl jie sukūrė atskirą identifikavimo testą, panašų į „Megaface“, bet su „paprastų“ žmonių nuotraukomis. Tada pagerinome savo duomenų rinkinių atpažinimo tikslumą ir nuėjome toli į priekį. Be to, naudojame klasterizacijos kokybės testą, kurį sudaro keli tūkstančiai nuotraukų; jis imituoja veido žymėjimą vartotojo debesyje. Šiuo atveju klasteriai yra panašių asmenų grupės, po vieną kiekvienam atpažįstamam asmeniui. Tikrinome darbo kokybę realiose grupėse (tiesa).
Žinoma, bet kuriame modelyje pasitaiko atpažinimo klaidų. Bet tokios situacijos dažnai išsprendžiamos tikslinant konkrečių sąlygų slenksčius (visoms konferencijoms naudojame tuos pačius slenksčius, bet, pavyzdžiui, prieigos kontrolės sistemoms turime labai padidinti slenksčius, kad būtų mažiau klaidingų teigiamų rezultatų). Didžiąją daugumą konferencijos lankytojų teisingai atpažino mūsų Vision foto kabinos. Kartais kas nors pažiūrėdavo į apkarpytą peržiūrą ir sakydavo: „Jūsų sistema padarė klaidą, tai ne aš“. Tada atidarėme visą nuotrauką ir paaiškėjo, kad nuotraukoje tikrai yra šis lankytojas, tik mes fotografavome ne jį, o ką nors kitą, žmogus tiesiog atsidūrė fone, suliejimo zonoje. Be to, neuroninis tinklas dažnai teisingai atpažįsta net tada, kai nematyti dalies veido, arba žmogus stovi profilyje ar net pusiau apsivertęs. Sistema gali atpažinti žmogų net jei veidas yra optinio iškraipymo zonoje, tarkime, fotografuojant plačiakampiu objektyvu.
1.3. Bandymų sudėtingose situacijose pavyzdžiai
Žemiau pateikiami mūsų neuroninio tinklo veikimo pavyzdžiai. Į įvestį pateikiamos nuotraukos, kurias ji turi pažymėti naudodama PersonID – unikalų asmens identifikatorių. Jei du ar daugiau vaizdų turi tą patį ID, tai, pagal modelius, šiose nuotraukose pavaizduotas tas pats asmuo.
Iš karto atkreipkime dėmesį, kad testuodami turime prieigą prie įvairių parametrų ir modelio slenksčių, kuriuos galime konfigūruoti, kad pasiektume tam tikrą rezultatą. Viešoji API optimizuota siekiant maksimalaus tikslumo įprastais atvejais.
Pradėkime nuo paprasčiausio dalyko – nuo priekinio veido atpažinimo.
Na, tai buvo per lengva. Apsunkinkime užduotį, pridėkime barzdą ir saują metų.
Kai kas sakys, kad tai taip pat nebuvo labai sunku, nes abiem atvejais matomas visas veidas, o algoritmui prieinama daug informacijos apie veidą. Gerai, paverskime Tomą Hardy profiliu. Ši problema yra daug sudėtingesnė ir įdėjome daug pastangų, kad ją sėkmingai išspręstume, išlaikydami žemą klaidų procentą: pasirinkome mokymo rinkinį, apgalvojome neuroninio tinklo architektūrą, patobulinome praradimo funkcijas ir patobulinome išankstinį apdorojimą. nuotraukų.
Uždėkime jam galvos apdangalą:
Beje, tai ypač keblios situacijos pavyzdys, nes veidas stipriai užtemdytas, o apatinėje nuotraukoje taip pat gilus šešėlis, slepiantis akis. Realiame gyvenime žmonės labai dažnai keičia savo išvaizdą tamsių akinių pagalba. Padarykime tą patį su Tomu.
Gerai, pabandykime įmesti įvairaus amžiaus nuotraukas, o šį kartą eksperimentuosime su kitu aktoriumi. Paimkime daug sudėtingesnį pavyzdį, kur su amžiumi susiję pokyčiai yra ypač ryškūs. Situacija nėra tolima, gana dažnai pasitaiko, kai reikia palyginti nuotrauką pase su nešiotojo veidu. Juk pirmoji nuotrauka į pasą pridedama, kai savininkui sukanka 20 metų, o iki 45 metų žmogus gali labai pasikeisti:
Kaip manote, ar pagrindinis neįmanomų misijų specialistas su amžiumi nelabai pasikeitė? Manau, kad net keli žmonės derintų viršutinę ir apatinę nuotraukas, berniukas per tiek metų pasikeitė.
Neuroniniai tinklai daug dažniau susiduria su išvaizdos pokyčiais. Pavyzdžiui, kartais moterys kosmetikos pagalba gali labai pakeisti savo įvaizdį:
Dabar dar labiau apsunkinkime užduotį: tarkime, kad skirtingos veido dalys yra padengtos skirtingose nuotraukose. Tokiais atvejais algoritmas negali palyginti visų imčių. Tačiau „Vision“ puikiai susidoroja su tokiomis situacijomis.
Beje, nuotraukoje gali būti daug veidų, pavyzdžiui, bendroje salės nuotraukoje telpa daugiau nei 100 žmonių. Tai sudėtinga situacija neuroniniams tinklams, nes daugelis veidų gali būti apšviesti skirtingai, o kai kurie nefokusuoti. Tačiau jei nuotrauka bus padaryta pakankamai raiška ir kokybiškai (ne mažiau kaip 75 pikseliai viename veidą dengiančio kvadrato), „Vision“ galės ją aptikti ir atpažinti.
Reportažinių nuotraukų ir vaizdų iš stebėjimo kamerų ypatumas yra tas, kad žmonės dažnai būna neryškūs, nes tuo metu buvo nesufokusuoti arba judėjo:
Be to, apšvietimo intensyvumas gali labai skirtis priklausomai nuo vaizdo. Tai taip pat dažnai tampa kliūtimi; daugeliui algoritmų kyla didelių sunkumų tinkamai apdoroti per tamsius ir per šviesius vaizdus, jau nekalbant apie jų tikslų atitikimą. Priminsiu, kad norint pasiekti šį rezultatą reikia tam tikru būdu sukonfigūruoti slenksčius, ši funkcija dar nėra viešai prieinama. Visiems klientams naudojame tą patį neuroninį tinklą, jo slenksčiai tinka daugumai praktinių užduočių.
Neseniai išleidome naują modelio versiją, kuri labai tiksliai atpažįsta Azijos veidus. Anksčiau tai buvo didelė problema, kuri netgi buvo vadinama „mašininiu mokymusi“ (arba „neuroniniu tinklu“) rasizmu. Europos ir Amerikos neuroniniai tinklai gerai atpažino Kaukazo veidus, tačiau su mongoloidiniais ir negroidiniais veidais situacija buvo daug blogesnė. Tikriausiai Kinijoje situacija buvo visiškai priešinga. Tai viskas apie mokymo duomenų rinkinius, kurie atspindi dominuojančius žmonių tipus konkrečioje šalyje. Tačiau situacija keičiasi, šiandien ši problema nėra tokia opi. Vizija neturi problemų su skirtingų rasių žmonėmis.
Veido atpažinimas yra tik vienas iš daugelio mūsų technologijos pritaikymo būdų; Regėjimą galima išmokyti atpažinti bet ką. Pavyzdžiui, valstybiniai numeriai, įskaitant sudėtingomis algoritmams sąlygomis: esant aštriems kampams, nešvariems ir sunkiai įskaitomiems numeriams.
2. Praktiniai panaudojimo atvejai
2.1. Fizinė prieigos kontrolė: kai du žmonės naudojasi tuo pačiu leidimu
Vision pagalba galite įdiegti darbuotojų atvykimo ir išvykimo fiksavimo sistemas. Tradicinė sistema, pagrįsta elektroniniais leidimais, turi akivaizdžių trūkumų, pavyzdžiui, vienu ženkleliu galite praleisti du žmones. Jei prieigos kontrolės sistema (ACS) bus papildyta „Vision“, ji sąžiningai fiksuos, kas ir kada atėjo/išėjo.
2.2. Laiko sekimas
Šis „Vision“ naudojimo atvejis yra glaudžiai susijęs su ankstesniu. Jei praėjimo sistemą papildysite mūsų veidų atpažinimo paslauga, ji galės ne tik aptikti praėjimo kontrolės pažeidimus, bet ir užregistruoti faktinį darbuotojų buvimą pastate ar objekte. Kitaip tariant, „Vision“ padės sąžiningai atsižvelgti į tai, kas atėjo į darbą ir kuriuo metu išėjo, o kas apskritai praleido darbą, net jei kolegos už jį dengė viršininkų akivaizdoje.
2.3. Vaizdo įrašų analizė: žmonių sekimas ir sauga
Stebėdami žmones naudodami Vision, galite tiksliai įvertinti tikrąjį eismą prekybos zonose, traukinių stotyse, perėjose, gatvėse ir daugelyje kitų viešųjų vietų. Mūsų sekimas taip pat gali labai padėti kontroliuoti prieigą, pavyzdžiui, į sandėlį ar kitas svarbias biuro patalpas. Ir, žinoma, žmonių ir veidų sekimas padeda išspręsti saugumo problemas. Sugavote ką nors vagiantį iš jūsų parduotuvės? Pridėkite jo asmens ID, kurį grąžino Vision, į juodąjį vaizdo įrašų analizės programinės įrangos sąrašą ir kitą kartą sistema nedelsdama įspės apsaugą, jei šis tipas vėl pasirodys.
2.4. Prekyboje
Eilių atpažinimu domisi mažmeninė prekyba ir įvairios paslaugų įmonės. „Vision“ pagalba galite atpažinti, kad tai ne atsitiktinė žmonių minia, o eilė, ir nustatyti jos ilgį. Ir tada sistema praneša atsakingiems apie eilę, kad jie išsiaiškintų situaciją: arba lankytojų antplūdis ir reikia kviesti papildomų darbuotojų, arba kažkas slampinėja savo darbo pareigas.
Dar viena įdomi užduotis – salėje esančius įmonės darbuotojus atskirti nuo lankytojų. Paprastai sistema treniruojama atskirti objektus, dėvinčius tam tikrus drabužius (aprangos kodas) arba turinčius kokį nors išskirtinį bruožą (firminis šalikas, ženklelis ant krūtinės ir pan.). Tai padeda tiksliau įvertinti lankomumą (kad darbuotojai vien savo buvimu „neišpūstų“ salėje esančių žmonių statistikos).
Naudodami veido atpažinimą taip pat galite įvertinti savo auditoriją: koks yra lankytojų lojalumas, tai yra, kiek žmonių ir kokiu dažnumu grįžta į jūsų įstaigą. Apskaičiuokite, kiek unikalių lankytojų ateina pas jus per mėnesį. Norėdami optimizuoti pritraukimo ir išlaikymo išlaidas, taip pat galite sužinoti srauto pokyčius priklausomai nuo savaitės dienos ir net paros laiko.
Franšizės davėjai ir tinklo įmonės gali užsisakyti įvairių mažmeninės prekybos vietų prekių ženklų kokybės įvertinimą, pagrįstą nuotraukomis: logotipų, iškabų, plakatų, banerių ir pan.
2.5. Transportu
Kitas saugumo užtikrinimo naudojant vaizdo analizę pavyzdys – oro uostų ar traukinių stočių salėse aptikti palikti daiktai. Regėjimą galima lavinti atpažinti šimtų klasių objektus: baldus, krepšius, lagaminus, skėčius, įvairių rūšių drabužius, butelius ir pan. Jei jūsų vaizdo analizės sistema aptinka besavininkį objektą ir atpažįsta jį naudodama „Vision“, ji siunčia signalą saugos tarnybai. Panaši užduotis siejama ir su automatiniu neįprastų situacijų viešose vietose aptikimu: kam nors blogai, ar kas nors ne vietoje rūko, ar žmogus nukrenta ant bėgių ir t.t. – visus šiuos šablonus gali atpažinti vaizdo analizės sistemos. per Vision API.
2.6. Dokumentų srautas
Kita įdomi ateities „Vision“ programa, kurią šiuo metu kuriame, yra dokumentų atpažinimas ir automatinis jų analizavimas į duomenų bazes. Užuot rankiniu būdu įvedę (arba dar blogiau, įvedę) begalines serijas, skaičius, išdavimo datas, sąskaitų numerius, banko duomenis, gimimo datas ir vietas bei daugybę kitų formalizuotų duomenų, galite nuskaityti dokumentus ir automatiškai išsiųsti juos saugiu kanalu per API į debesį, kur sistema atpažins šiuos dokumentus skrydžio metu, juos išnagrinės ir grąžins atsakymą su duomenimis reikiamu formatu, kad būtų galima automatiškai patekti į duomenų bazę. Šiandien Vision jau žino, kaip klasifikuoti dokumentus (įskaitant PDF) - išskiria pasus, SNILS, TIN, gimimo liudijimus, santuokos liudijimus ir kitus.
Žinoma, neuroninis tinklas negali susidoroti su visais šiais atvejais. Kiekvienu atveju konkrečiam klientui kuriamas naujas modelis, atsižvelgiama į daugybę faktorių, niuansų ir reikalavimų, parenkami duomenų rinkiniai, atliekamos mokymo, testavimo, konfigūravimo iteracijos.
3. API veikimo schema
Vision „įėjimo vartai“ vartotojams yra REST API. Jis gali priimti nuotraukas, vaizdo failus ir transliacijas iš tinklo kamerų (RTSP srautų) kaip įvestį.
Norėdami naudoti Vision, jums reikia
Atsakymo pavyzdys
{
"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
}
Atsakyme yra įdomus nuostabumo parametras - tai sąlyginis veido „vėsumas“ nuotraukoje, kurio pagalba iš sekos atrenkame geriausią veido kadrą. Išmokėme neuroninį tinklą nuspėti tikimybę, kad nuotraukai patiks socialiniai tinklai. Kuo geresnė nuotraukos kokybė ir kuo labiau besišypsantis veidas, tuo didesnis nuostabumas.
API Vision naudoja sąvoką, vadinamą erdve. Tai įrankis, skirtas sukurti skirtingus veidų rinkinius. Tarpų pavyzdžiai yra juodieji ir baltieji sąrašai, lankytojų, darbuotojų, klientų sąrašai ir kt. Kiekvienam Vision prieigos raktui galite sukurti iki 10 erdvių, kiekviena erdvė gali turėti iki 50 tūkstančių PersonID, tai yra iki 500 tūkst. už žetoną. Be to, žetonų skaičius paskyroje nėra ribojamas.
Šiandien API palaiko šiuos aptikimo ir atpažinimo metodus:
- Recognize/Set – veidų aptikimas ir atpažinimas. Kiekvienam unikaliam asmeniui automatiškai priskiria asmens ID, grąžina asmenį ir rastų asmenų koordinates.
- Ištrinti – konkretaus asmens ID ištrynimas iš asmenų duomenų bazės.
- Sutrumpinti – išvalo visą erdvę iš PersonID, naudinga, jei ji buvo naudojama kaip bandomoji vieta ir reikia iš naujo nustatyti duomenų bazę gamybai.
- Detect – objektų, scenų, valstybinių numerių, orientyrų, eilių ir tt aptikimas. Grąžina rastų objektų klasę ir jų koordinates
- Aptikti dokumentus – aptinka tam tikrus Rusijos Federacijos dokumentų tipus (išskiria pasą, SNILS, mokesčių mokėtojo numerį ir kt.).
Taip pat greitai baigiame dirbti su OCR, lyties, amžiaus ir emocijų nustatymo metodais, taip pat sprendžiame prekybines problemas, tai yra, automatiškai kontroliuojame prekių demonstravimą parduotuvėse. Visą API dokumentaciją galite rasti čia:
4. Išvada
Dabar per viešąją API galite pasiekti veido atpažinimą nuotraukose ir vaizdo įrašuose; palaikomas įvairių objektų, valstybinių numerių, orientyrų, dokumentų ir ištisų scenų identifikavimas. Taikymo scenarijai – jūra. Ateikite, išbandykite mūsų paslaugą, nustatykite sudėtingiausias užduotis. Pirmosios 5000 operacijų yra nemokamos. Galbūt tai bus jūsų projektų „trūkstama sudedamoji dalis“.
Prisiregistravę ir prisijungę galite iš karto pasiekti API.
Šaltinis: www.habr.com