З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Тэхналогіі і мадэлі для нашай будучай сістэмы камп'ютэрнага зроку ствараліся і ўдасканальваліся паступова і ў розных праектах нашай кампаніі - у Пошце, Воблаку, Пошуку. Выспявалі як добры сыр ці каньяк. Аднойчы мы зразумелі, што нашы нейрасеці паказваюць выдатныя вынікі ў распазнанні, і вырашылі звесці іх у адзіны b2b-прадукт – Vision, – якім мы зараз карыстаемся самі і прапануем скарыстацца вам.

Сёння наша тэхналогія кампутарнага зроку на платформе Mail.Ru Cloud Solutions паспяхова працуе і вырашае вельмі складаныя практычныя задачы. У яе аснове ляжыць шэраг нейронавых сетак, якія навучаны на нашых дата-сэтах і спецыялізуюцца на вырашэнні прыкладных задач. Усе сэрвісы круцяцца на нашых серверных магутнасцях. Вы можаце інтэграваць у свае прыкладанні публічны API Vision, праз які даступныя ўсе магчымасці сэрвісу. API хуткадзейны – дзякуючы серверным GPU сярэдні час водгуку ўнутры нашай сеткі на ўзроўні 100 мс.

Заходзьце пад кат, там падрабязнае апавяданне і шмат прыкладаў працы Vision.

У якасці прыкладу сэрвісу, у якім мы самі выкарыстоўваем згаданыя тэхналогіі распазнання асоб, можна прывесці падзеі. Адным з яго кампанентаў з'яўляюцца фотастойкі Vision, якія мы ставім на розных канферэнцыях. Калі вы падыдзеце да такой фотастойкі, сфатаграфуецеся на ўбудаваную камеру і ўведзяце сваю пошту, сістэма адразу знойдзе сярод масіва фатаграфій тыя з іх, на якіх вас адлюстравалі штатныя фатографы канферэнцыі, і пры жаданні знойдзеныя фатаграфіі адправіць вам на пошту. Прычым гаворка не пра пастановачныя партрэтныя здымкі — Vision распазнае вас нават на самым заднім плане ў натоўпе наведвальнікаў. Вядома, распазнаюць не самі фотастойкі, гэта толькі планшэты ў прыгожых падстаўках, якія проста фатаграфуюць гасцей на свае ўбудаваныя камеры і перадаюць інфармацыю на серверы, дзе і адбываецца ўся магія распазнання. І мы не раз назіралі, якое здзіўленне выклікае эфектыўнасць тэхналогіі нават у адмыслоўцаў па распазнанні малюнкаў. Ніжэй мы раскажам пра некаторыя прыклады.

1. Наша мадэль Face Recognition

1.1. Нейронная сетка і хуткасць апрацоўкі

Для распазнання мы выкарыстоўваем мадыфікацыю мадэлі нейронавай сеткі ResNet 101. Average Pooling у канцы заменены полносвязным пластом па аналогіі з тым, як гэта зроблена ў ArcFace. Аднак памер вектарных уяўленняў роўны 128, а не 512. Наша навучальная выбарка змяшчае каля 10 млн фатаграфій 273 персон.

Мадэль працуе вельмі хутка дзякуючы старанна падабранай архітэктуры сервернай канфігурацыі і вылічэнням на GPU. На атрыманне адказу ад API у нашых унутраных сетках сыходзіць ад 100 мс – сюды ўваходзіць дэтэктаванне асобы (выяўленне асобы на фота), распазнанне і вяртанне PersonID у адказе API. Пры вялікіх аб'ёмах уваходных дадзеных - фатаграфій і відэа - значна больш часу будзе сыходзіць на перадачу дадзеных сэрвісу і на прыход адказу.

1.2. Ацэнка эфектыўнасці мадэлі

А вось вызначэнне эфектыўнасці працы нейросетей – задача вельмі неадназначная. Якасць іх працы залежыць ад таго, на якіх дата-сэтах навучаліся мадэлі і ці аптымізаваліся яны пад працу з пэўнымі дадзенымі.

