En introduktion till superupplösning med hjälp av Deep Learning

Superupplösning är processen att återskapa en högupplöst (HR) bild från en given lågupplöst (LR) bild. En bild kan ha en ”lägre upplösning” på grund av en mindre rumslig upplösning (dvs. storlek) eller på grund av en försämring (t.ex. oskärpa). Vi kan relatera HR- och LR-bilderna genom följande ekvation: LR = degradation(HR)

En bild med låg upplösning hålls vid sidan av sin version med hög upplösning. (Foto av Jarrad Horne på Unsplash)

Det är tydligt att om vi tillämpar en försämringsfunktion får vi LR-bilden från HR-bilden. Men kan vi göra det omvända? I det ideala fallet, ja! Om vi känner till den exakta nedbrytningsfunktionen kan vi genom att tillämpa dess inversa funktion på LR-bilden återskapa HR-bilden.

Men där ligger problemet. Vanligtvis känner vi inte till nedbrytningsfunktionen i förväg. Att direkt uppskatta den inversa nedbrytningsfunktionen är ett problem med dålig lösning. Trots detta har tekniker för djupinlärning visat sig vara effektiva för superupplösning.

Denna blogg fokuserar främst på att ge en introduktion till att utföra superupplösning med hjälp av djupinlärning genom att använda metoder för övervakad träning. Några viktiga förlustfunktioner och mätvärden diskuteras också. En stor del av innehållet härrör från denna litteraturöversikt som läsaren kan hänvisa till.

Supervised Methods

Som tidigare nämnts kan djupinlärning användas för att uppskatta den högupplösta bilden (HR) givet en lågupplöst bild (LR). Genom att använda HR-bilden som mål (eller ground-truth) och LR-bilden som indata kan vi behandla detta som ett övervakat inlärningsproblem.

I det här avsnittet grupperar vi olika metoder för djupinlärning på det sätt som konvolutionslagren är organiserade. Innan vi går vidare till grupperna presenteras en grundkurs om dataförberedelse och typer av konvolutioner. Förlustfunktioner som används för att optimera modellen presenteras separat mot slutet av den här bloggen.

Förberedelse av data

En enkel metod för att få LR-data är att försämra HR-data. Detta görs ofta genom att sudda ut eller lägga till brus. Bilder med lägre rumslig upplösning kan också skalas genom en klassisk upsampling-metod som t.ex. bilinjär eller bikubisk interpolation. JPEG- och kvantiseringsartefakter kan också införas för att försämra bilden.

Degradering av en högupplöst bild för att erhålla en lågupplöst version av den. (Foto av Jarrad Horne på Unsplash)

En viktig sak att notera är att det rekommenderas att lagra HR-bilden i ett okomprimerat (eller förlustfritt komprimerat) format. Detta för att förhindra att HR-bildens kvalitet försämras på grund av förlustkomprimering, vilket kan ge suboptimala resultat.

Typer av konvolutioner

Förutom klassiska 2D-konvolutioner kan flera intressanta varianter användas i nätverken för att förbättra resultaten. Dilaterade (Atrous) konvolutioner kan ge ett större effektivt synfält och därmed använda information som är separerad med ett stort avstånd. Skip connections, Spatial Pyramid Pooling och Dense Blocks motiverar att kombinera både låg- och högnivåfunktioner för att förbättra prestanda.

Nätverksdesignstrategier. (Källa)

I bilden ovan nämns ett antal strategier för nätverksdesign. Du kan hänvisa till det här dokumentet för mer information. För en grundkurs om de olika typerna av konvolutioner som vanligen används vid djupinlärning kan du läsa den här bloggen.

Grupp 1 – Pre-Upsampling

I den här metoden interpoleras först de lågupplösta bilderna för att få en ”grov” högupplöst bild. Nu används CNN:er för att lära sig en kartläggning från de interpolerade lågupplösta bilderna till de högupplösta bilderna. Intuitionen var att det kan vara lättare att först uppgradera de lågupplösta bilderna med traditionella metoder (t.ex. bilinjär interpolation) och sedan förfina resultatet än att lära sig en direkt mappning från ett lågdimensionellt rum till ett högdimensionellt rum.

