Bruker AI til å overkomprimere bilder

Bruker AI til å overkomprimere bilder
Datadrevne algoritmer som nevrale nettverk har tatt verden med storm. Utviklingen deres er drevet av flere årsaker, inkludert billig og kraftig maskinvare og enorme mengder data. Nevrale nettverk er for tiden i forkant av alt relatert til "kognitive" oppgaver som bildegjenkjenning, naturlig språkforståelse, etc. Men de bør ikke begrenses til slike oppgaver. Dette materialet beskriver en metode for å komprimere bilder ved hjelp av nevrale nettverk ved bruk av restlæring. Tilnærmingen som presenteres i artikkelen fungerer raskere og bedre enn standard kodeker. Skjemaer, ligninger og selvfølgelig en tabell med tester under snittet.

Denne artikkelen er basert på dette arbeid. Det forutsettes at du er kjent med nevrale nettverk og deres konsepter konvolusjon и tapsfunksjon.

Hva er bildekomprimering og hvilke typer kommer det i?

Bildekomprimering er prosessen med å transformere et bilde slik at det tar mindre plass. Bare å lagre bilder vil ta mye plass, så det er kodeker som JPEG og PNG som tar sikte på å redusere størrelsen på originalbildet.

Som du vet, er det to typer bildekomprimering: ingen tap и med tap. Som navnene antyder, kan tapsfri komprimering gjenopprette de originale bildedataene, mens tapskomprimering mister noen data under komprimering. for eksempel, JPG er tapsbaserte algoritmer [ca. oversettelse - La oss i utgangspunktet heller ikke glemme tapsfri JPEG], og PNG er en tapsfri algoritme.

Bruker AI til å overkomprimere bilder
Sammenligning av tapsfri og tapsgivende kompresjon

Legg merke til at bildet til høyre har mange blokkformede artefakter. Dette er tapt informasjon. Tilstøtende piksler med lignende farger komprimeres som ett område for å spare plass, men informasjon om de faktiske pikslene går tapt. Algoritmene som brukes i JPEG, PNG, etc. kodeker er selvfølgelig mye mer komplekse, men dette er et godt intuitivt eksempel på tapskomprimering. Tapsfri komprimering er bra, men tapsfritt komprimerte filer tar opp mye diskplass. Det finnes mer effektive måter å komprimere bilder på uten å miste mye informasjon, men de er ganske trege og mange bruker iterative tilnærminger. Dette betyr at de ikke kan kjøres parallelt på flere CPU- eller GPU-kjerner. Denne begrensningen gjør dem helt upraktiske for daglig bruk.

Convolutional Neural Network Input

Hvis noe må beregnes og beregningene kan være omtrentlige, legg til nevrale nettverket. Forfatterne brukte et ganske standard konvolusjonelt nevralt nettverk for å forbedre bildekomprimering. Den presenterte metoden fungerer ikke bare på nivå med de beste løsningene (om ikke bedre), den kan også bruke parallell databehandling, noe som resulterer i en dramatisk økning i hastighet. Årsaken er at konvolusjonelle nevrale nettverk (CNN) er veldig flinke til å trekke ut romlig informasjon fra bilder, som deretter blir representert i en mer kompakt form (for eksempel beholdes bare de "viktige" bitene av bildet). Forfatterne ønsket å bruke denne funksjonen til CNN for å representere bilder bedre.

arkitektur

Forfatterne foreslo et dobbelt nettverk. Det første nettverket tar et bilde som input og genererer en kompakt representasjon (ComCNN). Utdataene fra dette nettverket blir deretter behandlet av en standard kodek (som JPEG). Når det er behandlet av kodeken, sendes bildet til et andre nettverk, som "korrigerer" bildet fra kodeken i et forsøk på å returnere det originale bildet. Forfatterne kalte dette nettverket en rekonstruksjon CNN (RecCNN). I likhet med GAN-er trenes begge nettverkene iterativt.

Bruker AI til å overkomprimere bilder
ComCNN Compact representasjon overført til standard kodek

Bruker AI til å overkomprimere bilder
RecCNN. ComCNN-utgangen oppskaleres og mates til RecCNN, som vil prøve å lære resten