Ацэньваць дакладнасць сваёй мадэлі мы пачыналі з папулярнага верыфікацыйнага цеста LFW, але ён занадта маленькі і просты. Пасля дасягнення 99,8% дакладнасці ад яго ўжо няма толку. Ёсць добрае спаборніцтва для адзнакі мадэляў распазнання – Megaface на ім мы паступова дабраліся да 82 % rank 1. Тэст Megaface складаецца з мільёна фатаграфій – дыстрактараў, – і мадэль павінна ўмець добра адрозніваць некалькі тысяч фатаграфій знакамітасцяў з датасета Facescrub ад дыстрактараў. Аднак, ачысціўшы тэст Megaface ад памылак, мы высветлілі, што на вычышчаным варыянце дасягаем дакладнасці 98% rank 1 (фатаграфіі знакамітасцяў наогул даволі спецыфічныя). Таму стварылі асобны ідэнтыфікацыйны тэст, падобны на Megaface, але з фатаграфіямі "звычайных" людзей. Далей паляпшалі дакладнасць распазнання на сваіх датасетах і сышлі далёка наперад. Акрамя таго, мы выкарыстоўваем тэст якасці кластарызацыі, які складаецца з некалькіх тысяч фатаграфій; ён сімулюе разметку асоб у воблаку карыстальніка. У дадзеным выпадку кластары - гэта групы падобных асоб, па групе на кожнага чалавека, які распазнаецца. Якасць працы мы правяралі на сапраўдных групах (сапраўдных).

Вядома, памылкі распазнання бываюць у любой мадэлі. Але такія сітуацыі часта вырашаюцца з дапамогай тонкай падладкі парогаў пад пэўныя ўмовы (для ўсіх канферэнцый мы выкарыстоўваем адны і тыя ж парогі, а, да прыкладу, для СКУД даводзіцца парогі моцна падвышаць, каб было менш ілжывастаноўчых спрацоўванняў). Пераважная большасць наведвальнікаў канферэнцый былі распазнаны нашымі фотастойкамі Vision правільна. Часам хто-небудзь глядзеў на абрэзаную превьюшку і казаў: "Ваша сістэма памылілася, гэта не я". Тады мы адчынялі фатаграфію цалкам, і апынялася, што на фатаграфіі сапраўды ёсць гэты наведвальнік, толькі здымалі не яго, а кагосьці іншага, проста чалавек выпадкова апынуўся на заднім плане ў зоне нерэзкасці. Больш за тое, нейронавая сетка часцяком карэктна распазнае нават калі не бачная частка асобы, ці чалавек стаіць у профіль, а то і наогул напаўпаварота. Сістэма можа распазнаць чалавека, нават калі асоба патрапіла ў вобласць аптычных скажэнняў, скажам, пры здымцы шырокавугольным аб'ектывам.

1.3. Прыклады тэсціравання ў складаных сітуацыях

Ніжэй прадстаўлены прыклады працы нашай нейронавай сеткі. На ўваход падаюцца фатаграфіі, якія яна павінна прамаркіраваць з дапамогай PersonID - унікальнага ідэнтыфікатара асобы. Калі ў двух і больш малюнкаў будзе аднолькавы ідэнтыфікатар, значыць, на думку мадэляў, на гэтых фатаграфіях намаляваны адзін чалавек.

Адразу адзначым, што пры тэсціраванні нам даступныя розныя параметры і парогі мадэляў, якія мы можам наладжваць для дасягнення таго ці іншага выніку. Публічнае API аптымізавана пад максімальную дакладнасць на агульных кейсах.

