Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Pipila ka bulan ang milabay, ang among mga kauban gikan sa Google naggasto sa Kaggle usa ka kompetisyon sa paghimo sa usa ka classifier alang sa mga hulagway nga nakuha sa sensational ang dula "Dali, Draw!" Ang team, nga naglakip sa Yandex developer nga si Roman Vlasov, mikuha sa ikaupat nga dapit sa kompetisyon. Sa pagbansay sa pagkat-on sa makina sa Enero, gipaambit ni Roman ang mga ideya sa iyang team, ang katapusang pagpatuman sa classifier, ug makapaikag nga mga gawi sa iyang mga kaatbang.


- Kumusta tanan! Ang akong ngalan mao si Roma Vlasov, karon isulti ko kanimo ang bahin sa Quick, Draw! Hagit sa Doodle Recognition.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Adunay lima ka tawo sa among team. Miapil ko sa wala pa ang deadline sa paghiusa. Kami walay swerte, kami nauyog gamay, apan kami nauyog gikan sa posisyon sa kuwarta, ug sila natay-og gikan sa bulawan nga posisyon. Ug nakuha namo ang usa ka dungganon nga ikaupat nga dapit.

(Atol sa kompetisyon, ang mga teams nag-obserbar sa ilang kaugalingon sa usa ka rating, nga naporma base sa mga resulta nga gipakita sa usa ka bahin sa gisugyot nga data set. Ang katapusan nga rating, sa baylo, naporma sa laing bahin sa dataset. Kini mao ang gibuhat sa ingon nga ang mga partisipante sa kompetisyon wala mag-adjust sa ilang mga algorithm sa espesipikong datos. Busa, sa finals, sa diha nga ang pagbalhin tali sa mga rating, ang mga posisyon mag-uyog og gamay (gikan sa English nga pag-uyog - sa pagsagol): sa ubang mga datos, ang resulta mahimong mogawas Ang team ni Roman mao ang una sa top three. Niini nga kaso, ang top three mao ang money, monetary rating zone, tungod kay ang unang tulo ka mga dapit lamang ang nahatagan og ganting salapi. Human sa shake-up, ang team anaa na sa ikaupat nga dapit. Sa samang paagi, ang laing team napildi sa kadaugan, ang bulawan nga posisyon. - Ed.)

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Mahinungdanon usab ang kompetisyon nga si Evgeniy Babakhnin nakadawat usa ka grandmaster, si Ivan Sosin nakadawat usa ka agalon, si Roman Soloviev nagpabilin nga usa ka grandmaster, si Alex Parinov nakadawat usa ka agalon, nahimo akong eksperto, ug karon usa na ako ka agalon.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Unsa ni nga Quick, Draw? Kini usa ka serbisyo gikan sa Google. Ang Google adunay katuyoan sa pagpabantog sa AI ug sa kini nga serbisyo gusto nila ipakita kung giunsa ang pagtrabaho sa mga neural network. Adto ka didto, i-klik Let's draw, ug usa ka bag-ong panid ang mo-pop up diin gisultihan ka: pagdrowing og zigzag, aduna kay 20 segundos sa pagbuhat niini. Gisulayan nimo ang pagdrowing og zigzag sa 20 segundos, sama dinhi, pananglitan. Kung molampos ka, ang network nag-ingon nga kini usa ka zigzag ug magpadayon ka. Adunay unom ra ang ingon nga mga litrato.

Kung ang network sa Google napakyas sa pag-ila sa imong gidrowing, usa ka krus ang gibutang sa buluhaton. Sa ulahi isulti ko kanimo kung unsa ang ipasabut sa umaabot kung ang usa ka drowing giila sa network o dili.

Kini nga serbisyo nagtigum sa usa ka dako nga gidaghanon sa mga tiggamit, ug ang tanan nga mga hulagway nga gi-drawing sa mga tiggamit gi-log.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Nakakolekta kami og hapit 50 milyon nga mga imahe. Gikan niini, naporma ang petsa sa tren ug pagsulay alang sa among kompetisyon. Pinaagi sa dalan, ang gidaghanon sa mga datos sa pagsulay ug ang gidaghanon sa mga klase gipasiugda sa bold alang sa usa ka rason. Isulti ko kanimo ang bahin kanila sa ulahi.

