Resan att modernisera TorchVision – Memoirs of a TorchVision-utvecklare – 3 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Resan att modernisera TorchVision – Memoirs of a TorchVision-utvecklare – 3

Resan att modernisera TorchVision – Memoirs of a TorchVision-utvecklare – 3

Det var ett tag sedan jag senast postade ett nytt inlägg i TorchVision-memoarerna serie. Tänkte, jag har tidigare delat nyheter på den officiella PyTorch-bloggen och vidare Twitter, jag tänkte att det skulle vara en bra idé att prata mer om vad som hände på den senaste versionen av TorchVision (v0.12), vad som kommer ut på nästa (v0.13) och vad är våra planer för 2022H2. Mitt mål är att gå längre än att ge en översikt över nya funktioner och snarare ge insikter om vart vi vill ta projektet under de följande månaderna.

TorchVision v0.12 var en betydande utgåva med dubbelt fokus: a) uppdatera våra policyer för utfasning och modellbidrag för att förbättra transparensen och attrahera fler gemenskapsbidragsgivare och b) fördubbla våra moderniseringsinsatser genom att lägga till populära nya modellarkitekturer, datauppsättningar och ML-tekniker.

Uppdaterar våra policyer

Nyckeln för ett framgångsrikt projekt med öppen källkod är att upprätthålla en sund, aktiv gemenskap som bidrar till det och driver det framåt. Därför är ett viktigt mål för vårt team att öka antalet communitybidrag, med den långsiktiga visionen att göra det möjligt för communityn att bidra med stora funktioner (nya modeller, ML-tekniker, etc) utöver de vanliga stegvisa förbättringarna (bugg-/doc-fixar) , små funktioner etc).

Historiskt, även om samhället var det ivrig för att bidra med sådana funktioner tvekade vårt team att acceptera dem. Nyckelblockeraren var avsaknaden av ett konkret modellbidrag och avskrivningspolicy. För att ta itu med detta arbetade Joao Gomes med communityn för att utarbeta och publicera vår första riktlinjer för modellbidrag vilket ger klarhet över processen att bidra med nya arkitekturer, förtränade vikter och funktioner som kräver modellträning. Dessutom arbetade Nicolas Hug med PyTorchs kärnutvecklare för att formulera och anta en konkret avskrivningspolicy.

De tidigare nämnda förändringarna hade omedelbara positiva effekter på projektet. Den nya bidragspolicyn hjälpte oss att ta emot många bidrag från communityn för stora funktioner (mer information nedan) och den tydliga utfasningspolicyn gjorde det möjligt för oss att rensa upp vår kodbas samtidigt som vi säkerställde att TorchVision erbjuder starka bakåtkompatibilitetsgarantier. Vårt team är mycket motiverat att fortsätta arbeta med öppen källkodsutvecklare, forskarteam och nedströms biblioteksskapare för att behålla TorchVision relevant och fräscht. Om du har någon feedback, kommentar eller en funktionsförfrågan vänligen nå ut till oss.

Modernisera TorchVision

Det är ingen hemlighet att för de senaste släppen vår mål var att lägga till TorchVision alla nödvändiga förstärkningar, förluster, lager, träningsverktyg och nya arkitekturer så att våra användare enkelt kan reproducera SOTA-resultat med PyTorch. TorchVision v0.12 fortsatte den vägen:

  • Våra rockstjärnor, Hu Ye och Zhiqiang Wang, har bidragit med FCOS arkitektur som är en objektdetekteringsmodell i ett steg.

  • Nicolas Hug har lagt till stöd för optiskt flöde i TorchVision genom att lägga till FLOTTE arkitektur.

  • Yiwen Song har lagt till stöd för Synstransformator (ViT) och jag har lagt till ConvNeXt arkitektur tillsammans med förbättrade förtränade vikter.

  • Äntligen med hjälpa av vårt samhälle, har vi lagt till 14 ny klassificering och 5 nya optiska flöden datauppsättningar.

  • Som vanligt kom releasen med många mindre förbättringar, buggfixar och dokumentationsförbättringar. För att se alla nya funktioner och listan över våra bidragsgivare, vänligen kontrollera v0.12 versionsinformation.

TorchVision v0.13 är precis runt hörnet, med sin förväntade release i början av juni. Det är en mycket stor release med ett betydande antal nya funktioner och stora API-förbättringar.

Avsluta moderniseringar och täppa till gapet från SOTA

