Basic Theory | Neural Style Transfer #2

Aleksa Gordić - The AI Epiphany
23 Mar 202015:20

Summary

TLDRDieses Videotutorial führt in die Theorie des neuronalen Stiltransfers ein, eine Technik, die es ermöglicht, die Ästhetik eines Bildes auf ein anderes zu übertragen. Es bietet einen Überblick über die Serie, die sich auf statische Bilder und Videos, sowie auf erweiterte Theorie und praktische Anwendungen konzentriert. Der Schwerpunkt liegt auf der Verwendung von CNNs und der Erstellung von Style-Images, wobei auch das Trainieren eigener Modelle und die Anwendung auf Segmente von Bildern und Videos erläutert wird.

Takeaways

  • 🎨 Dieser Video-Serie widmet sich dem Thema des neuronalen Stiltransfers und zeigt, wie man dieses Verfahren anwendet.
  • 📹 Die Serie umfasst fünf Videos, die von grundlegender Theorie bis hin zu fortgeschrittenen Techniken und Modelltraining reichen.
  • 🖼 Der Schwerpunkt liegt auf statischen Bildern und Videos, wobei auch die Verwendung von CNNs und anderer Modelle für den Stiltransfer besprochen wird.
  • 👨‍🏫 Der Ersteller der Serie möchte die Inhalte praxisorientiert gestalten und nur Python und ein oder zwei Frameworks verwenden, um die Komplexität zu reduzieren.
  • 🔗 Der Code für die Serie wird über GitHub bereitgestellt, um es einfach zu machen, die Umgebung zu klonen und loszulegen.
  • 🖌 Der Stiltransfer ist ein Prozess, bei dem ein Inhaltsbild und ein Stilbild kombiniert werden, um ein neues Bild mit dem Stil des zweiten Bildes zu erzeugen.
  • 🎨 Es gibt zwei Arten von Stiltransfer: künstlerischer Stiltransfer und photorealistischer Stiltransfer.
  • 📈 Der neuronale Stiltransfer begann 2015 mit der Veröffentlichung der VGG-Netzwerkarchitektur, die es ermöglichte, Inhalt und Stil in einem CNN zu decouplen.
  • 🔍 Die Inhaltsdarstellung eines Bildes wird durch die Feature-Maps bestimmter Layer eines CNNs wie VGG erfasst.
  • 🎭 Die Stildarstellung eines Bildes wird durch Gram-Matrizen der Feature-Maps bestimmter Layer des CNNs erfasst, die die Aktivierungsmuster zwischen verschiedenen Feature-Maps beschreiben.
  • 🔄 Der Gesamtverlust im neuronalen Stiltransfer ist eine Kombination aus Inhalts- und Stilverlust, wobei das Ziel ist, ein Bild zu erzeugen, das sowohl den Inhalt des Inhaltsbildes als auch den Stil des Stilbildes aufweist.

