Overview: Recurrent Video Deblurring with Blur-Invariant Motion Estimation and Pixel Volumes

Door Glenn van Waesberghe

Aangezien we tijdens de TETRA tot nu toe nog niet zo veel focus gelegd hebben op het VFX aspect van AI in productie, kozen we ervoor om ter voorbereiding van de brainstorm in januari al even kort de viability te testen van een use case rond Video Deblurring. In teken hiervan testten we de bestaande pre-trained models zelf uit, en schreven we deze blogpost. Later in deze blogpost volgen de resultaten van de onze eigen tests, maar eerst leggen we uit hoe deze techniek werkt.

Het doel van Video Deblurring is het verwijderen van motion blur veroorzaakt door cameratrillingen en objectbeweging. 

De simpelste Video Deblurring oplossing is om frame per frame een single-image deblurring algorithme toe te passen.

U ziet daar hierboven een voorbeeld van, maar dit heeft niet zo schitterende resultaten, aangezien het systeem maar een gelimiteerde hoeveelheid informatie uit één enkele blurry image kan halen.

De auteurs van Recurrent Video Deblurring merkten op dat in een blurry video elke videoframe een verschillende blur bevat. Bij het deblurren van een frame kan scherpe informatie in naburige frames een aanwijzing geven voor de missende informatie in de blurry frame. Om de scherpe informatie in nabijgelegen frames te benutten, kan men motion compensation gebruiken. 

State of the Art

Andere technieken doen vaak aan multi-frame-samenvoeging. Die technieken zoeken scherpe gebieden in nabijgelegen blurry videoframes, en voegen deze samen om scherpe videoframes te produceren. Hun resultaten bevatten over het algemeen geen artefacts, maar de resultaten zijn vaak nog steeds wat onscherp. Indien er geen nabijgelegen frames zijn met scherpe patches, werkt deze methode soms helemaal niet.

Een iets andere manier van werken zijn deep-learning technieken. Voor de bewegingscompensatie gebruiken zij verschillende soorten technieken, waaronder bijvoorbeeld optic flow, deformable convolution, en dynamic convolution. Deep-learning technieken doen, in contrast met voorgaande technieken, niet alleen multi-frame-samenvoeging, maar ook echt deblurring op basis van bewegings-gecompenseerde nabijgelegen frames. Hierdoor behalen de deep-learning technieken meestal scherpere resultaten dan technieken die enkel multiframesamenvoeging doen.

De bewegings-compensatie-methodes die door de vorige technieken worden gebruikt, zijn niet speciaal ontworpen voor frames die motion blur bevatten. Daardoor is het mogelijk dat een scherp gebied in de naburige frames niet op de juiste plaats zit ten opzichte van de doelframe, waardoor het deblurring netwerk faalt in het herstellen van fijne texturen.

Recurrent Video Deblurring- Overzicht Paper

In de paper die we vandaag voorstellen focussten de autheurs op het propageren van scherpe informatie in blurry video frames voor meer robuuste video deblurring. Met dat in gedachten, stelden ze een nieuwe bewegingscompensatie methode voor in de vorm van een convolutional neural network, om gebruik te maken van scherpe informatie in nabijgelegen frames.

Optical Flow Estimation

Voor de optical flow in te schatten, introduceerden ze blur-invariante bewegings-inschatting, hetwelke veel beter werkt op blurry images. Ze introduceren ook een nieuwe pixel volume-gebaseerde bewegingscompensatie voor de conventioneel-gebruikte image warping te vervangen. Als laatste introduceerden ze ook een frame-recurrent deblurring network om scherpe informatie te propageren in deblurred frames.

Voor het leren van blur-invariante bewegings-inschatting merken ze op dat blurry videoframes en overeenkomende scherpe frames dezelfde bewegingen hebben. Met dat in gedachten, trainen ze een blur-invariante bewegings-inschattings-netwerk, of BIMNet met inputframes die zowel scherp als blurry zijn, om de beweging van scherpe frames te leren, terwijl er geen ground-truth optical flow labels nodig zijn voor onscherpe frames.