Пачнём з самага простага, з распазнання асобы ў фас.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Ну, гэта было занадта проста. Ускладнім задачу, дадамо бараду і прыгаршчу гадоў.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Хтосьці скажа, што гэта таксама было не занадта складана, бо ў абодвух выпадках асоба відаць цалкам, алгарытму даступна шмат інфармацыі аб асобе. Добра, павернем Тома Хардзі ў профіль. Гэтая задача значна складаней, і на яе паспяховае рашэнне з захаваннем нізкага ўзроўню памылак мы патрацілі нямала сіл: падбіралі навучальную выбарку, прадумвалі архітэктуру нейрасеткі, навострывалі функцыі страт і ўдасканальвалі папярэднюю апрацоўку фатаграфій.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Надзенем на яго галаўны ўбор:

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Дарэчы, гэта прыклад асабліва складанай сітуацыі, паколькі тут моцна закрыты твар, а на ніжнім здымку яшчэ і глыбокі цень, які хавае вочы. У рэальным жыцці людзі вельмі часта мяняюць сваю знешнасць з дапамогай цёмных акуляраў. Зробім тое самае і з Томам.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Добра, паспрабуем накідаць фатаграфіі з розных узростаў, і на гэты раз паставім досвед на іншым акцёры. Возьмем значна больш складаны прыклад, калі ўзроставыя змены праяўляюцца асабліва яскрава. Сітуацыя не надуманая, сустракаецца запар і побач, калі трэба параўнаць фатаграфію ў пашпарце з асобай прад'яўніка. Бо першую фатаграфію ў пашпарт клеюць, калі ўладальніку 20 гадоў, і да 45 чалавек можа вельмі моцна змяніцца:

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Лічыце, што галоўны спецыяліст па невыканальных місіях не моцна змяніўся з узростам? Думаю, што нават нямногія людзі аб'ядналі б верхнія і ніжнія фатаграфіі, настолькі моцна хлопчык змяніўся за гэтыя гады.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Нейрасеткі сутыкаюцца са зменамі знешнасці значна часцей. Напрыклад, часам жанчыны могуць моцна памяняць сваю выяву з дапамогай касметыкі:

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Зараз яшчэ больш ускладнім задачу: хай на розных фатаграфіях зачыненыя розныя часткі асобы. У такіх выпадках алгарытм не можа параўнаць узоры цалкам. Аднак Vision добра спраўляецца з такімі сітуацыямі.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Дарэчы, на фатаграфіі асоб бывае вельмі шмат, напрыклад, на агульным здымку залы могуць змясціцца больш за 100 чалавек. Гэтая няпростая сітуацыя для нейросетей, паколькі многія асобы могуць быць па-рознаму асветлены, нехта па-за зонай рэзкасці. Аднак калі фатаграфія зроблена з дастатковым дазволам і якасцю (не меней 75 пікселяў на квадрат, які пакрывае твар), Vision зможа вызначыць яго і распазнаць.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Асаблівасць рэпартажных фатаграфій і малюнкаў з камер назірання заключаецца ў тым, што людзі часта бываюць размытымі, таму што апынуліся па-за зонай рэзкасці або рухаліся ў гэты момант:

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Таксама ад выявы да выявы можа моцна мяняцца інтэнсіўнасць асвятлення. Гэта таксама часта ператвараецца ў камень спатыкнення, многія алгарытмы адчуваюць вялікія складанасці з карэктнай апрацоўкай занадта цёмных і занадта светлых малюнкаў, не кажучы ўжо пра дакладнае супастаўленні. Нагадаю, што для дасягнення такога выніку трэба пэўным чынам настроіць парогі, у публічным доступе гэтай магчымасці яшчэ няма. Для ўсіх кліентаў у нас выкарыстоўваецца адна і тая ж нейрасетка, у яе зададзены парогі, прыдатныя пад большасць практычных задач.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Нядаўна мы выкацілі новую версію мадэлі, якая з высокай дакладнасцю распазнае азіяцкія твары. Раней гэта было вялікай праблемай, якая нават атрымала назву "расізм машыннага навучання" (або "нейронавых сетак"). Еўрапейскія і амерыканскія нейрасеткі добра распазнавалі еўрапеоідныя асобы, а з мангалоіднымі і экватарыяльнымі ўсё ішло значна горш. Верагодна, у тым жа Кітаі сітуацыя была дакладна наадварот. Уся справа ў навучальных дата-сэтах, якія адлюстроўваюць дамінантныя тыпы асоб у той ці іншай краіне. Зрэшты, сітуацыя мяняецца, сёння гэтая праблема стаіць далёка не так востра. Vision не адчувае ніякіх цяжкасцяў з прадстаўнікамі розных рос.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Распазнанне асоб – гэта толькі адно з мноства ужыванняў нашай тэхналогіі, Vision можна навучыць распазнаваць што заўгодна. Напрыклад, аўтамабільныя нумары, у тым ліку ў складаных для алгарытмаў умовах: пад вострымі кутамі, брудныя і цяжкачытэльныя нумары.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

2. Практычныя прыклады выкарыстання

2.1. Кантроль фізічнага доступу: калі двое ідуць па адным пропуску

З дапамогай Vision можна рэалізаваць сістэмы ўліку прыходу і догляду супрацоўнікаў. У традыцыйнай сістэмы на аснове электронных пропускаў ёсць відавочныя недахопы, напрыклад, можна прайсці ўдваіх па адным бэйджы. Калі ж прапускную сістэму (СККД) дапоўніць Vision, яна будзе сапраўды фіксаваць, хто і калі прыйшоў/сышоў.

2.2. Улік працоўнага часу

Гэты сцэнар выкарыстання Vision цесна злучаны з папярэднім. Калі дапоўніць прапускную сістэму нашым сэрвісам распазнання асоб, яна зможа не толькі заўважаць парушэнні прапускнога рэжыму, але і рэгістраваць фактычнае знаходжанне супрацоўнікаў у будынку ці на аб'екце. Іншымі словамі, Vision дапаможа сапраўды ўлічваць, хто і ў колькі прыйшоў на працу і сышоў з ёй, а хто наогул прагуляў, нават калі калегі яго прычынілі перад начальствам.