Q & A

  • Was ist das Hauptthema der Videoserie, aus der dieses Skript stammt?

    -Das Hauptthema der Videoserie ist das neuronale Stiltransfer, wobei es sich auf die Grundlagen des Theorie und die praktische Umsetzung von Stiltransfer in Bildern und Videos konzentriert.

  • Welche Methoden werden in der dritten Videoserie behandelt?

    -In der dritten Videoserie werden statische Bildneurale Stiltransfermethoden behandelt, die das Optimierungsverfahren L-BFGS oder andere numerische Optimierer verwenden.

  • Was verspricht der Ersteller für die zweite Hälfte der Serie?

    -Die zweite Hälfte der Serie wird sich auf Videos konzentrieren, einschließlich grundlegender Anwendungen pro Frame ohne zeitlichen Verlust sowie der Integration von zeitlichen Verlusten in die Modelle für stabilere Ergebnisse.

  • Welche Programmiersprache und Frameworks werden in der Serie verwendet?

    -Die Serie verwendet Python als Programmiersprache und PyTorch als Framework. Es wird bewusst darauf geachtet, die Komplexität gering zu halten und keine systemabhängigen Skripte oder exotische Sprachen wie Lua oder Frameworks wie TensorFlow zu verwenden.

  • Wie wird der Code der Serie für die Teilnehmer zur Verfügung gestellt?

    -Der Code wird über das GitHub-Repository des Erstellers geteilt, sodass die Teilnehmer einfach den Code klonen, die Umgebungsdatei verwenden und sofort mit dem Experimentieren beginnen können.

  • Was ist der Unterschied zwischen klassischem Stiltransfer und neuronalem Stiltransfer?

    -Klassisches Stiltransfer verwendet Signalverarbeitungstechniken und Filter, während neuronales Stiltransfer neuronale Netze nutzt. Das neuronale Stiltransfer begann 2015 und übertrifft alle zuvor entwickelten Ansätze.

  • Wie wurde die Idee des neuronalen Stiltransfers in der Forschung entwickelt?

    -Die Idee des neuronalen Stiltransfers wurde in einer 2015 veröffentlichten Forschungsarbeit von Gatys et al. entwickelt, die zeigte, dass Inhalt und Stilrepräsentationen in einer CNN-Architektur, speziell in VGG, getrennt werden können.

  • Was ist die Funktion von Gram-Matrizen im Kontext des Stiltransfers?

    -Gram-Matrizen repräsentieren den Stil einer Bildes, indem sie die Kovarianz zwischen verschiedenen Feature-Maps einer Ebene berechnen. Dies hilft, die Texturinformationen und die Aktivierungsmuster der Stilbilder zu erfassen.

  • Wie wird der Gesamtverlust in einem neuronalen Stiltransfer definiert?

    -Der Gesamtverlust ist eine Kombination aus Inhaltsverlust und Stilverlust. Der Inhaltsverlust stellt sicher, dass der generierte Stilbild dieselbe Inhaltsrepräsentation wie das Originalbild hat, während der Stilverlust sicherstellt, dass es die gleiche Stilrepräsentation wie das Stilbild hat.

  • Was ist das Ziel des Optimierungsprozesses im neuronalen Stiltransfer?

    -Das Ziel des Optimierungsprozesses ist es, ein Bild zu erzeugen, das sowohl den Stil des Stilbildes als auch den Inhalt des Inhaltsbildes aufweist, um ein kompromißloses Ergebnis zu erzielen, das visuell ansprechend ist.

Outlines

00:00

🎨 Einführung in die Videoreihe über neuronale Stilübertragung

Dieses Video ist der zweite Teil einer Serie, die sich mit neuronaler Stilübertragung befasst. Der Ersteller möchte in diesem Teil die grundlegenden Theorien der neuronalen Stilübertragung erklären. Zunächst gibt er einen Überblick über die gesamte Serie, die sich auf die Übertragung von Stilen auf statische Bilder und Videos konzentrieren wird. Es wird auch die Verwendung von CNNs und die Erstellung eigener Modelle zur Stilanpassung behandelt. Der Schwerpunkt liegt auf der Verwendung von PyTorch und Python, um die Komplexität gering zu halten und den Fokus auf die praktische Anwendung zu legen. Der Code wird über GitHub geteilt, um es einfach zu machen, die Umgebung zu klonen und loszulegen. Der Hauptzweck des Videos ist es, das eigentliche Ziel der neuronalen Stilübertragung zu definieren: das Kombinieren von Inhalts- und Stilbildern zu einem neuen, stilisierten Bild.

05:00

🔬 Grundlagen der neuronalen Stilübertragung

In diesem Abschnitt wird die Geschichte der Stilübertragung bis hin zur Entwicklung der neuronalen Stilübertragung (NST) erläutert. Der Fokus liegt auf der Arbeit von Gatys et al., die 2015 mit ihrer Publikation über die Algorithmus der künstlerischen Stilübertragung einen Durchbruch erzielten. Sie entdeckten, dass Inhalt und Stil in der CNN-Architektur getrennt werden können. Die VGG-Netzwerke, die auf dem ImageNet-Datensatz trainiert wurden, spielen eine Schlüsselrolle bei der Erstellung von Inhalts- und Stilrepräsentationen. Der Inhalt wird durch die Feature Maps bestimmter Layer des CNNs erfasst, während die Stilrepräsentation durch die Gram-Matrizen der Feature Maps gewonnen wird. Die Verwendung von L-BFGS als Optimierungsmethode wird auch kurz vorgestellt, die eine schnellere Konvergenz als atomare Optimierer zeigt.

10:01

🎭 Erfassung des Stils einer Bilds