Codec-utgangen oppskaleres og mates deretter til RecCNN. RecCNN vil prøve å sende ut et bilde som er så likt originalen som mulig.

Bruker AI til å overkomprimere bilder
Ende-til-ende bildekomprimeringsramme. Co(.) er en bildekomprimeringsalgoritme. Forfatterne brukte JPEG, JPEG2000 og BPG

Hva er resten?

Resten kan betraktes som et etterbehandlingstrinn for å "forbedre" bildet som dekodes av kodeken. Med mye "informasjon" om verden, kan et nevralt nettverk ta kognitive beslutninger om hva som skal fikses. Denne ideen er basert på resttrening, les detaljene som du kan her.

Tapsfunksjoner

To tapsfunksjoner brukes fordi vi har to nevrale nettverk. Den første av disse, ComCNN, er merket L1 og er definert som følger:

Bruker AI til å overkomprimere bilder
Tapsfunksjon for ComCNN

forklaring

Denne ligningen kan virke komplisert, men den er faktisk standard (gjennomsnittlig kvadratfeil) MSE. ||² betyr normen til vektoren de omslutter.

Bruker AI til å overkomprimere bilder
Ligning 1.1

Cr angir utgangen til ComCNN. θ angir trenbarheten til ComCNN-parametere, XK er inngangsbildet

Bruker AI til å overkomprimere bilder
Ligning 1.2

Re() står for RecCNN. Denne ligningen sender ganske enkelt verdien av ligning 1.1 til RecCNN. θ betegner de trenbare parametrene til RecCNN (hetten på toppen betyr at parametrene er faste).

Intuitiv definisjon

Ligning 1.0 vil tvinge ComCNN til å endre vektene sine slik at når det rekonstrueres ved hjelp av RecCNN, ser det endelige bildet så likt ut som mulig. Den andre RecCNN tapsfunksjonen er definert som følger:

Bruker AI til å overkomprimere bilder
Ligning 2.0

forklaring

Igjen kan funksjonen se kompleks ut, men det er for det meste en standard nevrale nettverkstapfunksjon (MSE).

Bruker AI til å overkomprimere bilder
Ligning 2.1

Co() betyr kodek-utgang, x med en cap på toppen betyr ComCNN-utgang. θ2 er de trenbare parameterne til RecCNN, res() er ganske enkelt restutgangen til RecCNN. Det er verdt å merke seg at RecCNN er trent på forskjellen mellom Co() og inngangsbildet, men ikke på inngangsbildet.

Intuitiv definisjon

Ligning 2.0 vil tvinge RecCNN til å endre vektene slik at utgangen ser så lik ut som mulig på inndatabildet.

Treningsopplegg

Modeller trenes iterativt, i likhet med GAN. Den første modellens vekter er faste mens den andre modellens vekter oppdateres, deretter er den andre modellens vekter faste mens den første modellen trenes.

Tester

Forfatterne sammenlignet metoden deres med eksisterende metoder, inkludert enkle kodeker. Metoden deres fungerer bedre enn andre mens de opprettholder høy hastighet på riktig maskinvare. I tillegg prøvde forfatterne å bruke bare ett av de to nettverkene og noterte et fall i ytelse.

Bruker AI til å overkomprimere bilder
Strukturell likhetsindeks (SSIM) sammenligning. Høye verdier indikerer bedre likhet med originalen. Resultatene av forfatternes arbeid er markert med fet skrift.

Konklusjon

Vi så på en ny måte å bruke dyp læring for bildekomprimering, og snakket om muligheten for å bruke nevrale nettverk i oppgaver utover «generelle», som bildeklassifisering og språkbehandling. Denne metoden er ikke bare dårligere enn moderne krav, men lar deg også behandle bilder mye raskere.

Det har blitt lettere å studere nevrale nettverk, fordi vi har laget en kampanjekode spesielt for innbyggere i Khabra HORNBEAM, som gir ytterligere 10 % rabatt på rabatten som er angitt på banneret.

Bruker AI til å overkomprimere bilder

Flere kurs

Utvalgte artikler

Kilde: www.habr.com

Legg til en kommentar