Ett typiskt nätverk för föruppgradering. (Källa)

På sidan 5 i detta dokument finns några modeller som använder denna teknik. Fördelen är att eftersom upsamplingen hanteras med traditionella metoder behöver CNN bara lära sig att förfina den grova bilden, vilket är enklare. Eftersom vi inte använder transponerade konvolutioner här, kan man dessutom kringgå checkerboard-artefakter. Nackdelen är dock att de fördefinierade upsamplingmetoderna kan förstärka brus och orsaka oskärpa.

Grupp 2- Post-Upsampling

I detta fall skickas de lågupplösta bilderna som sådana till CNN:erna. Upsampling utförs i det sista lagret med hjälp av ett inlärningsbart lager.

Ett typiskt nätverk med post-upsampling. (Källa)

Fördelen med denna metod är att extraheringen av funktioner sker i det lägre dimensionella utrymmet (före upsampling) och därmed minskar beräkningskomplexiteten. Genom att använda ett inlärningsbart upsamplingskikt kan modellen dessutom tränas från början till slut.

Grupp 3- Progressiv upsampling

I ovanstående grupp användes endast en enda upsamplingskonvolution, trots att beräkningskomplexiteten reducerades. Detta gör inlärningsprocessen svårare för stora skalfaktorer. För att komma till rätta med denna nackdel antogs en ram för progressiv upsampling i arbeten som Laplacian Pyramid SR Network (LapSRN) och Progressive SR (ProSR). Modellerna i det här fallet använder en kaskad av CNN för att successivt rekonstruera högupplösta bilder med mindre skalningsfaktorer i varje steg.

Ett typiskt progressivt upsampling-nätverk. (Källa)

Om en svår uppgift delas upp i enklare uppgifter minskas inlärningssvårigheterna avsevärt och bättre prestanda kan uppnås. Dessutom kan inlärningsstrategier som läroplansinlärning integreras för att ytterligare minska inlärningssvårigheterna och förbättra slutprestationen.

Grupp 4 – Iterativ uppåt- och nedåtriktad sampling

En annan populär modellarkitektur är timglasstrukturen (eller U-nätet). I vissa varianter, t.ex. det staplade timglasnätverket, används flera timglasstrukturer i serie, vilket i praktiken innebär att man växlar mellan processen med upp- och nedprovning.

Ett typiskt iterativt upp- och nedprovningsnätverk. (Källa)

Modellerna enligt detta ramverk kan bättre utvinna de djupa relationerna mellan LR-HR-bildparen och därmed ge rekonstruktionsresultat av högre kvalitet.

Förlustfunktioner

Förlustfunktioner används för att mäta skillnaden mellan den genererade högupplösta bilden och den högupplösta bilden som är sanningsenlig. Denna skillnad (fel) används sedan för att optimera den övervakade inlärningsmodellen. Det finns flera klasser av förlustfunktioner där var och en straffar en annan aspekt av den genererade bilden.

Ofta används mer än en förlustfunktion genom att vikta och summera de fel som erhålls från varje förlustfunktion individuellt. Detta gör det möjligt för modellen att fokusera på aspekter som bidrar med flera förlustfunktioner samtidigt.

total_loss = weight_1 * loss_1 + weight_ 2 * loss_2 + weight_3 * loss_3

I det här avsnittet kommer vi att utforska några populära klasser av förlustfunktioner som används för att träna modellerna.

Pixelförlust

Pixelvis förlust är den enklaste klassen av förlustfunktioner där varje pixel i den genererade bilden jämförs direkt med varje pixel i den sanna markbilden. Populära förlustfunktioner som L1- eller L2-förlust eller avancerade varianter som Smooth L1-förlust används.

Plott av Smooth L1-förlust. (Källa)

PSNR-värdet (som diskuteras nedan) är starkt korrelerat med den pixelvisa skillnaden, och därför maximerar en minimering av pixelförlusten direkt PSNR-värdet (vilket indikerar god prestanda). Pixelförlusten tar dock inte hänsyn till bildkvaliteten och modellen ger ofta perceptuellt otillfredsställande resultat (ofta saknas högfrekventa detaljer).