Dieser Teil des Videos konzentriert sich auf die Methodik zur Erfassung des Stils eines Bildes. Es wird erklärt, wie man die Style-Repräsentation eines Bildes erhält, indem man es durch ein CNN wie das VGG-Netzwerk gibt und die Gram-Matrizen der Feature Maps von bestimmten Layern verwendet. Die Gram-Matrix ist eine Kovarianzmatrix, die die Beziehungen zwischen den Feature Maps aufzeigt und somit den Textur- und Stilaspekt des Bildes erfasst. Der Style Loss wird als gewichteter Durchschnitt der MSE-Verluste für jede Ebene des CNNs berechnet. Es wird auch eine Animation gezeigt, die veranschaulicht, wie sich das Eingabe-Noise-Bild verändert, um den Stil des Eingabe-Stilbildes zu erfassen, während es den Inhalt des Eingabe-Inhaltsbildes beibehält.

15:01

📺 Zusammenfassung und Ausblick

Schließlich wird die gesamte Theorie und Technik der neuronalen Stilübertragung, die im Video vorgestellt wurden, zusammengefasst. Es wird betont, dass das Ziel der Übertragung darin besteht, ein Ergebnis zu erzielen, das sowohl die Stildarstellung des Stilbildes als auch die Inhaltsrepräsentation des Inhaltsbildes aufweist. Eine Animation zeigt, wie sich das Ergebnisbild entwickelt, bis es dem gewünschten Ergebnis entspricht. Der Sprecher fordert die Zuschauer auf, das Video zu liken und zu abonnieren, um das nächste Video nicht zu verpassen.

Mindmap

Keywords

💡Neural Style Transfer

Neural Style Transfer ist eine Technik, die es ermöglicht, die visuelle Stilmerkmale einer Bildes auf ein anderes Bild zu übertragen. Im Video wird diese Methode verwendet, um ein Bild in einen künstlerischen Stil zu verwandeln, wobei die Inhaltsdarstellung eines Bildes beibehalten wird, während der Stil eines anderen Bildes übernommen wird. Dies wird durch das Minimieren eines Verlustes erreicht, der aus der Kombination aus Inhalts- und Stilverlust besteht.

💡Content Representation

Die Inhaltsdarstellung bezieht sich auf die semantischen Merkmale eines Bildes, die bei der Stilübertragung erhalten bleiben sollen. Im Kontext des Videos wird die Inhaltsdarstellung durch die Feature Maps eines bestimmten Layers einer CNN, wie zum Beispiel VGG, dargestellt. Diese Feature Maps werden verwendet, um die Inhaltsdarstellung des Inhaltsbildes zu erfassen und sicherzustellen, dass das resultierende Bild die gleiche Semantik wie das ursprüngliche Inhaltsbild hat.

💡Style Representation

Die Stildarstellung bezieht sich auf die visuellen Stilmerkmale eines Bildes, die kopiert werden sollen. Im Video wird die Stildarstellung durch Graham-Matrizen erfasst, die aus den Feature Maps mehrerer CNN-Schichten gebildet werden. Diese Matrizen helfen, die texturellen Merkmale des Stilbildes zu erfassen und werden verwendet, um sicherzustellen, dass das resultierende Bild die gleichen Stilmerkmale wie das Stilbild hat.

💡Gram Matrix

Eine Graham-Matrix ist ein Werkzeug, das verwendet wird, um die Stildarstellung eines Bildes zu erfassen. Sie ist eine Kovarianzmatriz, die die Beziehungen zwischen den Feature Maps in einem bestimmten Layer der CNN beschreibt. Im Video wird die Graham-Matrix verwendet, um die texturellen Merkmale des Stilbildes zu erfassen und zu bestimmen, welche Feature Maps in Kombination aktiviert werden.

💡Content Loss

Der Inhaltsverlust ist ein Konzept in der Neuralen Stilübertragung, das verwendet wird, um die Ähnlichkeit des Inhalts des resultierenden Bildes mit dem Inhaltsbild zu messen. Im Video wird der Inhaltsverlust durch das Minimieren der Abweichung zwischen den Feature Maps des resultierenden Bildes und des Inhaltsbildes definiert, um sicherzustellen, dass der Inhalt des resultierenden Bildes dem des Inhaltsbildes entspricht.

💡Style Loss