Op basis daarvan trainen ze het motion estimation network om bewegingen te leren tussen elke mogelijke combinatie van onscherpe en scherpe frames. Ze berekenen dan de image loss op basis van een vervormde scherpe frame, ongeacht de blurriness van een input frame. Op basis daarvan kan men dan een willekeurig bestaand optical flow netwerk trainen om robuust te werken op onscherpe videoframes.

Ook via deze methode kan er nog steeds een fout in de motion estimation blijven bestaan, om deze fout te verhelpen introduceren ze het gebruik een pixel volume ter vervanging van het image warping proces.

Pixel Volume

Media3

Het pixelvolume bestaat uit meerdere kandidaatpixels. Door in plaats van de vervormde (warped) frame, het pixelvolume in een deblurring netwerk in te voeren, kan het deblurring netwerk nauwkeuriger deblurren, robuust tegen fouten veroorzaakt door objectbeweging. 

Net zoals bij image warping, zijn voor de constructie van pixelvolumes een doelframe en zijn beweging vereist. Anders dan bij gewone motion warping, produceert het pixelvolume voor elke pixel meerdere kandidaat-pixels in het pixelvolume. Om meerdere kandidaten te produceren, maken de auteurs gebruik van de ruimtelijk coherente eigenschap van bewegingen.

Wanneer er doel- en referentieframes zijn om de beweging te compenseren, beschouwen zij in een doelframe een doelpixel in een ruimtelijk venster van grootte k bij k. Voor een naburige pixel in het venster beschouwen zij ook de overeenkomende pixel in het referentieframe. Dan wordt de pixel op de relatieve positie in het referentiekader een van de overeenkomende kandidaten voor de doelpixel.

Om een pixelvolume te verkrijgen, verzamelen zij dergelijke overeenstemmingskandidaten en stapelen deze voor alle doelpixels en hun naburige pixels in een frame.¬†Door de ruimtelijk coherente eigenschap van bewegingen, als een naburige pixel een hoge overeenkomst heeft, zal de overeenkomstige kandidaat van een gelijkaardige pixelpositie worden verzameld.¬†Bijgevolg levert hun pixelvolume meerdere kopie√ęn van de correcte match in de overeenkomstige kandidaten voor een pixel.

Tot zover het pixel volume, laten we nu kijken hoe dit concept helpt om te gaan met fouten in de bewegings-inschatting.

Handling Motion Estimation Errors

Ten eerste kunnen meerdere kandidaten zelf extra informatie bevatten. Elke pixelstapel zal waarschijnlijk enkele nauwkeurig overeenstemmende kandidaten bevatten, tenzij alle bewegingen van de buren fout zijn. Deze figuur illustreert dit concept.

Media4

Wanneer een pixelvolume wordt vergeleken met een vervormde afbeelding dat met dezelfde beweging is geconstrueerd, kan de vervormde afbeelding structurele artefacten bevatten als gevolg van fouten in de bewegings-inschatting.

Het pixelvolume vormt eigenlijk een afbeelding-stapel, en elk kandidaat-afbeelding bevat een lichtjes verschillende beeldstructuur.

Vergeleken met de afbeelding zal het pixelvolume extra aanwijzingen geven voor een deblurring netwerk om de juiste bewegingsgecompenseerde beeldstructuren te herstellen, door accurate kandidaten te kiezen uit meerdere kandidaten in het pixelvolume.

Er is nog informatie te vergaren uit de verschillende kandidaten.

Als de meerderheid van de overeenkomende kandidaten voor een pixel dezelfde pixelwaarde hebben, is de pixelwaarde hoogstwaarschijnlijk juist.

In het gebied waar fouten plaats vinden zijn binnen de pixelstapels over het algemeen geen meerderheidswaarden. Hierdoor kan een deblurring netwerk een pixelvolume gebruiken als de confidence metric voor bewegingscompensatie.

Deze twee concepten kunnen niet worden behaald met een enkele vervormde (warped) afbeelding dat voor elke pixel slechts één kandidaat heeft.

