Gebruik AI om beelde te oorkomprimeer

Gebruik AI om beelde te oorkomprimeer
Data-gedrewe algoritmes soos neurale netwerke het die wêreld met storm geneem. Hul ontwikkeling is te wyte aan verskeie redes, insluitend goedkoop en kragtige toerusting en 'n groot hoeveelheid data. Neurale netwerke is tans aan die voorpunt van alles wat verband hou met "kognitiewe" take soos beeldherkenning, natuurlike taalbegrip, ens. Maar hulle moet nie tot sulke take beperk word nie. Hierdie artikel praat oor hoe om beelde saam te druk met behulp van neurale netwerke, met behulp van residuele leer. Die benadering wat in die artikel aangebied word, is vinniger en beter as standaardkodeks. Skemas, vergelykings en natuurlik 'n tabel met toetse onder die knie.

Hierdie artikel is gebaseer op hierdie werk. Daar word aanvaar dat jy vertroud is met neurale netwerke en hul konsepte. konvolusie и verlies funksie.

Wat is beeldkompressie en hoe werk dit?

Beeldkompressie is die proses om 'n beeld om te skakel sodat dit minder spasie in beslag neem. Om prente bloot te stoor sal baie spasie in beslag neem, en daarom is daar codecs soos JPEG en PNG wat daarop gemik is om die grootte van die oorspronklike prent te verklein.