Ang format sa datos mao ang mosunod. Dili lang kini mga imahe sa RGB, apan, sa halos pagsulti, usa ka log sa tanan nga gibuhat sa tiggamit. Pulong ang atong target, countrycode diin gikan ang tagsulat sa doodle, timestamp ang panahon. Ang giila nga label nagpakita lang kung ang network nakaila sa imahe gikan sa Google o wala. Ug ang drowing mismo usa ka han-ay, usa ka banabana sa usa ka kurba nga gidrowing sa tiggamit gamit ang mga puntos. Ug mga timing. Kini ang panahon gikan sa pagsugod sa pagdrowing sa hulagway.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Gipresentar ang datos sa duha ka porma. Kini ang una nga pormat, ug ang ikaduha gipasimple. Giputol nila ang mga timing gikan didto ug gibanabana kini nga hugpong sa mga punto nga adunay gamay nga hugpong sa mga puntos. Alang niini ilang gigamit Algoritmo ni Douglas-Pecker. Adunay ka usa ka dako nga hugpong sa mga punto nga yano nga gibanabana sa usa ka tul-id nga linya, apan sa tinuud mahimo nimong banabanaon kini nga linya nga adunay duha ra ka punto. Kini ang ideya sa algorithm.

Ang datos giapod-apod sama sa mosunod. Ang tanan uniporme, apan adunay pipila ka mga outlier. Sa dihang nasulbad namo ang problema, wala namo kini tan-awa. Ang panguna nga butang mao nga wala’y mga klase nga gamay ra, dili kinahanglan nga buhaton ang mga gibug-aton nga sampler ug oversampling sa datos.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Unsa ang hitsura sa mga hulagway? Kini ang klase sa "eroplano" ug mga pananglitan gikan niini nga adunay mga label nga giila ug wala mailhi. Ang ilang ratio kay 1 hangtod 9. Sama sa imong makita, ang datos saba kaayo. Nagtuo ko nga kini usa ka eroplano. Kung tan-awon nimo nga dili mailhan, sa kadaghanan nga mga kaso kini saba lang. Adunay misulay pa gani sa pagsulat sa "eroplano," apan dayag sa Pranses.

Kadaghanan sa mga partisipante nagkuha lang og mga grids, nagkuha og mga datos gikan niini nga han-ay sa mga linya isip mga hulagway sa RGB, ug gilabay kini sa network. Gidrowing nako ang halos parehas nga paagi: Nagkuha ako usa ka paleta sa mga kolor, gidrowing ang una nga linya nga adunay usa ka kolor, nga naa sa sinugdanan sa kini nga paleta, ang katapusan nga linya sa lain, nga naa sa katapusan sa palette, ug taliwala nila. Nag-interpolate ako bisan diin gamit kini nga palette. Pinaagi sa dalan, naghatag kini usa ka labi ka maayo nga sangputanan kaysa kung magdrowing ka sama sa una nga slide - itom ra.

Ang ubang mga miyembro sa team, sama ni Ivan Sosin, misulay og gamay nga lain-laing mga pamaagi sa pagdrowing. Uban sa usa ka channel nagdrowing lang siya og gray nga hulagway, uban sa laing channel iyang gidrowing ang matag stroke nga adunay gradient gikan sa sinugdanan hangtod sa katapusan, gikan sa 32 ngadto sa 255, ug sa ikatulo nga channel nagdrowing siya og gradient sa tanang mga stroke gikan sa 32 ngadto sa 255.

