Provocarea de mascare a imaginii Carvana - Interviul câștigătorului pe locul 1 de echipa Kaggle Kaggle Blog Medium

Publicat inițial: 22.12.2017

imaginii

Anul acesta, Carvana, o lansare de succes a mașinilor second hand online, a provocat comunitatea Kaggle să dezvolte un algoritm care elimină automat fundalul studioului foto. Acest lucru i-ar permite Carvana să suprapună mașinile pe o varietate de medii. În interviul acestui câștigător, echipa de pe primul loc de concurenți de procesare a imaginilor numită Team Best [over] fitting, împărtășește în detaliu abordarea lor câștigătoare.

Așa cum se întâmplă adesea în competiții, nu ne-am întâlnit niciodată în persoană, dar ne cunoșteam destul de bine din conversațiile fructuoase despre învățarea profundă desfășurate în comunitatea vorbitoare de limbă rusă Open Data Science, ods.ai.

Deși am participat ca o echipă, am lucrat la 3 soluții independente până la fuzionarea cu 7 zile înainte de sfârșitul competiției. Fiecare dintre aceste soluții a fost în top 10 - Artsiom și Alexander au fost pe locul 2 și Vladimir a fost pe locul 5. Soluția noastră finală a fost o medie simplă de trei predicții. Puteți vedea acest lucru și în codul pe care l-am pregătit pentru organizatori și l-am lansat pe GitHub - există 3 foldere separate:

Fiecare dintre noi a petrecut aproximativ două săptămâni pentru această provocare, deși pentru a reproduce complet soluția noastră pe un singur Titan X Pascal, ar fi nevoie de aproximativ 90 de zile pentru a se antrena și de 13 zile pentru a face predicții. Din fericire, am avut la dispoziție în jur de 20 de GPU-uri. În ceea ce privește software-ul, am folosit PyTorch ca Deep Learning Framework, OpenCV pentru procesarea imaginilor și imgaug pentru mărirea datelor.

Numele meu este Vladimir Iglovikov. Am obținut o diplomă de master în fizică teoretică a energiei înalte de la St. Universitatea de Stat din Petersburg și un doctorat. în fizica teoretică a materiei condensate de la UC Davis. După absolvire, am lucrat mai întâi la câteva start-up-uri unde meseria mea de zi cu zi era grea în domeniul învățării automate tradiționale. Acum câteva luni m-am alăturat Lyft ca Data Scientist, cu accent pe viziunea pe computer.

Am concurat deja la mai multe competiții de segmentare a imaginilor și experiența dobândită a fost foarte utilă cu această problemă. Iată realizările mele din trecut:

Această provocare arăta destul de similară cu problemele de mai sus și inițial nu intenționam să particip. Dar, doar pentru o verificare a sănătății, am decis să fac câteva trimiteri cu o conductă copiată de la problemele anterioare. Surprinzător, după câteva încercări am intrat în top 10 și băieții au sugerat o echipă să se unească. În plus, Alexander m-a ademenit promițând să împărtășesc abordarea sa non-UNet, care consuma mai puțină memorie, convergea mai repede și era probabil mai precisă.

În ceea ce privește hardware-ul, am avut 2 mașini acasă, unul pentru prototipuri cu 2 x Titan X Pascal și unul pentru ridicare grea cu 4 x GTX 1080 Ti.

Numele meu este Alexander Buslaev. Am absolvit Universitatea ITMO, Saint-Petersburg, Rusia. Am o experiență de 5 ani în viziunea computerizată clasică și am lucrat într-o serie de companii din acest domeniu, în special în UAV. Acum aproximativ un an am început să folosesc învățarea profundă pentru diverse sarcini în procesarea imaginilor - detectare, segmentare, etichetare, regresie.

Îmi plac competițiile de viziune computerizată, așa că am participat și la:

Numele meu este Artsiom Sanakoyeu. Am obținut masteratul în matematică aplicată și informatică de la Universitatea de Stat din Belarus, Minsk, Belarus. După absolvire, am început doctoratul. în Computer Vision la Universitatea Heidelberg, Germania.

Principalele mele interese de cercetare se află la intersecția dintre viziunea computerizată și învățarea profundă, în special învățarea nesupravegheată și învățarea metrică. Am publicații în conferințe de top-computer Vision/Deep Learning precum NIPS și CVPR.

Pentru mine, Kaggle este un loc pentru a-mi lustrui abilitățile aplicate și pentru a mă distra competitiv. Dincolo de Carvana, am participat la alte câteva competiții de viziune computerizată:

Obiectivul acestei competiții a fost de a crea un model pentru segmentarea binară a imaginilor auto de înaltă rezoluție.

  • Fiecare imagine are o rezoluție de 1918x1280.
  • Fiecare mașină prezentată în 16 orientări fixe diferite:

  • Set tren: 5088 Imagini.
  • Set de testare: 1200 în public, 3664 în privat, 95200 au fost adăugate pentru a preveni etichetarea manuală.

În general, calitatea datelor concurenței a fost foarte ridicată și credem că acest set de date poate fi folosit ca un punct de referință excelent în comunitatea de viziune computerizată.

Diferența de scor dintre rezultatul nostru (0,997332) și locul al doilea (0,997331) a fost de doar 0,00001, ceea ce poate fi interpretat ca o îmbunătățire medie de 2,5 pixeli pentru o imagine de 2,500,000 pixeli. Ca să fiu sincer, tocmai am avut noroc aici. Când am pregătit soluția pentru organizatori, am investit ceva timp suplimentar și am îmbunătățit soluția la 0.997343 pe LB privat.

Pentru a înțelege limitările modelelor noastre, am efectuat o inspecție vizuală a predicțiilor. Pentru setul de trenuri, am analizat cazurile cu cele mai mici scoruri de validare.

Majoritatea erorilor observate s-au datorat etichetării incoerente, unde cea mai frecventă problemă a fost găurile din roți. În unele mașini, erau mascați și în unele nu.

Nu avem un scor de validare pentru setul de testare, dar am găsit imagini problematice numărând numărul de pixeli în care încrederea în predicția rețelei era scăzută. Pentru a ține cont de dimensiunea diferită a mașinilor din imagini, am împărțit acest număr la aria fundalului. Valoarea noastră „neconfidență” a fost calculată ca un număr de pixeli cu scoruri în intervalul [0,3, 0,8], împărțit la un număr de pixeli cu scoruri în intervalul [0, 0,3) + [0,8, 0,9]. să fie mai robust, dar această euristică a funcționat suficient de bine.

Apoi am clasat imaginile după scorul „necredință” și am inspectat vizual predicțiile de top. Am aflat că majoritatea erorilor au fost cauzate de etichetarea incorectă a omului din categoria „duba albă”. Rețelele ofereau în mod consecvent predicții de încredere scăzută asupra acestor imagini. Credem că s-a datorat prezenței scăzute a camionetelor albe în setul de antrenament și a contrastului scăzut dintre camionetă și fundalul alb. Imaginea de mai jos prezintă zone gri în mască în care încrederea în predicție a fost scăzută.

Nu am fost singurii care au întâmpinat această problemă. A fost discutat la forum, iar alți participanți au implementat euristicile de post-procesare pentru a aborda acest caz și cazuri similare.

Au existat, de asemenea, câteva măști de antrenament cu erori mari, cum ar fi cea de mai jos. Heng CherKeng a postat versiuni fixe ale măștilor la forum, dar numărul lor a fost relativ mic și nu le-am folosit în timpul antrenamentului.

Prima mea încercare a fost să folosesc UNet cu aceeași arhitectură ca Sergey Mushinskiy. Am folosit acest lucru înainte în detectarea funcției de imagini prin satelit DSTL în primăvara trecută, dar nu am reușit să trec peste 0.997 (