Datastyrda algoritmer, sÄsom neurala nÀtverk, har tagit vÀrlden med storm. Deras utveckling har drivits av flera faktorer, inklusive billig och kraftfull hÄrdvara och enorma datamÀngder. Neurala nÀtverk Àr nu i framkant av allt som rör "kognitiva" uppgifter, sÄsom bildigenkÀnning, förstÄelse av naturligt sprÄk, osv. Men de borde inte begrÀnsas till sÄdana uppgifter. Denna artikel handlar om hur man kan komprimera bilder med hjÀlp av neurala nÀtverk, genom residualutbildning. Den föreslagna metoden fungerar snabbare och bÀttre Àn standardcodecs. Scheman, ekvationer och sjÀlvklart en tabell med tester finns under avsnittet.
Denna artikel Àr baserad pÄ arbetet. Det förutsÀtts att du Àr bekant med neurala nÀtverk och deras begrepp konvolution och förlustfunktion.
Vad Àr bildkomprimering och hur fungerar det?
Bildkomprimering Àr en process dÀr en bild omvandlas sÄ att den tar mindre plats. Att bara lagra bilder skulle ta upp mycket utrymme, dÀrför finns det codecs, sÄsom JPEG och PNG, som syftar till att minska storleken pÄ den ursprungliga bilden.
Som bekant finns det tvĂ„ typer av bildkomprimering: utan förluster och med förlust. Som namnen antyder kan man vid komprimering utan förlust Ă„terfĂ„ data frĂ„n den ursprungliga bilden, medan vid komprimering med förlust förloras vissa data under komprimeringen. Till exempel Ă€r JPG algoritmer med förlust [anm. övers. â vi ska heller inte glömma JPEG utan förlust], medan PNG Ă€r en algoritm utan förlust.

JÀmförelse mellan komprimering utan förlust och med förlust
Observera att det finns mÄnga blockartefakter i bilden till höger. Detta Àr förlorad information. Grannpixlar med liknande fÀrger komprimeras som ett omrÄde för att spara utrymme, vilket resulterar i förlust av information om de faktiska pixlarna. SjÀlvklart Àr de algoritmer som anvÀnds i JPEG, PNG och sÄ vidare mycket mer komplexa, men detta Àr ett bra intuitivt exempel pÄ kompression med förlust. Kompression utan förlust Àr bra, men filer som Àr komprimerade utan förlust tar mycket plats pÄ disken. Det finns mer effektiva sÀtt att komprimera bilder utan att tappa mycket information, men de Àr ganska lÄngsamma, och mÄnga anvÀnder iterativa tillvÀgagÄngssÀtt. Detta innebÀr att de inte kan köras parallellt pÄ flera kÀrnor i en central- eller grafisk processor. SÄdana begrÀnsningar gör dem helt opraktiska för vardagsbruk.
Inmatning av konvolutionellt neuralt nÀtverk
Om nÄgot behöver berÀknas och berÀkningarna kan vara ungefÀrliga, lÀgg till . Författarna anvÀnde ett ganska standard konvolutionellt neuralt nÀtverk för att förbÀttra bildkompressionen. Den presenterade metoden fungerar inte bara pÄ samma nivÄ som de bÀsta lösningarna (om inte bÀttre), den kan ocksÄ anvÀnda parallella berÀkningar, vilket leder till en markant ökning av hastigheten. Anledningen Àr att konvolutionella neurala nÀtverk (CNN) Àr mycket bra pÄ att extrahera rumslig information frÄn bilder, som sedan representeras kompaktare (till exempel sparas endast de "viktiga" bitarna av bilden). Författarna ville utnyttja denna kapabilitet hos CNN för att bÀttre representera bilder.
Arkitektur
Författarna föreslog ett dubbelt nÀtverk. Det första nÀtverket tar en bild som indata och genererar en kompakt representation (ComCNN). Utdata frÄn detta nÀtverk bearbetas sedan av en standardkodare (till exempel JPEG). Efter att ha bearbetats av kodaren överförs bilden till det andra nÀtverket, som "ÄterstÀller" bilden frÄn kodaren i ett försök att ÄterfÄ den ursprungliga bilden. Författarna kallade detta nÀtverk för den rekonstruerande CNN (RecCNN). Liknande GAN trÀnas bÄda nÀtverken iterativt.