Op basis van de blur-invariante bewegingsschatting en het pixelvolume, stelden de autheurs een video deblurring netwerk voor met de naam PVDNet. 

Het deblurring netwerk maakt gebruik van een frame-recurrent structuur om scherpe informatie in eerdere deblurred frames te benutten. Met dit doel wordt het deblurring netwerk voorzien van het pixelvolume dat geconstrueerd is uit een eerder deblurred frame.

De autheurs gebruiken een dataset die bestaat uit paren van blurry frames en corresponderende scherpe frames, gegenereerd door video's met een hoge framesnelheid, om zowel BIMNet als PVDNet te trainen. Ze trainen eerst BIMNet en dan PVDNet terwijl ze de parameters van BIMNet vastzetten. Ze concluderen dat er in deze context geen gezamenlijke training van PVDNet en BIMNet nodig is omdat BIMNet al getraind is met een hoog kwalitatief blur-invariant loss.

Om de blur-invariante bewegings-inschatting te valideren tegenover de voorgaande State-of-the-Art, gebruiken de auteurs twee geavanceerde netwerken voor optische bewegings-inschatting, FlowNet2 en LiteFlowNet. 

Wanneer ze hier blurry afbeeldingen als input gaven, hebben de resultaten structurele artefacten. Het nieuwe model, BIMNet, daarentegen, heeft veel minder vervormingen.

Wanneer ze PVDNet een pixelvolume geven dat verkeerde meerderheidswaarden of geen meerderheidswaarden bevat, kan het nog steeds de performantie van het deblurring proces aanzienlijk verbeteren vergeleken met het gebruiken van een vervormde afbeelding .

Dit voorbeeld illustreert de situatie waar het pixel volume verkeerde informatie geeft wegens occlusie. Het netwerk kan dankzij het pixelvolume nog steeds een accurate beeldstructuur produceren, wat bewijst dat meerdere kandidaten in een pixelvolume nog steeds nuttige informatie geven aan een netwerk in dit extreme geval.

Concentreer u hier op het wiel van de auto in de video. Het gebruik van bewegingscompensatie verhoogt duidelijk de deblurring kwaliteit ten opzichte van het basismodel zonder bewegingscompensatie, maar het herstelt de fijne texturen niet volledig onder veel blur en beweging.

Aan de andere kant, dankzij de nieuwe blur-invariante bewegings-inschatting en het pixel volume, kan het netwerk robuust scherpe texturen herstellen onder stevige blur.

Deze componenten verbeteren niet alleen kwalitatief, maar ook de kwantitatieve prestaties.

Vooral voor de onscherpste 10% van de beelden wordt een drastische verbetering van het pixelvolume bereikt, evenveel als door toevoeging van conventionele bewegingscompensatie aan het basismodel.

Deze resultaten geven aan dat de de nieuwe voorgestelde componenten doeltreffend zijn voor de behandeling van ernstige blur.

Aangezien voor bewegingscompensatie extra parameters nodig zijn voor de bewegingsschatting, zou u zich kunnen afvragen hoe een groter deblurringmodel zonder de bewegingscompensatie zou presteren in vergelijking met een klein model met de bewegingscompensatie.

Het gebruik van de bewegingscompensatie blijkt veel voordeliger te zijn wanneer het model vergroot wordt.

Aangezien scherpe informatie niet altijd aanwezig is in naburige frames, is het gebruik van scherpe pixels in onscherpe frames veel doeltreffender bij het deblurren van video's, zoals te zien is in de video hierboven.

Kwalitatief gezien, levert de nieuwe methode ook de meest visueel aangename resultaten op.

Met name de single-image deblurring methode en video deblurring methode zonder bewegingscompensatie leiden tot een te smooth resultaat met een overgebleven blur.

Video-deblurring-methodes met bewegingscompensatie verwijderen blurs beter, maar slagen er nog steeds niet in fijne texturen te herstellen.