Ang laing makapaikag nga butang mao nga si Alex Parinov nag-upload og impormasyon sa network gamit ang countrycode.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Ang metric nga gigamit sa kompetisyon mao ang Mean Average Precision. Unsa ang esensya sa kini nga sukatan alang sa kompetisyon? Makahatag ka ug tulo ka panagna, ug kung walay husto nga panagna niining tulo, nan makakuha ka og 0. Kung adunay husto, nan ang han-ay niini gikonsiderar. Ug ang target nga resulta maihap nga 1 nga gibahin sa han-ay sa imong panagna. Pananglitan, naghimo ka ug tulo ka prediktor, ug ang husto mao ang una, unya imong bahinon ang 1 sa 1 ug makuha ang 1. Kung ang prediktor husto ug ang pagkasunod-sunod niini 2, dayon bahina ang 1 sa 2, makakuha ka og 0,5. Aw, ug uban pa.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Uban sa preprocessing sa datos - unsaon pagdrowing og mga hulagway ug uban pa - nakahukom kami og gamay. Unsa nga mga arkitektura ang among gigamit? Among gisulayan ang paggamit sa tambok nga mga arkitektura sama sa PNASNet, SENet, ug ang mga klasiko na nga mga arkitektura sama sa SE-Res-NeXt, sila nagkadaghang nagsulod sa bag-ong mga kompetisyon. Adunay usab ResNet ug DenseNet.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Giunsa namo pagtudlo kini? Ang tanan nga mga modelo nga among gikuha pre-trained sa imagenet. Bisan kung adunay daghang mga datos, 50 milyon nga mga imahe, apan sa gihapon, kung magkuha ka usa ka network nga pre-trained sa imagenet, nagpakita kini nga mas maayo nga mga resulta kaysa kung gibansay nimo kini gikan sa wala.

Unsang mga teknik sa pagtudlo ang among gigamit? Kini ang Cosing Annealing nga adunay Warm Restart, nga akong hisgutan sa ulahi. Kini usa ka teknik nga akong gigamit sa hapit tanan sa akong bag-o nga mga kompetisyon, ug uban kanila nahimo nga maayo ang pagbansay sa mga grids, aron makab-ot ang usa ka maayo nga minimum.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Sunod Bawasan ang Rate sa Pagkat-on sa Plateau. Nagsugod ka sa pagbansay sa network, nagtakda og usa ka piho nga rate sa pagkat-on, nagpadayon sa pagtudlo niini, ug ang imong pagkawala anam-anam nga nahiusa sa usa ka piho nga kantidad. Gisusi nimo kini, pananglitan, sulod sa napulo ka mga panahon ang pagkawala wala mausab. Gipakunhod nimo ang imong rate sa pagkat-on pinaagi sa pipila nga kantidad ug nagpadayon sa pagkat-on. Nag-us-os kini pag-usab, nag-converges sa pipila ka minimum, ug imong gipaubos pag-usab ang rate sa pagkat-on, ug uban pa, hangtud nga ang imong network sa katapusan maghiusa.

Sunod mao ang usa ka makapaikag nga teknik: Ayaw madunot ang rate sa pagkat-on, dugangi ang gidak-on sa batch. Adunay usa ka artikulo nga parehas nga ngalan. Kung nagbansay ka sa usa ka network, dili nimo kinahanglan nga pakunhuran ang rate sa pagkat-on, mahimo nimo nga dugangan ang gidak-on sa batch.

Kini nga teknik, sa paagi, gigamit ni Alex Parinov. Nagsugod siya sa usa ka batch nga katumbas sa 408, ug sa dihang ang iyang network nakaabot sa usa ka talampas, iyang gidoble ang gidak-on sa batch, ug uban pa.

Sa tinuud, wala nako mahinumduman kung unsa nga kantidad ang naabot sa iyang gidak-on sa batch, apan ang makapaikag mao nga adunay mga team sa Kaggle nga migamit sa parehas nga teknik, ang ilang gidak-on sa batch mga 10000. Pinaagi sa dalan, ang modernong mga balangkas alang sa lawom nga pagkat-on, sama sa Ang PyTorch, pananglitan, nagtugot kanimo sa pagbuhat niini nga dali ra kaayo. Gihimo nimo ang imong batch ug isumite kini sa network dili kung unsa kini, sa kinatibuk-an, apan bahinon kini sa mga tipak aron kini mohaum sa imong video card, kuwentaha ang mga gradient, ug pagkahuman nimo makalkula ang gradient para sa tibuuk nga batch, i-update ang mga gibug-aton.

Pinaagi sa dalan, ang dagkong mga gidak-on sa batch gilakip gihapon niini nga kompetisyon, tungod kay ang datos saba kaayo, ug ang usa ka dako nga batch nga gidak-on nakatabang kanimo nga mas tukma nga gibanabana ang gradient.

Gigamit usab ang pseudo-labeling, kasagaran gigamit ni Roman Soloviev. Gi-sample niya ang mga katunga sa datos gikan sa pagsulay sa mga batch, ug gibansay ang grid sa ingon nga mga batch.