Der Stilverlust ist ein Maß für die Ähnlichkeit des Stils des resultierenden Bildes mit dem Stilbild. Im Video wird der Stilverlust durch das Minimieren der Abweichung zwischen den Graham-Matrizen des resultierenden Bildes und des Stilbildes definiert. Dies hilft, sicherzustellen, dass das resultierende Bild die gleichen texturellen Merkmale wie das Stilbild hat.

💡Total Loss

Der Gesamtverlust ist eine Kombination aus Inhaltsverlust und Stilverlust, die verwendet wird, um die Qualität der Neuralen Stilübertragung zu bewerten. Im Video wird der Gesamtverlust minimiert, um ein Bild zu erzeugen, das sowohl den Inhalt des Inhaltsbildes als auch den Stil des Stilbildes aufweist.

💡Optimization Method

Eine Optimierungsmethode ist ein Verfahren, das verwendet wird, um den Gesamtverlust in der Neuralen Stilübertragung zu minimieren. Im Video werden verschiedene Optimierungsmethoden wie L-BFGS oder Atom-numerische Optimierer genannt, die verwendet werden können, um das resultierende Bild zu finden, das den gewünschten Stil und Inhalt aufweist.

💡VGG Network

Das VGG-Netzwerk ist ein tiefes konvolutives neuronales Netz, das im Video verwendet wird, um die Feature Maps für die Inhalts- und Stildarstellung zu extrahieren. Es ist ein bekanntes Modell, das auf dem ImageNet-Datensatz trainiert wurde und für die Bildklassifizierung und Objektlokalisierung verwendet wird. Im Video wird das VGG-Netzwerk dazu verwendet, die semantischen und texturellen Merkmale der Bilder zu erfassen, die für die Stilübertragung relevant sind.

💡Feature Maps

Feature Maps sind eine Ausgabe von Convolutional Layers in einem CNN, die Informationen über die Struktur und Merkmale eines Bildes enthalten. Im Video werden Feature Maps aus dem VGG-Netzwerk verwendet, um sowohl die Inhalts- als auch die Stildarstellung eines Bildes zu erfassen. Jede Feature Map kann als ein Bild interpretiert werden, das entweder low-level Details wie Kanten oder high-level Details enthält, abhängig von der Layer, aus dem sie extrahiert werden.

Highlights

Introduction to the video series on neural style transfer, focusing on both theory and practical application.

Overview of the series, with a focus on static image style transfer in the first part and video style transfer in the second.

Explanation of the basic theory behind neural style transfer, including content and style representation.

Discussion on the use of optimization methods like L-BFGS for static image neural style transfer.

Introduction to the concept of artistic style transfer versus photorealistic style transfer.

Historical context of style transfer, from signal processing techniques to the advent of neural style transfer.

The pivotal 2015 paper by Gatys et al. that introduced the concept of decoupling content and style within a CNN architecture.

Description of the VGG network's role in feature extraction for content representation.

Visualization of feature maps to understand how they represent content at different levels of abstraction.

Demonstration of how a Gaussian noise image can be transformed into a stylized image through optimization.

Explanation of the content loss calculation and its role in matching the content representation of two images.

Introduction to the concept of capturing style through Gram matrices and their significance in style representation.

Insight into how Gram matrices work by showing covariance between feature maps.

Animation demonstrating the optimization process where the style of one image is transferred to another.

Final explanation of the total loss as a combination of content and style loss in neural style transfer.

Conclusion of the video with a summary of the neural style transfer process and a call to action for viewers.

Transcripts

play00:00

welcome to the second video in this

play00:01

video series owner old style transfer

play00:03

where are you gonna learn how to do this

play00:05

and let's jump into the video so this

play00:10

video will give you deeper understanding

play00:12

of the basic neuro Starr transfer theory

play00:15

but before I go there I'd like to give

play00:18

you an overview of the whole series if

play00:21

you only came for this video feel free

play00:22

to skip directly to it so let's start so

play00:28

last video was more of a teaser of

play00:31

showing you all the things that mural

play00:33

style transfer can actually do and as I

play00:36

already mentioned this one will be about

play00:38

basic theory and the third one will be

play00:41

about static image neural style transfer

play00:43

using the optimization method l-bfgs or

play00:48

atom numerical optimizers whatever so

play00:51

and and in general the first part of the

play00:55

series will focus on static image style

play00:57

transfer whereas the second part will

play01:00