ComCNN Den kompakta representationen överförs till standardkodaren

RecCNN. Utdata frÄn ComCNN skalas upp och överförs till RecCNN, som kommer att försöka lÀra sig resten.
Kodens utdata skal skalera upp och sedan skickas till RecCNN. RecCNN kommer att försöka Äterge en bild som liknar originalet sÄ mycket som möjligt.

GenomgÄende bildkomprimeringsram. Co(.) Àr en algoritm för komprimering av bilder. Författarna har tillÀmpat JPEG, JPEG2000 och BPG.
Vad Àr residual?
Residualen kan ses som ett steg i efterbearbetningen för att 'förbÀttra' den bild som decodas av codec. Med en stor mÀngd 'information' om vÀrlden kan det neuronala nÀtverket fatta kognitiva beslut om vad som ska ÄtgÀrdas. Denna idé bygger pÄ , lÀs mer om det .
Förlustfunktioner
TvÄ förlustfunktioner anvÀnds eftersom vi har tvÄ neurala nÀtverk. Det första, ComCNN, Àr mÀrkt som L1 och definieras sÄ hÀr:

Förlustfunktionen för ComCNN
Förklaring
Denna ekvation kan verka komplicerad, men det Ă€r faktiskt en standard (medel kvadratfel). MSE. ||ÂČ innebĂ€r normen av vektorn de involverar.

Ekvation 1.1
Cr stÄr för utdata frÄn ComCNN. Ξ stÄr för lÀrande parametrar för ComCNN, XK Àr den inmatade bilden.

Ekvation 1.2
Re() betyder RecCNN. Denna ekvation överför helt enkelt vÀrdet frÄn ekvation 1.1 till RecCNN. Ξ stÄr för lÀrande parametrar för RecCNN (hatt över betyder att parametrarna Àr fasta).
Intuitiv definition
Ekvation 1.0 fÄr ComCNN att justera sina vikter sÄ att den sista bilden som Äterskapas med RecCNN ser sÄ lik ingÄngsbilden som möjligt. Den andra förlustfunktionen för RecCNN definieras sÄ hÀr:

Ekvation 2.0
Förklaring
à terigen kan funktionen verka komplicerad, men det Àr för det mesta en standardförlustfunktion för neurala nÀtverk (MSE).

Ekvation 2.1
Co() betyder codecens utdata, x med en hatt över betyder utdata frÄn ComCNN. Ξ2 Àr de lÀrande parametrarna för RecCNN. res() representerar helt enkelt residualutdata frÄn RecCNN. Det Àr vÀrt att notera att RecCNN trÀnas pÄ skillnaden mellan Co() och den inmatade bilden, men inte pÄ den inmatade bilden.
Intuitiv definition
Ekvation 2.0 fÄr RecCNN att justera sina vikter sÄ att utdata ser sÄ lik ingÄngsbilden som möjligt.
LĂ€rande schema
Modeller trÀnas iterativt, liknande Vikterna för den första modellen faststÀlls medan vikterna för den andra modellen uppdateras, sedan faststÀlls vikterna för den andra modellen medan den första modellen trÀnas.
Tester
Författarna jÀmförde sin metod med befintliga metoder, inklusive enkla codec. Deras metod fungerar bÀttre Àn andra, samtidigt som den upprÀtthÄller hög hastighet pÄ lÀmplig hÄrdvara. Dessutom försökte författarna anvÀnda endast ett av de tvÄ nÀtverken och noterade en prestandaförlust.

JÀmförelse av strukturell likhetsindex (SSIM). Höga vÀrden indikerar bÀttre likhet med originalet. Resultatet frÄn författarna Àr markerat med fetstil.
Slutsats
Vi undersökte ett nytt sÀtt att anvÀnda djupinlÀrning för bildkomprimering och diskuterade möjligheten att anvÀnda neurala nÀtverk för uppgifter utöver de "allmÀnna", sÄsom bildklassificering och sprÄkbearbetning. Denna metod underpriserar inte moderna krav och möjliggör betydligt snabbare bildbearbetning.
Det har blivit enklare att studera neurala nÀtverk, för vi har skapat en kampanjkod speciellt för Habr-anhÀngare. HABR, som ger ytterligare 10% rabatt pÄ den rabatt som anges pÄ bannern.
Fler kurser
Rekommenderade artiklar
KĂ€lla: habr.com