Soos u weet, is daar twee tipes beeldkompressie: geen verlies nie и met verliese. Soos die name aandui, kan verlieslose kompressie die oorspronklike beelddata behou, terwyl verlieslose kompressie sommige data tydens kompressie verloor. byvoorbeeld, JPG is verlieslose algoritmes [ongeveer. vertaal. - laat ons basies ook nie van verlieslose JPEG vergeet nie, en PNG is 'n verlieslose algoritme.

Gebruik AI om beelde te oorkomprimeer
Vergelyking van verlieslose en verlieslose kompressie

Let op dat daar baie blokagtige artefakte in die prent aan die regterkant is. Dit is verlore inligting. Naburige pixels van soortgelyke kleure word saamgepers as 'n enkele area om spasie te bespaar, maar inligting oor die werklike pixels gaan verlore. Natuurlik is die algoritmes wat in die JPEG, PNG, ens.-kodeks gebruik word, baie meer kompleks, maar dit is 'n goeie intuïtiewe voorbeeld van kompressie met verlies. Verlieslose kompressie is goed, maar verlieslose saamgeperste lêers neem baie skyfspasie op. Daar is beter maniere om beelde saam te pers sonder om baie inligting te verloor, maar dit is redelik stadig en baie gebruik iteratiewe benaderings. Dit beteken dat hulle nie parallel op veelvuldige SVE- of GPU-kerne uitgevoer kan word nie. Hierdie beperking maak hulle heeltemal onprakties in alledaagse gebruik.

Konvolusionele neurale netwerkinvoer

As iets bereken moet word en die berekeninge kan by benadering wees, voeg by neurale netwerk. Die skrywers het 'n redelik standaard konvolusionele neurale netwerk gebruik om beeldkompressie te verbeter. Die voorgestelde metode presteer nie net op gelyke voet met die beste oplossings nie (indien nie beter nie), dit kan ook parallelle rekenaars gebruik, wat lei tot 'n dramatiese toename in spoed. Die rede is dat Convolutional Neural Networks (CNN's) baie goed is om ruimtelike inligting uit beelde te onttrek, wat dan in 'n meer kompakte vorm aangebied word (byvoorbeeld net die "belangrike" stukkies van die beeld word bewaar). Die skrywers wou hierdie CNN-vermoë gebruik om die beelde beter voor te stel.

Argitektuur

Die skrywers het 'n dubbele netwerk voorgestel. Die eerste netwerk neem 'n beeld as invoer en genereer 'n kompakte voorstelling (ComCNN). Die uitset van hierdie netwerk word dan verwerk deur 'n standaard kodek (bv. JPEG). Nadat dit deur die kodek verwerk is, word die beeld na 'n tweede netwerk oorgedra, wat die beeld vanaf die kodek "regmaak" in 'n poging om die oorspronklike beeld terug te gee. Die skrywers het hierdie netwerk Reconstructive CNN (RecCNN) genoem. Soos GAN's, word beide netwerke iteratief opgelei.

Gebruik AI om beelde te oorkomprimeer
ComCNN Compact verteenwoordiging word oorgedra na standaard codec

Gebruik AI om beelde te oorkomprimeer
RecCNN. ComCNN-uitset word opgeskaal en na RecCNN gevoer, wat sal probeer om die res te leer

Die kodek-uitvoer word opgeskaal en dan na RecCNN oorgedra. RecCNN sal probeer om die beeld so na as moontlik aan die oorspronklike weer te gee.

Gebruik AI om beelde te oorkomprimeer
Eind-tot-end beeld kompressie raamwerk. Co(.) is 'n beeldkompressie-algoritme. Die skrywers het JPEG, JPEG2000 en BPG gebruik

Wat is 'n res?

Die res kan beskou word as 'n naverwerkingstap om die beeld wat deur die kodek gedekodeer word, te "verbeter". Met baie "inligting" oor die wêreld, kan 'n neurale netwerk kognitiewe besluite neem oor wat om reg te stel. Hierdie idee is gebaseer op oorblywende leer, lees die besonderhede waaroor jy kan hier.

Verlies funksies

Die twee verliesfunksies word gebruik omdat ons twee neurale netwerke het. Die eerste hiervan, ComCNN, is gemerk L1 en word soos volg gedefinieer:

Gebruik AI om beelde te oorkomprimeer
Verliesfunksie vir ComCNN

verduideliking

Hierdie vergelyking lyk dalk ingewikkeld, maar dit is eintlik die standaard (root mean square error) MSE. ||² beteken die norm van die vektor wat hulle insluit.

Gebruik AI om beelde te oorkomprimeer
Vergelyking 1.1

Cr dui die uitset van ComCNN aan. θ dui die leerbaarheid van ComCNN-parameters aan, XK is die insetbeeld

Gebruik AI om beelde te oorkomprimeer
Vergelyking 1.2

Re() staan ​​vir RecCNN. Hierdie vergelyking dra bloot die betekenis van vergelyking 1.1 aan RecCNN oor. θ dui die RecCNN-opleibare parameters aan ('n hoed bo-op beteken die parameters is vas).

Intuïtiewe definisie

Vergelyking 1.0 sal veroorsaak dat ComCNN sy gewigte verander sodat wanneer dit met RecCNN herskep word, die finale beeld so soortgelyk as moontlik aan die insetbeeld lyk. Die tweede RecCNN-verliesfunksie word soos volg gedefinieer:

Gebruik AI om beelde te oorkomprimeer
Vergelyking 2.0

verduideliking

Weereens kan die funksie ingewikkeld lyk, maar dit is meestal 'n standaard neurale netwerkverliesfunksie (MSE).

Gebruik AI om beelde te oorkomprimeer
Vergelyking 2.1

Co() beteken kodek-uitset, x met 'n hoed bo-op beteken ComCNN-uitset. θ2 is RecCNN-opleibare parameters, res() is net RecCNN se residuele uitset. Dit is opmerklik dat RecCNN opgelei is op die verskil tussen Co() en die invoerbeeld, maar nie op die invoerbeeld nie.

Intuïtiewe definisie

Vergelyking 2.0 sal veroorsaak dat RecCNN sy gewigte verander sodat die uitset so soortgelyk as moontlik aan die insetbeeld lyk.

Leerskema

Modelle word iteratief opgelei, soos GAN. Die gewigte van die eerste model word vasgestel terwyl die gewigte van die tweede model opgedateer word, dan word die gewigte van die tweede model vasgestel terwyl die eerste model opgelei word.

toetse

Die skrywers het hul metode vergelyk met bestaande metodes, insluitend eenvoudige codecs. Hul metode presteer beter as ander terwyl hulle hoë spoed op die toepaslike hardeware handhaaf. Daarbenewens het die skrywers probeer om slegs een van die twee netwerke te gebruik en het 'n afname in prestasie opgemerk.

Gebruik AI om beelde te oorkomprimeer
Strukturele Ooreenkomstigheidsindeksvergelyking (SSIM). Hoë waardes dui op 'n beter ooreenkoms met die oorspronklike. Vetdruk dui die resultaat van die werk van die skrywers aan

Gevolgtrekking

Ons het gekyk na 'n nuwe manier om diep leer op beeldkompressie toe te pas, en het gepraat oor die moontlikheid om neurale netwerke te gebruik in take buite "algemene" take soos beeldklassifikasie en taalverwerking. Hierdie metode is nie net minderwaardig aan moderne vereistes nie, maar laat jou ook toe om beelde baie vinniger te verwerk.

Om neurale netwerke te leer het makliker geword, want ons het 'n promosiekode spesiaal vir Habravchan gemaak HABR, wat 'n bykomende 10% afslag gee op die afslag wat op die banier aangedui word.

Gebruik AI om beelde te oorkomprimeer

Meer kursusse

Uitgestalde artikels

Bron: will.com

Voeg 'n opmerking