2.3. Відэааналітыка: адсочванне людзей і бяспека

Адсочваючы людзей з дапамогай Vision можна сапраўды ацэньваць рэальную праходнасць гандлёвых зон, вакзалаў, пераходаў, вуліц і шматлікіх іншых грамадскіх месцаў. Таксама вялікую дапамогу наш трэкінг можа аказаць у кантролі доступу, напрыклад, на склад ці ў іншыя важныя службовыя памяшканні. І вядома ж, адсочванне людзей і асоб дапамагае вырашаць задачы бяспекі. Злавілі кагосьці за крадзяжом у вашай краме? Занясіце яго PersonID, які вярнуў Vision, у чорны спіс вашага ПЗ для відэааналітыкі, і ў наступны раз сістэма адразу папярэдзіць ахову, калі гэты тып ізноў у вас з'явіцца.

2.4. У гандлі

Рытэйл і розны абслуговы бізнэс зацікаўлены ў распазнанні чэргаў. З дапамогай Vision можна распазнаць, што гэта не выпадковае навала людзей, а менавіта чарга, і вызначыць яе даўжыню. І затым сістэма паведамляе адказным аб узнікненні чаргі, каб разабраліся ў сітуацыі: або гэта наплыў наведвальнікаў і трэба выклікаць дадатковых работнікаў, або нехта халтурыць са сваімі працоўнымі абавязкамі.

Яшчэ адна цікавая задача - аддзяленне супрацоўнікаў кампаніі ў зале ад наведвальнікаў. Звычайна сістэма навучаецца аддзяляць аб'екты ў вызначаным адзенні (дрэс-код) або з нейкай адметнай прыкметай (фірменная хустка, бэйдж на грудзях і гэтак далей). Гэта дапамагае дакладней ацэньваць наведвальнасць (каб супрацоўнікі адной сваёй прысутнасцю не «накручвалі» статыстыку знаходжання людзей у зале).

З дапамогай распазнання асоб вы можаце ацэньваць і вашу аўдыторыю: якая лаяльнасць наведвальнікаў, гэта значыць колькі людзей вяртаюцца ў вашу ўстанову і з якой частатой. Палічыць, колькі ўнікальных наведвальнікаў прыходзіць да вас за месяц. Каб аптымізаваць выдаткі на прыцягненне і ўтрыманне, можна высветліць і змяненне наведвальнасці ў залежнасці ад дня тыдня і нават часу сутак.

Франчайзеры і сеткавыя кампаніі могуць замовіць адзнаку па фатаграфіях якасці брэндавання розных рознічных кропак: наяўнасць лагатыпаў, шыльдаў, плакатаў, банэраў і гэтак далей.

2.5. На транспарце

Іншы прыклад забеспячэння бяспекі з дапамогай відэааналітыкі - вызначэнне пакінутых рэчаў у залах аэрапортаў або вакзалаў. Vision можна навучыць распазнаваць аб'екты сотняў класаў: прадметы мэблі, сумкі, валізкі, парасоны, розныя віды адзення, бутэлькі і гэтак далей. Калі ваша сістэма відэааналітыкі выяўляе безгаспадарны аб'ект і распазнае яго з дапамогай Vision, тое падае сігнал службе бяспекі. Падобная задача звязана з аўтаматычным вызначэннем нестандартных сітуацый у грамадскіх месцах: камусьці стала дрэнна, ці хтосьці паліць у неналежным месцы, ці чалавек упаў на рэйкі, і гэтак далей – усе гэтыя патэрны сістэмы відэааналітыкі могуць распазнаваць праз API Vision.

2.6. Дакументазварот

Яшчэ адно цікавае будучыню ўжыванне Vision, якое мы цяпер распрацоўваем - распазнанне дакументаў і іх аўтаматычны парсінг у базы дадзеных. Замест таго, каб уручную ўбіваць (ці яшчэ горш, упісваць) бясконцыя серыі, нумары, даты выдачы, нумары рахункаў, рэквізіты банкаў, даты і месцы нараджэння і мноства іншых фармалізаваных дадзеных, можна будзе сканаваць дакументы і аўтаматычна адпраўляць іх па абароненым канале праз API у воблака, дзе сістэма будзе на ляту гэтыя дакументы распазнае, адпарсуе і верне адказ з дадзенымі ў патрэбным фармаце для аўтаматычнага занясення ў базу дадзеных. Сёння Vision ужо ўмее класіфікаваць дакументы (у тым ліку ў PDF) - адрознівае пашпарты, СНІЛС, ІНАЎ, пасведчанні аб нараджэнні, аб шлюбе і іншыя.

