Använder AI för att överkomprimera bilder

Använder AI för att överkomprimera bilder
Datadrivna algoritmer som neurala nätverk har tagit världen med storm. Deras utveckling drivs av flera skäl, inklusive billig och kraftfull hårdvara och enorma mängder data. Neurala nätverk ligger för närvarande i framkant av allt som har att göra med "kognitiva" uppgifter som bildigenkänning, naturlig språkförståelse, etc. Men de bör inte begränsas till sådana uppgifter. Detta material beskriver en metod för att komprimera bilder med hjälp av neurala nätverk med hjälp av restinlärning. Tillvägagångssättet som presenteras i artikeln fungerar snabbare och bättre än vanliga codecs. Schema, ekvationer och naturligtvis en tabell med tester under snittet.

Denna artikel är baserad på detta arbete. Det förutsätts att du är bekant med neurala nätverk och deras koncept veck и förlustfunktion.

Vad är bildkomprimering och vilka typer finns det i?

Bildkomprimering är processen att transformera en bild så att den tar mindre plats. Att bara lagra bilder skulle ta upp mycket utrymme, så det finns codecs som JPEG och PNG som syftar till att minska storleken på originalbilden.

Som ni vet finns det två typer av bildkomprimering: ingen förlust и med förluster. Som namnen antyder kan förlustfri komprimering återställa originalbilddata, medan förlustfri komprimering förlorar en del data under komprimering. till exempel är JPG förlustalgoritmer [ca. översättning - I grund och botten, låt oss inte heller glömma förlustfri JPEG], och PNG är en förlustfri algoritm.

Använder AI för att överkomprimera bilder
Jämförelse av förlustfri och förlustfri kompression

Observera att bilden till höger har många blockartade artefakter. Detta är förlorad information. Intilliggande pixlar med liknande färger komprimeras till ett område för att spara utrymme, men information om de faktiska pixlarna går förlorad. Naturligtvis är algoritmerna som används i JPEG, PNG, etc. codecs mycket mer komplexa, men detta är ett bra intuitivt exempel på förlustbringande komprimering. Förlustfri komprimering är bra, men förlustfritt komprimerade filer tar upp mycket diskutrymme. Det finns mer effektiva sätt att komprimera bilder utan att förlora mycket information, men de är ganska långsamma och många använder iterativa metoder. Detta innebär att de inte kan köras parallellt på flera CPU- eller GPU-kärnor. Denna begränsning gör dem helt opraktiska för dagligt bruk.

Konvolutionell neural nätverksingång

Om något behöver beräknas och beräkningarna kan vara ungefärliga, lägg till neuralt nätverk. Författarna använde ett ganska standardiserat faltningsneuralt nätverk för att förbättra bildkomprimeringen. Den presenterade metoden presterar inte bara i nivå med de bästa lösningarna (om inte bättre), den kan också använda parallell beräkning, vilket resulterar i en dramatisk ö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 i en mer kompakt form (till exempel behålls bara de "viktiga" bitarna i bilden). Författarna ville använda denna funktion 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 standardcodec (som JPEG). När den väl bearbetats av codec, skickas bilden till ett andra nätverk, som "korrigerar" bilden från codec i ett försök att returnera originalbilden. Författarna kallade detta nätverk för ett rekonstruktions-CNN (RecCNN). Liksom GAN:er tränas båda nätverken iterativt.

Använder AI för att överkomprimera bilder
ComCNN Compact representation överförd till standard codec

Använder AI för att överkomprimera bilder
RecCNN. ComCNN-utgången skalas upp och matas till RecCNN, som kommer att försöka lära sig resten

Codec-utgången skalas upp och matas sedan till RecCNN. RecCNN kommer att försöka mata ut en bild som är så lik originalet som möjligt.

Använder AI för att överkomprimera bilder
Ramverk för bildkomprimering från slut till ände. Co(.) är en bildkomprimeringsalgoritm. Författarna använde JPEG, JPEG2000 och BPG

Vad är resten?

Resten kan ses som ett efterbearbetningssteg för att "förbättra" bilden som avkodas av codec. Med mycket "information" om världen kan ett neuralt nätverk fatta kognitiva beslut om vad som ska fixas. Denna idé bygger på restutbildning, läs detaljerna om vilka du kan här.

Förlustfunktioner

Två förlustfunktioner används eftersom vi har två neurala nätverk. Den första av dessa, ComCNN, är märkt L1 och definieras enligt följande:

Använder AI för att överkomprimera bilder
Förlustfunktion för ComCNN

förklaring

Denna ekvation kan verka komplicerad, men den är faktiskt standard (medelkvadratfel) MSE. ||² betyder normen för vektorn de omsluter.

Använder AI för att överkomprimera bilder
Ekvation 1.1

Cr betecknar utsignalen från ComCNN. θ betecknar inlärningsförmågan hos ComCNN-parametrar, XK är ingångsbilden

Använder AI för att överkomprimera bilder
Ekvation 1.2

Re() står för RecCNN. Denna ekvation skickar helt enkelt värdet av ekvation 1.1 till RecCNN. θ betecknar de träningsbara parametrarna för RecCNN (locket på toppen betyder att parametrarna är fasta).

Intuitiv definition

Ekvation 1.0 kommer att tvinga ComCNN att ändra sina vikter så att, när den rekonstrueras med RecCNN, den slutliga bilden ser så lik ingångsbilden som möjligt. Den andra RecCNN-förlustfunktionen definieras enligt följande:

Använder AI för att överkomprimera bilder
Ekvation 2.0

förklaring

Återigen kan funktionen se komplex ut, men det är för det mesta en standard neural nätverksförlustfunktion (MSE).

Använder AI för att överkomprimera bilder
Ekvation 2.1

Co() betyder codec-utgång, x med ett lock på toppen betyder ComCNN-utgång. θ2 är de träningsbara parametrarna för RecCNN, res() är helt enkelt restutgången från RecCNN. Det är värt att notera att RecCNN tränas på skillnaden mellan Co() och ingångsbilden, men inte på ingångsbilden.

Intuitiv definition

Ekvation 2.0 kommer att tvinga RecCNN att ändra sina vikter så att utdata ser så lik ingångsbilden som möjligt.

Inlärningsschema

Modeller tränas iterativt, liknande GAN. Den första modellens vikter är fasta medan den andra modellens vikter uppdateras, sedan är den andra modellens vikter fasta medan den första modellen tränas.

Tester

Författarna jämförde sin metod med befintliga metoder, inklusive enkla codecs. Deras metod fungerar bättre än andra samtidigt som de håller hög hastighet på lämplig hårdvara. Dessutom försökte författarna att använda endast ett av de två nätverken och noterade en nedgång i prestanda.

Använder AI för att överkomprimera bilder
Jämförelse med strukturellt likhetsindex (SSIM). Höga värden indikerar bättre likhet med originalet. Resultaten av författarnas arbete är markerade i fetstil.

Slutsats

Vi tittade på ett nytt sätt att använda djupinlärning för bildkomprimering, och pratade om möjligheten att använda neurala nätverk i uppgifter utöver "allmänna", som bildklassificering och språkbehandling. Denna metod är inte bara sämre än moderna krav, utan låter dig också bearbeta bilder mycket snabbare.

Det har blivit lättare att studera neurala nätverk, eftersom vi har skapat en kampanjkod speciellt för invånare i Khabra HABR, vilket ger ytterligare 10 % rabatt på rabatten som anges på bannern.

Använder AI för att överkomprimera bilder

Fler kurser

Utvalda artiklar

Källa: will.com

Lägg en kommentar