Innehållsförlust

Denna förlust utvärderar bildkvaliteten utifrån dess perceptuella kvalitet. Ett intressant sätt att göra detta är att jämföra högnivåfunktionerna i den genererade bilden och den verkliga bilden. Vi kan få fram dessa högnivåfunktioner genom att skicka båda bilderna genom ett förtränat bildklassificeringsnätverk (t.ex. ett VGG-Net eller ett ResNet).

Innehållsförlust mellan en grundsannolikhetsbild och en genererad bild. (Källa)

Ekvationen ovan beräknar innehållsförlusten mellan en grundsannolik bild och en genererad bild, givet ett förtränat nätverk (Φ) och ett lager (l) i detta förtränade nätverk där förlusten beräknas. Denna förlust uppmuntrar den genererade bilden att vara perceptuellt lik den verkliga bilden. Av denna anledning är den också känd som den perceptuella förlusten.

Texturförlust

För att göra det möjligt för den genererade bilden att ha samma stil (textur, färg, kontrast etc.) som den verkliga bilden används texturförlust (eller stilrekonstruktionsförlust). En bilds textur, som beskrivs av Gatys et. al, definieras som korrelationen mellan olika funktionskanaler. Funktionskanalerna erhålls vanligtvis från en funktionskarta som extraherats med hjälp av ett förtränat bildklassificeringsnätverk (Φ).

Beräkning av Grammatrisen. (Källa)

Korrelationen mellan funktionskartorna representeras av Grammatrisen (G), som är den inre produkten mellan de vektoriserade funktionskartorna i och j på lager l (visas ovan). När Grammatrisen är beräknad för båda bilderna är det enkelt att beräkna texturförlusten, vilket visas nedan:

Beräkning av texturförlusten. (Källa)

Med hjälp av den här förlusten motiveras modellen att skapa realistiska texturer och visuellt mer tillfredsställande resultat.

Total Variation Loss

Total Variation Loss (TV) används för att undertrycka brus i de genererade bilderna. Den tar summan av de absoluta skillnaderna mellan närliggande pixlar och mäter hur mycket brus som finns i bilden. För en genererad bild beräknas TV-förlusten enligt nedan:

Total variationsförlust används på en genererad högupplöst bild. (Källa)

Här itererar i,j,k över höjden, bredden respektive kanalerna.

Adversarial Loss

Generative Adversarial Networks (GANs) har använts i allt större utsträckning för flera bildbaserade tillämpningar, bland annat för högupplösning. GANs består vanligtvis av ett system med två neurala nätverk – Generatorn och Diskriminatorn – som duellerar med varandra.

Givet en uppsättning målprover försöker Generatorn producera prover som kan lura Diskriminatorn att tro att de är äkta. Diskriminatorn försöker skilja riktiga (målprover) från falska (genererade) prover. Med hjälp av denna iterativa träningsmetod får vi så småningom en generator som är riktigt bra på att generera prover som liknar målproverna. Följande bild visar strukturen för en typisk GAN.

GANs in action. (Källa)

Förbättringar av den grundläggande GAN-arkitekturen infördes för att förbättra prestandan. Park et al. använde till exempel en diskriminator på funktionsnivå för att fånga upp mer meningsfulla potentiella attribut i verkliga högupplösta bilder. Du kan kolla in den här bloggen för en mer utförlig översikt över framstegen inom GANs.

Typiskt sett har modeller som tränas med adversarial loss bättre perceptuell kvalitet även om de kan förlora på PSNR jämfört med de modeller som tränas med pixelförlust. En liten nackdel är att träningsprocessen för GANs är lite svår och instabil. Man arbetar dock aktivt med metoder för att stabilisera GAN-träningen.

Metri

En stor fråga är hur vi kvantitativt utvärderar vår modells prestanda. Ett antal tekniker (eller mått) för bedömning av bildkvalitet (IQA) används för samma sak. Dessa metoder kan i stort sett delas in i två kategorier – subjektiva metoder och objektiva metoder.

