AI gebruiken om afbeeldingen te overcomprimeren

AI gebruiken om afbeeldingen te overcomprimeren
Datagestuurde algoritmen zoals neurale netwerken hebben de wereld stormenderhand veroverd. Hun ontwikkeling is te danken aan verschillende redenen, waaronder goedkope en krachtige apparatuur en een enorme hoeveelheid gegevens. Neurale netwerken lopen momenteel voorop bij alles wat met "cognitieve" taken te maken heeft, zoals beeldherkenning, begrip van natuurlijke taal, enz. Maar ze mogen zich niet beperken tot dergelijke taken. Dit artikel gaat over het comprimeren van afbeeldingen met behulp van neurale netwerken, met behulp van residueel leren. De aanpak die in het artikel wordt gepresenteerd, is sneller en beter dan standaardcodecs. Schema's, vergelijkingen en natuurlijk een tabel met tests onder de snede.

Dit artikel is gebaseerd op dit werk. Er wordt aangenomen dat u bekend bent met neurale netwerken en hun concepten. kronkeling и verlies functie.

Wat is beeldcompressie en hoe werkt het?

Beeldcompressie is het proces van het converteren van een afbeelding zodat deze minder ruimte in beslag neemt. Het simpelweg opslaan van afbeeldingen zou veel ruimte in beslag nemen, daarom zijn er codecs zoals JPEG en PNG die tot doel hebben de grootte van de originele afbeelding te verkleinen.

Zoals u weet, zijn er twee soorten beeldcompressie: geen verlies и met verliezen. Zoals de namen al suggereren, kan compressie zonder verlies de originele beeldgegevens behouden, terwijl compressie met verlies sommige gegevens verliest tijdens de compressie. JPG zijn bijvoorbeeld lossy algoritmen [ong. vert. - eigenlijk, laten we ook JPEG zonder verlies niet vergeten], en PNG is een algoritme zonder verlies.

AI gebruiken om afbeeldingen te overcomprimeren
Vergelijking van lossless en lossy compressie

Merk op dat er veel blokkerige artefacten in de afbeelding aan de rechterkant zijn. Dit is verloren informatie. Naburige pixels van vergelijkbare kleuren worden gecomprimeerd als een enkel gebied om ruimte te besparen, maar informatie over de eigenlijke pixels gaat verloren. Natuurlijk zijn de algoritmen die worden gebruikt in de JPEG-, PNG-, enz. codecs veel complexer, maar dit is een goed intuïtief voorbeeld van compressie met verlies. Compressie zonder verlies is goed, maar gecomprimeerde bestanden zonder verlies nemen veel schijfruimte in beslag. Er zijn betere manieren om afbeeldingen te comprimeren zonder veel informatie te verliezen, maar ze zijn vrij traag en veel gebruiken iteratieve benaderingen. Dit betekent dat ze niet parallel kunnen worden uitgevoerd op meerdere CPU- of GPU-cores. Deze beperking maakt ze volkomen onpraktisch in het dagelijks gebruik.

Convolutionele neurale netwerkinvoer