Ang gidak-on sa mga hulagway importante, apan ang kamatuoran mao nga ikaw adunay daghang mga datos, kinahanglan ka nga magbansay sa dugay nga panahon, ug kung ang imong gidak-on sa hulagway dako kaayo, nan ikaw magbansay sa dugay nga panahon. Apan kini wala kaayo makadugang sa kalidad sa imong katapusang classifier, mao nga kini angayan sa paggamit sa usa ka matang sa trade-off. Ug gisulayan lang namo ang mga hulagway nga dili kaayo dako ang gidak-on.

Giunsa kining tanan nakat-unan? Una, gikuha ang gamay nga gidak-on nga mga litrato, daghang mga panahon ang gipadagan sa kanila, nagkinahanglag daghang oras. Dayon gihatag ang dagkong mga hulagway, ang network gibansay, unya labaw pa, labaw pa, aron dili kini mabansay gikan sa wala ug dili mag-usik og daghang panahon.

Mahitungod sa mga optimizer. Gigamit namo ang SGD ug Adam. Niining paagiha posible nga makakuha usa ka modelo, nga naghatag usa ka tulin nga 0,941-0,946 sa leaderboard sa publiko, nga maayo kaayo.

Kung i-ensemble nimo ang mga modelo sa usa ka paagi, makakuha ka sa usa ka lugar sa palibot sa 0,951. Kung mogamit ka usa pa nga teknik, makakuha ka usa ka katapusan nga marka nga 0,954 sa publiko nga board, sama sa among nakuha. Apan labaw pa niana sa ulahi. Sunod isulti ko kanimo kung giunsa namon gitigum ang mga modelo, ug kung giunsa namon nahimo ang ingon nga katapusan nga tulin.

Sunod gusto nakong hisgutan ang mahitungod sa Cosing Annealing uban sa Warm Restarts o Stochastic Gradient Descent with Warm Restarts. Sa kinatibuk-an nga pagsulti, sa prinsipyo, mahimo nimong gamiton ang bisan unsang optimizer, apan ang punto mao kini: kung magbansay ka lang sa usa ka network ug anam-anam nga mag-converge kini sa usa ka minimum, unya okay ra ang tanan, makakuha ka usa ka network, naghimo kini pipila nga mga sayup, apan ikaw makabansay niini og gamay nga lahi. Magbutang ka og pipila ka inisyal nga rate sa pagkat-on, ug hinayhinay nga ipaubos kini sumala niini nga pormula. Imong gipaubos kini, ang imong network moabut sa pipila ka minimum, unya imong i-save ang mga gibug-aton, ug itakda pag-usab ang rate sa pagkat-on nga anaa sa sinugdanan sa pagbansay, sa ingon moadto sa usa ka dapit pataas gikan niini nga minimum, ug pag-usab sa pagpaubos sa imong pagkat-on rate.

Sa ingon, mahimo nimong bisitahan ang daghang mga minimum sa usa ka higayon, diin ang imong pagkawala mahimong, plus o minus, parehas. Apan ang tinuod mao nga ang mga network nga adunay kini nga mga gibug-aton maghatag lainlaing mga sayup sa imong petsa. Pinaagi sa pag-average kanila, makakuha ka usa ka matang sa gibanabana, ug ang imong katulin mahimong mas taas.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Mahitungod sa kung giunsa namo pag-assemble ang among mga modelo. Sa sinugdanan sa presentasyon, miingon ko nga hatagan ug pagtagad ang gidaghanon sa datos sa pagsulay ug ang gidaghanon sa mga klase. Kung imong idugang ang 1 sa gidaghanon sa mga target sa set sa pagsulay ug bahinon sa gidaghanon sa mga klase, makuha nimo ang numero nga 330, ug kini gisulat sa forum - nga ang mga klase sa pagsulay balanse. Mahimo kining gamiton.

Pinasukad niini, naghimo si Roman Soloviev og usa ka metric, gitawag namon kini nga Proxy Score, nga maayo ang pagkadugtong sa leaderboard. Ang punto mao: maghimo ka ug panagna, kuhaa ang top 1 sa imong prediktor ug ihap ang gidaghanon sa mga butang alang sa matag klase. Sunod, ibawas ang 330 gikan sa matag bili ug idugang ang resulta nga hingpit nga mga bili.