Subjektiva metoder är baserade på den mänskliga observatörens perceptuella bedömning medan objektiva metoder är baserade på beräkningsmodeller som försöker bedöma bildkvaliteten. Subjektiva mått är ofta mer ”perceptuellt korrekta”, men vissa av dessa mått är besvärliga, tidskrävande eller dyra att beräkna. Ett annat problem är att dessa två kategorier av mätvärden kanske inte är förenliga med varandra. Därför visar forskare ofta resultat med hjälp av mått från båda kategorierna.

I det här avsnittet kommer vi att kortfattat utforska ett par av de allmänt använda måtten för att utvärdera prestandan hos vår superupplösningsmodell.

PSNR

Peak Signal-to-Noise Ratio (PSNR) är ett allmänt använt objektivt mått för att mäta rekonstruktionskvaliteten hos en förlustbringande transformation. PSNR är omvänt proportionellt mot logaritmen av det genomsnittliga kvadratiska felet (MSE) mellan den verkliga bilden och den genererade bilden.

Beräkning av PSNR. (Källa)

I formeln ovan är L det högsta möjliga pixelvärdet (för 8-bitars RGB-bilder är det 255). Eftersom PSNR bara bryr sig om skillnaden mellan pixelvärdena representerar det föga förvånande inte perceptuell kvalitet så bra.

SSIM

Strukturell likhet (SSIM) är ett subjektivt mått som används för att mäta den strukturella likheten mellan bilder, baserat på tre relativt oberoende jämförelser, nämligen luminans, kontrast och struktur. Abstrakt sett kan SSIM-formeln visas som en viktad produkt av jämförelsen av luminans, kontrast och struktur som beräknas oberoende av varandra.

SSIM är en viktad produkt av jämförelser som beskrivs ovan. (Källa)

I ovanstående formel är alfa, beta och gamma vikterna för luminans-, kontrast- respektive strukturjämförelsefunktionerna. Den vanligaste representationen av SSIM-formeln är följande:

Genomsnittligt använd representation av SSIM-formeln. (Källa)

I ovanstående formel representerar μ(I) medelvärdet för en viss bild, σ(I) standardavvikelsen för en viss bild,σ(I,I') kovariansen mellan två bilder och C1, C2 är konstanter som fastställts för att undvika instabilitet. För att göra det kortfattat förklaras inte betydelsen av termerna och den exakta härledningen i den här bloggen och den intresserade läsaren kan läsa avsnitt 2.3.2 i det här dokumentet.

På grund av den eventuella ojämna fördelningen av bildens statistiska egenskaper eller förvrängningar är det mer tillförlitligt att bedöma bildkvaliteten lokalt än att tillämpa den globalt. Mean SSIM (MSSIM), som delar upp bilden i flera fönster och beräknar medelvärdet av den SSIM som erhålls i varje fönster, är en sådan metod för att bedöma kvaliteten lokalt.

I vilket fall som helst, eftersom SSIM utvärderar rekonstruktionskvaliteten ur det mänskliga visuella systemets perspektiv, uppfyller den bättre kraven på den perceptuella bedömningen.

Andra IQA-poäng

Och utan förklaring listas nedan några andra metoder för att bedöma bildkvalitet. Den intresserade läsaren kan hänvisa till detta dokument för mer information.

  • Mean Opinion Score (MOS)
  • Task-based Evaluation
  • Information Fidelity Criterion (IFC)
  • Visual Information Fidelity (VIF)

Slutsats

Den här bloggartikeln behandlade en del introduktionsmaterial och förfaranden för att träna djupinlärningsmodeller för Super Resolution. Det finns faktiskt mer avancerade tekniker som införs genom den senaste forskningen och som kan ge bättre prestanda. Dessutom skulle forskning på områden som oövervakad superupplösning, bättre normaliseringstekniker och bättre representativa mätvärden kunna främja detta område avsevärt. Den intresserade läsaren uppmuntras att experimentera med sina innovativa idéer genom att delta i utmaningar som PIRM Challenge.

Lämna ett svar

Din e-postadress kommer inte publiceras.