focus on videos and fourth will be the

play01:04

second the app index pretty much to this

play01:06

video on a more advanced and euro style

play01:09

transfer theory and fifth one will focus

play01:12

on so not using the optimization method

play01:15

but using CNN's you're just plugging an

play01:18

image input as an input and you get a

play01:20

stylized image ah and I'm also gonna

play01:24

teach you how to train your own models

play01:26

so that you can use different styles

play01:30

then we'll talk a little bit about

play01:33

segmentation which will help you stylize

play01:36

only certain portions of the of the

play01:39

image and then we'll jump into the

play01:43

videos part starting with primitive

play01:45

video where we're gonna learn how to

play01:48

apply it

play01:49

on a per frame basis without using any

play01:51

temporal loss but then we'll start using

play01:54

including the temporal loss itself

play01:56

inside the models and we'll get much

play01:59

more stable model there and the output

play02:03

also of course the tenth we'll focus on

play02:06

training those models and the last one

play02:09

in this series will be about going

play02:11

in general like try and use some some

play02:14

other family of models like mobile nets

play02:17

efficient nets some state-of-the-art

play02:19

models and see if that gives us better

play02:22

results in general next off I want to

play02:26

tell you more about what I want this

play02:28

series to actually be so I want to be a

play02:31

code heavy it's gonna be really

play02:33

practical and except for this video and

play02:37

the advanced theory one and I want to

play02:40

keep it simple I want to only use part

play02:42

or two the framework and Python as a

play02:44

programming language so no dual boots

play02:46

new system dependent scripts no exotic

play02:50

languages such as Lua absolute framework

play02:52

such as tort or cafe and no tensorflow

play02:55

even though it's still relevant

play02:57

especially with a 2.0 version but I just

play03:00

want to pick one and I think my torque

play03:02

is winning the battle and it's much more

play03:05

it's nicer to you write in code will be

play03:08

shared through my github repo so you

play03:10

have you can just I wanna make it I

play03:13

wanna make it really simple you can just

play03:15

get clone my repo create the environment

play03:18

file clean environment using my

play03:21

environment file and that's it you can

play03:22

start playing straight ahead so that's

play03:24

the end of the series overview now let's

play03:26

jump straight ahead into the video

play03:29

itself and let me start off with

play03:30

defining what the actual task will will

play03:34

be so we get one image as as the first

play03:37

input which contains the content that we

play03:39

want to preserve we get a second image

play03:42

which has the style that we want to

play03:45

transfer to this content image we

play03:47

combine them where the plus denotes

play03:49

neural style trends transfer transform

play03:52

and what we get out is a composite image

play03:55

that's a stylized version of the content

play03:58

image and that's it that's a task next

play04:02

up let's see two basic types of style

play04:05

transfer and the first one is the one

play04:09

I'll be showing you in this video series

play04:11

it's the artistic style transfer where

play04:13

the where the style imagery we want to

play04:16

use is actually artistic image can be

play04:21

either a cartoonish and drawings

play04:22

painting whatever

play04:25

and the second type of style transfer is

play04:27

a photo realistic style transfer where

play04:29

both the damages are actually real and

play04:32

we try to just just mimic the style of

play04:35

the of one of these onto another and get

play04:39

a composite image out as you can see

play04:40

here on the screen so I thought you'd be

play04:44

worth including some history here and

play04:46

basically there's a difference between a

play04:49

style transfer a neural style transfer

play04:51

style transfer is something that's been

play04:53

going on for decades now already and

play04:55

neural style transfer is just the same

play04:57

thing but using neural neural nets and

play05:00

it all started in natives pretty much

play05:02

where people were using simple signal

play05:06

processing techniques and filters to to

play05:09

get a stylized images out like the one

play05:11

you see here and then in 2000 they

play05:15

started applying patch based methods

play05:17

like the one here called image knowledge

play05:19

is where you need to have image pairs so

play05:22

the contact image and the stylist

play05:24

version and then given the new content

play05:26

image you can stylize it the same as the

play05:29

pair that was previously given and this

play05:32

method gave some decent results but only

play05:35

in 2015 did we get to the neural style

play05:39

transfer ie applying commnets

play05:43

to do the same thing of transferring and

play05:45

it outperformed every other approach

play05:47

previously developed and now to decor

play05:51

NST algorithm itself so where it all