Dankzij de blur-invariante bewegingscompensatie is het wel mogelijk om scherpe fijne details nauwkeurig weer te geven. De methode herstelt ook fijne details effectief zonder vervormingen, zelfs in aanwezigheid van grote inter-frame beweging en onscherpte.

Nu bekijken we de resultaten op real-world beelden, om het generalisatievermogen tussen de methodes te meten.

Het nieuwe model herstelt duidelijk karakters met minder artefacten en meer succes, vergeleken met de single-image deblurring en en video deblurring zonder bewegingscompensatie,

En ook vergeleken met video deblurring met bewegingscompensatie.

Hier is nog een kwalitatieve vergelijking op de real-world video.

In vergelijking met andere state-of-the-art methoden slaagt de nieuwe methode er beter in uitdagende videoframes te herstellen.

Eigen tests en opinie

Zoals in het begin van de blogpost al vermeld, testten we ook zelf deze nieuwe techniek uit. Wat volgt zijn de resultaten van onze tests met de pre-trained models toegepast op zowel footage die we online vonden, als footage die we zelf opnamen.

De twee belangrijkste aspecten die blur veroorzaken zijn camera-beweging en object-beweging. Camera-beweging is gemakkelijk zelf te simuleren, maar voor object-beweging te testen kozen we om een youtube video te gebruiken, specifiek deze video van de Shibuya Crossing in Tokyo, waar zowel mensen als voertuigen op redelijke snelheid rondbewegen. We knipten uit de video van bijna een half uur enkele clips, in totaal één en een halve minuut. De clips waren 1920x1080 resolutie, en 24fps framerate. U ziet de input-clip hieronder.

Hieronder ziet u het resultaat side-by-side met de input. Het gebruikte pre-trained model is DVD, hetwelke getrained werd op Su et al.’s dataset. Het is belangrijk om op te merken dat de gebruikte input zowel camera- als object-beweging had, waardoer het zowiezo een uitdagende test is. De resultaten die de autheurs van de paper zelf toonden hebben vaak een van de twee, niet allebei.

Hier volgen enkele noemenswaardige resultaten.

In deze eerste, let op de tekst op de bus. De tekens zijn veel scherper en, mids men de taal kent, misschien zelfs leesbaar! Echt scherp is het niet, maar het is wel een duidelijke verbetering.
De auto is iets scherper
De contouren van de fietswielen zijn voller en meer consistent.
De auto is iets scherper, maar het verschil is klein.
De mensen zijn iets scherper, maar het verschil is nog steeds miniem.

Nu volgt een vergelijking tussen het voorgaande model, DVD, en een ander pre-trained model, NAH. 

Meer uitgesproken contour error in DVD dan NAH in dit specifieke geval, elk vooraf getraind model heeft gebieden waar het beter/slechter in is.

Voor camera-beweging filmden we zelf in ons labo een bank met een hoop spullen op. Hieronder vind je de inputvideo.

U ziet telkens een screenshot van de video met de handschoenen. Deze bleken een ideale test-case te zijn voor het deblurring. U kan met de pijlen de screenshot zonder labels bekijken, en vindt onder de screenshots de volledige videos terug.

We hebben de video gedownscaled naar een paar verschillende framerates en resoluties, en hieronder zie je de resultaten op deze verschillende input videos.

We probeerden ook alle 3 die pre-trained models op deze input-video. Je ziet hieronder een vergelijking tussen input en de drie resultaten.

En hieronder ziet u nog een selectie van enkele gevarieerde resultaten.

Conclusie

De resultaten van deze nieuwe paper zijn kwalitatief en kwantitatief een goede verbetering over voorgaande technieken. Aangezien VFX niet onze sterkste kant is, is het voor ons moeilijk in te schatten hoe effectief deze techniek in te passen is in uw individuele pipelines. U ziet hierboven een reeks resultaten, en zal waarschijnlijk op basis van hun kwaliteit hier zelf een veel betere inschatting in kunnen maken! De code is toegankelijk online, dus indien het er voor u de moeite waard uit ziet, kan u zeer snel zelf deze techniek uittesten. Mocht u vragen hebben, aarzel dan niet om contact met ons op te nemen!