Vi fortsätter vår resan med att modernisera biblioteket genom att lägga till nödvändiga primitiver, modellarkitekturer och receptverktyg för att producera SOTA-resultat för viktiga datorvisionsuppgifter:

  • Med hjälp av Victor Fomin har jag lagt till viktiga saknade Data Augmentation-tekniker som t.ex AugMix, Jitter i stor skala etc. Dessa tekniker gjorde det möjligt för oss att minska gapet från SOTA och producera bättre vikter (se nedan).

  • Med hjälp av Aditya Oke, Hu Ye, Yassine Alouini och Abhijit Deo har vi lagt till viktiga gemensamma byggstenar som t.ex. DropBlock lager, den MLP blockera, cIoU & dIoU förlust etc. Till slut arbetade jag med Shen Li för att fixa ett långvarigt problem på PyTorch's SyncBatchNorm lager som påverkade detektionsmodellerna.

  • Hu Ye med stöd av Joao Gomes lagt till Swin Transformator tillsammans med förbättrade förtränade vikter. Jag lade till EfficientNetV2 arkitektur och flera arkitektoniska optimeringar efter papper på genomförandet av RetinaNet, FasterRCNN och MaskRCNN.

  • Som jag diskuterade tidigare på PyTorch-bloggen har vi lagt ner betydande ansträngningar på att förbättra våra förtränade vikter genom att skapa en förbättrad träningsrecept. Detta gjorde det möjligt för oss att förbättra noggrannheten i vår Klassificeringsmodeller med 3 noggrannhetspoäng, vilket uppnår ny SOTA för olika arkitekturer. En liknande insats gjordes för Detektion och segmentering, där vi förbättrade modellernas noggrannhet med över 8.1 mAP i genomsnitt. Slutligen arbetade Yosua Michael M med Laura Gustafson, Mannat Singhand och Aaron Adcock för att lägga till stöd för BYLTE, en uppsättning nya mycket exakta topptränade vikter för ViT och RegNets.

Nya multi-weight support API

Som jag tidigare diskuterad på PyTorch-bloggen har TorchVision utökat sin befintliga modellbyggarmekanism för att stödja flera förtränade vikter. Det nya API:et är helt bakåtkompatibelt, gör det möjligt att instansiera modeller med olika vikter och tillhandahåller mekanismer för att få användbar metadata (såsom kategorier, antal parametrar, mätvärden etc) och förbearbetande slutledningstransformationer av modellen. Det finns en dedikerad feedback problem på Github för att hjälpa oss att stryka våra ojämna kanter.

Förnyad dokumentation

Nicolas Hug ledde ansträngningarna att omstrukturera modelldokumentation från TorchVision. Den nya strukturen kan använda funktioner som kommer från Multi-weight Support API för att erbjuda en bättre dokumentation för de förtränade vikterna och deras användning i biblioteket. Stort shout out till våra community-medlemmar för hjälper oss dokumentera alla arkitekturer i tid.

Jag trodde att vår detaljerade färdplan för 2022H2 ännu inte är klar, här är några nyckelprojekt som vi för närvarande planerar att arbeta med:

  • Vi har ett nära samarbete med Haoqi Fan och Christoph Feichtenhofer från PyTorch-video, för att lägga till Förbättrad Multiscale Vision Transformer (MViTv2) arkitektur till TorchVision.

  • Philip Meier och Nicolas Hug arbetar på en förbättrad version av Dataset API (v2) som använder TorchData och Data pipes. Philip Meier, Victor Fomin och jag arbetar också med att förlänga vår Förvandlar API (v2) för att stödja inte bara bilder utan även begränsningsrutor, segmenteringsmasker etc.

  • Äntligen hjälper communityn oss att hålla TorchVision fräsch och relevant genom att lägga till populära arkitekturer och tekniker. Lezwon Castelino arbetar för närvarande med Victor Fomin för att lägga till SimpleCopyPaste förstärkning. Hu Ye arbetar för närvarande med att lägga till DeTR-arkitektur.

Om du vill vara med i projektet, vänligen ta en titt på vår bra första nummer och hjälp ville listor. Om du är en rutinerad PyTorch/Computer Vision-veteran och vill bidra har vi flera kandidatprojekt för nya operatörer, förluster, stödsystem och modeller.

Jag hoppas att du tyckte att artikeln var intressant. Om du vill komma i kontakt, kontakta mig LinkedIn or Twitter.

Tidsstämpel:

Mer från Datumbox