play05:55

started it all started in 2015 where

play05:58

long gages and his colleagues through

play06:01

this research paper titled I knew rule

play06:03

algorithm of artistic style and what the

play06:07

key finding of the paper was is that the

play06:10

content and the style representations

play06:12

can be decoupled inside a CNN

play06:14

architecture and specifically a bgg not

play06:18

played a key role in this in this paper

play06:21

and you can see the architecture on the

play06:24

screen a bit more detail on the vdg

play06:27

network itself so it was trained on the

play06:31

image net data set for the tests of

play06:34

image classification and object

play06:36

localization

play06:38

but it actually wasn't a winner on that

play06:41

year's classification challenge it was a

play06:44

first runner up the first nail

play06:45

productivity the one the competition was

play06:48

Google Matt or Google Leonard but vdg

play06:51

did one the localization task let's see

play06:55

what ovg had in this honesty paper so it

play07:01

helped create a rich and robust

play07:05

representation of the semantics of the

play07:07

input image so how we find the counter

play07:09

representation is the following we take

play07:12

some images in them but we feed it

play07:14

through the CNN the vgg not here and we

play07:18

take the feature maps from a certain

play07:20

layer like let's say a comp for one and

play07:23

those future maps are what represents

play07:26

the content of the input image and it's

play07:29

really that easy and just for the sake

play07:31

of making feature maps less abstract

play07:33

let's see how they actually look like

play07:35

for this concrete image for this line

play07:37

image and you can see why they're called

play07:40

future maps they can basically be

play07:42

interpreted as images and they contain

play07:45

either a low-level details such as edges

play07:48

stuff like that or high-level details

play07:51

depending from which layer of the vgg

play07:54

net or in general CNN do you extract

play07:56

them out okay and now for the fun part

play07:58

so let's take a Gaussian noise image

play08:02

which will eventually become the

play08:03

stylized image that we want and feed it

play08:06

through the bgg and we'll get its

play08:09

contour representation which is

play08:10

currently rubbish but let's see how we

play08:13

can drive it so that it has the same

play08:15

representation as the input image so we

play08:18

get those two images in zimba we feed

play08:21

them through the vgg and we get their

play08:24

feature maps which are as I already

play08:26

mentioned the content representation the

play08:28

current content representation of those

play08:31

two images we we can flatten those

play08:34

feature maps so each feature map becomes

play08:36

a row and this output matrix and now we

play08:39

need to drive those P and F matrices to

play08:43

be the same and we accomplished there

play08:45

using this loss which is a simple MSU

play08:49

lost where you adjust

play08:51

take a element-wise subtraction and we

play08:53

do element wise squaring on those

play08:56

elements and we just try and drive that

play08:58

that loss to zero I would try to

play09:01

minimize it and now for the really fun

play09:05

part and we'll don't see what happens

play09:08

when we drive the last down to zero and

play09:10

I'll just give you a couple of seconds

play09:12

to watch the animations so what you can

play09:19

see on the screen is on the left side

play09:21

you see what happens when the you see

play09:23

that the F matrix is getting closer to

play09:25

the P matrix which is equivalent to the

play09:27

last getting down to zero and on the

play09:30

right you can see the optimization

play09:31

procedure itself nice image becoming

play09:34

slowly becoming the input image the

play09:37

bottom animation is just the whole

play09:39

optimization procedure whereas the upper

play09:42

animation is just the initial part of

play09:44

the optimization procedure in a slow

play09:46

mode because it happens really fast

play09:48

using l-bfgs optimizer but you can see

play09:52

on the next screen is that the l-bfgs is

play09:55

much more is much faster than the atom

play09:58

optimizer and only hundred creations

play10:00

l-bfgs already seems to be a morphing

play10:04

this nice image into content image

play10:06

whereas atom is only just beginning to

play10:08

do that now for the second most

play10:10

important idea in this video and that's

play10:13

how do we capture the style of an image

play10:15

so how do we find its style

play10:17

representation so we have this styled

play10:21

image input style image we feed it

play10:24

through this v2g net and we get a set of

play10:27

feature maps this time taking those from

play10:30

starting from layer cam 1 1 and going

play10:33

through layer count Phi 1 and what we do

play10:36

is we construct this feature space over

play10:39

these feature maps using something

play10:42

called Graham transform so we create

play10:46