Вядома, усе гэтыя сітуацыі нейрасетка не здольная апрацаваць са скрынкі. У кожным выпадку пад канкрэтнага заказчыка будуецца новая мадэль, улічваецца мноства фактараў, нюансаў і патрабаванняў, падбіраюцца дата-сэты, праводзяцца ітэрацыі навучання-тэставанні-наладкі.

3. Схема працы API

"Уваходнымі варотамі" Vision для карыстальнікаў з'яўляецца REST API. На ўваход ён можа прымаць фатаграфіі, відэафайлы і трансляцыі з сеткавых камер (RTSP-струмені).

Каб скарыстацца Vision, трэба зарэгістравацца у сэрвісе Mail.ru Cloud Solutions і атрымаць токены доступу (client_id + client_secret). Аўтэнтыфікацыя карыстальнікаў выконваецца па пратаколе OAuth. Зыходныя дадзеныя ў целах POST-запытаў адпраўляюцца ў API. А ў адказ кліент атрымлівае ад API вынік распазнання ў JSON-фармаце, прычым адказ структураваны: ён утрымоўвае інфармацыю аб знойдзеных аб'ектах і іх каардынатах.

З барадой, у цёмных акулярах і ў профіль: цяжкія сітуацыі для кампутарнага зроку

Прыклад адказу

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

У адказе ёсць цікавы параметр awesomeness - гэта ўмоўная "крутасць" асобы на фатаграфіі, з яго дапамогай мы выбіраем лепшы здымак асобы з паслядоўнасці. Мы навучылі нейрасетку прадказваць верагоднасць, што здымку паставяць лайк у сацсетках. Чым больш якасны здымак і ўсмешлівей твар, тым больш awesomness.

У API Vision выкарыстоўваецца такое паняцце, як спейс (space). Гэта інструмент для стварэння розных мноства асоб. Прыклады спэйсаў – чорныя і белыя спісы, спісы наведвальнікаў, супрацоўнікаў, кліентаў і т. д. Для кожнага токена ў Vision можна стварыць да 10 спэйсаў, у кожным спейсе можа быць да 50 тыс. PersonID, гэта значыць да 500 тыс. на адзін токен . Пры гэтым колькасць токенаў на адзін рахунак не абмежавана.

Сёння API падтрымлівае наступныя метады вызначэння і распазнанні:

  • Recognize / Set - вызначэнне і распазнанне асоб. Аўтаматычна прысвойвае PersonID кожнай унікальнай асобе, вяртае PersonID і каардынаты знойдзеных асоб.
  • Delete - выдаленне канкрэтнага PersonID з базы дадзеных асоб.
  • Truncate - ачыстка ўсяго спейсу ад PersonID, карысна калі ён выкарыстоўваўся як тэставы і трэба абнуліць базу для прадакшэна.
  • Detect - вызначэнне аб'ектаў, сцэн, аўтамабільных нумароў, славутасцяў, чэргаў і т. п. Вяртае клас знойдзеных аб'ектаў і іх каардынаты
  • Detect для дакументаў - дэтэктуе канкрэтныя тыпы дакументаў РФ (адрознівае пашпарт, снілс, ін і інш.).

Таксама мы ў хуткім часе сканчаем працу над метадамі для OCR, вызначэнні полу, узросту і эмоцый, а таксама рашэнні задач мэрчэндайзінг, гэта значыць для аўтаматычнага кантролю выкладкі тавараў у крамах. Поўную дакументацыю па API вы знойдзеце тут: https://mcs.mail.ru/help/vision-api

4. заключэнне

Цяпер праз публічны API можна атрымаць доступ да распазнавання асоб на фатаграфіях і відэа, падтрымліваецца вызначэнне розных аб'ектаў, аўтамабільных нумароў, славутасцяў, дакументаў і цэлых сцэн. Сцэнарыяў прымянення - мора. Прыходзьце, тэстуйце наш сэрвіс, стаўце перад ім самыя падступныя задачы. Першыя 5000 транзакцый - бясплатна. Быць можа, ён апынецца "недастатковым інгрэдыентам" для вашых праектаў.

Доступ да API можна маментальна атрымаць пры рэгістрацыі і падлучэнні Зрок. Усім хабракарыстальнікам - промакод на дадатковыя транзакцыі. Пішыце ў твары адрас электроннай пошты, на які рэгістравалі рахунак!

Крыніца: habr.com

Дадаць каментар