Ang mosunod nga mga kantidad nakuha. Nakatabang kini kanamo nga dili maghimo usa ka leaderboard sa pagsulay, apan aron ma-validate ang lokal ug pagpili mga coefficient para sa among mga ensemble.

Uban sa usa ka ensemble mahimo nimong makuha ang ingon ka tulin. Unsa pa may akong mahimo? Ibutang ta nga imong gigamit ang impormasyon nga ang mga klase sa imong pagsulay balanse.

Lahi ang pagbalanse. Usa ka pananglitan sa usa niini β€” pagbalanse gikan sa mga lalaki nga nakakuha sa una nga lugar.

Unsay among gibuhat? Ang among pagbalanse yano ra, gisugyot ni Evgeny Babakhnin. Una namo nga gihan-ay ang among mga panagna pinaagi sa top 1 ug gipili nga mga kandidato gikan kanila - aron ang gidaghanon sa mga klase dili molapas sa 330. Apan alang sa pipila ka mga klase adunay ka ubos sa 330 nga mga predictor. Okay, ato usab nga paghan-ay sa top 2 ug sa top 3 , ug magpili sab mi og mga kandidato.

Sa unsa nga paagi ang atong pagbalanse lahi gikan sa pagbalanse sa unang dapit? Gigamit nila ang usa ka balikbalik nga pamaagi, gikuha ang labing inila nga klase ug gipakunhod ang mga posibilidad alang sa kana nga klase sa gamay nga numero hangtod nga dili na kini ang labing inila nga klase. Gikuha namo ang sunod nga pinakapopular nga klase. Busa nagpadayon sila sa pagpaubos niini hangtod nga ang gidaghanon sa tanang klase nahimong managsama.

Ang tanan migamit ug plus o minus nga paagi sa pagbansay sa mga network, apan dili tanan migamit sa pagbalanse. Gamit ang pagbalanse, mahimo kang moadto sa bulawan, ug kung swerte ka, unya sa salapi.

Unsaon pag-preprocess ang petsa? Ang tanan nag-preprocessed sa petsa, plus o minus, sa samang paagi - paghimo sa handcrafted features, naningkamot sa pag-encode sa mga timing nga adunay lain-laing mga stroke color, ug uban pa.

Klasipikasyon sa sinulat sa kamot nga mga drowing. Pagreport sa Yandex

Lahi ang iyang gibuhat. Siya miingon nga kining tanan nga imong hinimo sa kamot nga mga bahin dili molihok, dili nimo kinahanglan nga buhaton kana, ang imong network kinahanglan nga makakat-on sa tanan niini sa iyang kaugalingon. Ug sa baylo, naghimo siya og mga module sa pagkat-on nga nag-preprocess sa imong datos. Gilabay niya ang orihinal nga datos sa kanila nga wala’y preprocessing - point coordinates ug timing.

Dayon gikuha niya ang kalainan base sa mga koordinasyon, ug gi-average kini tanan base sa mga timing. Ug siya miabut uban sa usa ka medyo taas nga matrix. Gi-apply niya ang 1D convolution niini sa makadaghang higayon aron makakuha og matrix nga may gidak-on nga 64xn, diin ang n mao ang kinatibuk-ang gidaghanon sa mga puntos, ug 64 ang gihimo aron sa pagpakaon sa resulta nga matrix ngadto sa layer sa bisan unsang convolutional network, nga modawat sa gidaghanon sa mga channel. - 64. nakuha niya ang usa ka 64xn matrix, unya gikan niini gikinahanglan ang paghimo sa usa ka tensor sa pipila ka gidak-on aron ang gidaghanon sa mga channel katumbas sa 64. Iyang gi-normalize ang tanan nga mga punto X, Y sa han-ay gikan sa 0 ngadto sa 32 aron makahimo og usa ka tensor sa gidak-on 32x32. I don't know nganong gusto niya ang 32x32, nahitabo ra to. Ug niini nga coordinate iyang gibutang ang usa ka tipik niini nga matrix sa gidak-on 64xn. Mao nga nahuman ra kini sa usa ka 32x32x64 tensor nga mahimo nimong ibutang sa imong convolutional neural network. Kana ra ang gusto nakong isulti.

Source: www.habr.com

Idugang sa usa ka comment