Graham matrices out of those feature

play10:48

maps and the set of those Graham

play10:51

matrices is what ultimately represents

play10:53

the style for image or let's call it the

play10:58

styler presentation and now you might

play11:00

ask what's what's a gray matrix and

play11:02

that's a legit question

play11:04

so I took a style image as an input I

play11:07

fed it through the vgg and from one of

play11:09

those layers I constructed a gram matrix

play11:12

and this is how it looks like this is

play11:14

exactly how it looks like and it answers

play11:17

an important question and that which

play11:19

feature maps tend to activate together

play11:21

we already saw how the feature maps look

play11:25

like and in one of the previous slides

play11:27

and now we have an answer to this

play11:30

question so it's a simple covariance

play11:33

matrix between different feature maps

play11:35

and the way we calculate an element in

play11:38

this matrix is by just doing a dot

play11:41

product between two feature maps and

play11:43

that just captures the the texture

play11:46

information as it turns out let me give

play11:50

you some more intuition behind why

play11:51

Graham matrix actually works so here's a

play11:55

hypothetical example where on the upper

play11:57

row we have a hypothetical output three

play12:00

feature maps and on the bottom row the

play12:02

same thing or just for some other input

play12:05

image and if we would take element wise

play12:08

subtraction between those two rows would

play12:10

get a nonzero output which means we have

play12:13

a nonzero common loss which means that

play12:17

the input images have different

play12:18

semantics right different content so the

play12:21

dog is upside down on the bottom row but

play12:24

on the other hand if you take a look on

play12:26

the right side you'll see that the grand

play12:28

matrices are actually the same which

play12:31

means that the two input images are

play12:33

stylized in the same manner which is

play12:35

kind of true if you take a look at it

play12:36

and the style loss will be 0 because

play12:40

that so let's make it more explicit how

play12:42

we calculate the style loss so we have

play12:45

the inputs all image we have the input

play12:47

noise image we feed them through a VG

play12:50

we'll get a set of feature maps here I

play12:52

am only showing for simplicity just one

play12:54

set of feature maps we construct gram

play12:58

matrices over those feature Maps and

play13:00

what we do is just a simple MSE loss

play13:03

again which is just a element-wise

play13:06

subtraction followed by element wise

play13:08

squaring and the final style loss is

play13:13

actually just weighted sum of those

play13:14

terms for every layer in the

play13:18

and that's it now I'll do the same thing

play13:20

is a different pecan image let's see

play13:23

what happens when the style or

play13:24

presentation of the input noise image

play13:26

becomes the same as the style

play13:28

representation of the input style image

play13:29

and I'll give you a couple of seconds to

play13:32

just watch the animations watch closely

play13:37

and you can see there's a spike there so

play13:40

what happens is on the left side G

play13:43

represents the set of grand matrices of

play13:46

the input noise image and a represents

play13:49

the set of Grammy toeses of the input

play13:51

style image and as they are getting

play13:53

closer to each other on the right side

play13:56

you can see an animation where an input

play13:58

noise image initially input noise image

play14:01

is slowly becoming stylized it's

play14:04

capturing the style of the simple style

play14:06

image although it's district

play14:08

disregarding the semantics it's just

play14:11

capturing the style that's it

play14:12

and now putting it all together so the

play14:14

total loss is away a combination of a

play14:17

con loss and the style loss and what it

play14:21

basically says is the following we want

play14:23

the input noise image they have the same

play14:25

style of presentation as input style

play14:27

image and you have the same content

play14:30

representation as the input können image

play14:32

and that objective might not be fully

play14:35

minimized because a there does not exist

play14:38

a solution or B we cannot find a

play14:41

solution but still we'll get a visual

play14:43

appear instead we want and just take a

play14:46

look at the animation here and the line

play14:51

is slowly appearing in that style image

play14:55

and we are getting the composite image

play14:57

out that we and that was there was like

play14:58

the whole point of this video so that's

play15:01

it for the second video if you like my

play15:02

content consider subscribing

play15:05

gently push that like button

play15:07

and seeing the next video

play15:09

[Music]

Rate This

5.0 / 5 (0 votes)

Related Tags
Neurale NetzeStilübertragungVGG-NetzOptimierungl-BFGSCNNPythonPraxisanleitungGit-RepoVideo-Tutorial
Do you need a summary in English?