Als er iets moet worden berekend en de berekeningen kunnen bij benadering zijn, voeg dan toe neuraal netwerk. De auteurs gebruikten een vrij standaard convolutioneel neuraal netwerk om de beeldcompressie te verbeteren. De gepresenteerde methode presteert niet alleen op hetzelfde niveau als de beste oplossingen (zo niet beter), maar kan ook gebruik maken van parallel computing, wat leidt tot een dramatische toename van de snelheid. De reden is dat Convolutional Neural Networks (CNN's) erg goed zijn in het extraheren van ruimtelijke informatie uit afbeeldingen, die vervolgens in een compactere vorm worden gepresenteerd (zo blijven bijvoorbeeld alleen de "belangrijke" delen van de afbeelding behouden). De auteurs wilden deze CNN-mogelijkheid gebruiken om de afbeeldingen beter weer te geven.

Architectuur

De auteurs stelden een dubbel netwerk voor. Het eerste netwerk neemt een afbeelding als invoer en genereert een compacte weergave (ComCNN). De output van dit netwerk wordt vervolgens verwerkt door een standaard codec (bijv. JPEG). Na te zijn verwerkt door de codec, wordt de afbeelding doorgegeven aan een tweede netwerk, dat de afbeelding van de codec "repareert" in een poging om de originele afbeelding terug te sturen. De auteurs noemden dit netwerk Reconstructive CNN (RecCNN). Net als GAN's worden beide netwerken iteratief getraind.

AI gebruiken om afbeeldingen te overcomprimeren
ComCNN Compact-representatie wordt doorgegeven aan de standaardcodec

AI gebruiken om afbeeldingen te overcomprimeren
RecCNN. ComCNN-uitvoer wordt opgeschaald en naar RecCNN gestuurd, die zal proberen de rest te leren

De codec-uitvoer wordt opgeschaald en vervolgens doorgegeven aan RecCNN. RecCNN zal proberen de afbeelding zo dicht mogelijk bij het origineel weer te geven.

AI gebruiken om afbeeldingen te overcomprimeren
End-to-end raamwerk voor beeldcompressie. Co(.) is een algoritme voor beeldcompressie. De auteurs gebruikten JPEG, JPEG2000 en BPG

Wat is een restant?

De rest kan worden gezien als een nabewerkingsstap om het beeld dat door de codec wordt gedecodeerd te "verbeteren". Met veel "informatie" over de wereld kan een neuraal netwerk cognitieve beslissingen nemen over wat te repareren. Dit idee is gebaseerd op resterend leren, lees de details waarover u kunt hier.

Verlies functies

De twee verliesfuncties worden gebruikt omdat we twee neurale netwerken hebben. De eerste hiervan, ComCNN, heeft het label L1 en is als volgt gedefinieerd:

AI gebruiken om afbeeldingen te overcomprimeren
Verliesfunctie voor ComCNN

toelichting

Deze vergelijking lijkt misschien ingewikkeld, maar het is eigenlijk de standaard (root mean square error) MSE. ||² betekent de norm van de vector die ze insluiten.

AI gebruiken om afbeeldingen te overcomprimeren
Vergelijking 1.1

Cr staat voor de output van ComCNN. θ geeft de leerbaarheid van ComCNN-parameters aan, XK is het invoerbeeld

AI gebruiken om afbeeldingen te overcomprimeren
Vergelijking 1.2

Re() staat voor RecCNN. Deze vergelijking geeft simpelweg de betekenis van vergelijking 1.1 weer aan RecCNN. θ geeft de RecCNN trainbare parameters aan (een hoed bovenop betekent dat de parameters vast zijn).

Intuïtieve definitie

Vergelijking 1.0 zorgt ervoor dat ComCNN zijn gewichten verandert, zodat het uiteindelijke beeld, wanneer het opnieuw wordt gemaakt met RecCNN, zo veel mogelijk lijkt op het invoerbeeld. De tweede RecCNN-verliesfunctie wordt als volgt gedefinieerd:

AI gebruiken om afbeeldingen te overcomprimeren
Vergelijking 2.0

toelichting

Nogmaals, de functie ziet er misschien ingewikkeld uit, maar dit is grotendeels een standaard neurale netwerkverliesfunctie (MSE).

AI gebruiken om afbeeldingen te overcomprimeren
Vergelijking 2.1

Co() betekent codec-uitvoer, x met een hoed erop betekent ComCNN-uitvoer. θ2 zijn RecCNN trainbare parameters, res() is slechts de resterende output van RecCNN. Het is vermeldenswaard dat RecCNN is getraind op het verschil tussen Co() en het invoerbeeld, maar niet op het invoerbeeld.

Intuïtieve definitie

Vergelijking 2.0 zorgt ervoor dat RecCNN zijn gewichten verandert, zodat de uitvoer er zo veel mogelijk uitziet als de invoerafbeelding.

Leerschema

Modellen worden iteratief getraind, zoals GAN. De gewichten van het eerste model worden vastgezet terwijl de gewichten van het tweede model worden bijgewerkt, vervolgens worden de gewichten van het tweede model vastgezet terwijl het eerste model wordt getraind.

Testen

De auteurs vergeleken hun methode met bestaande methoden, waaronder eenvoudige codecs. Hun methode presteert beter dan andere terwijl ze hoge snelheid behouden op de juiste hardware. Bovendien probeerden de auteurs slechts één van de twee netwerken te gebruiken en constateerden ze een prestatiedaling.

AI gebruiken om afbeeldingen te overcomprimeren
Vergelijking van structurele gelijkenis-indexen (SSIM). Hoge waarden duiden op een betere gelijkenis met het origineel. Vetgedrukte tekst geeft het resultaat aan van het werk van de auteurs

Conclusie

We hebben gekeken naar een nieuwe manier om deep learning toe te passen op beeldcompressie en spraken over de mogelijkheid om neurale netwerken te gebruiken voor taken die verder gaan dan 'algemene' taken, zoals beeldclassificatie en taalverwerking. Deze methode doet niet alleen niet onder voor moderne eisen, maar stelt u ook in staat om afbeeldingen veel sneller te verwerken.

Het leren van neurale netwerken is makkelijker geworden, omdat we speciaal voor Habravchan een promocode hebben gemaakt HABR, waarbij 10% extra korting wordt gegeven op de korting die op de banner staat vermeld.

AI gebruiken om afbeeldingen te overcomprimeren

Meer cursussen

Aanbevolen artikelen

Bron: www.habr.com

Voeg een reactie