Kísérletek különböző veszteségkonfigurációkkal a stílusátvitelhez
Sahil Singla
2017. augusztus 28. · 11 perc olvasás
Miközben részt vettem Jeremy Howard kiváló élvonalbeli mély tanulásában a kódolók számára, eléggé érdekelt a stílusátadás. Meg akartam vizsgálni, hogy a veszteségkonfiguráció megváltoztatása hogyan változtatja meg a létrehozott képet. És szerettem volna látni, hogy a különböző veszteségű hálózatok hogyan hozhatnak létre különböző képeket. Az általam használt különféle veszteség hálózatok a vgg-16 és a vgg-19. Ez egy blogbejegyzés a megállapításaimról.
Azok, akik nem ismerik a stílusátadást, elolvashatják ezt a bevezető blogbejegyzést a működéséről.
Az összes kísérletet a következő tartalmi és stílusú képek felhasználásával hajtották végre:
A kísérletekben használt összes képzett veszteség hálózatot letöltöttük a tenzorflow slim-model tárból. Hacsak nincs megadva, a kezdeti kép a tartalmi kép volt, és az előkészített hálózat vgg-16 volt. Futtassa, hogy mely rétegeket értem a conv1_2, conv2_2 stb. Alatt
ebben a repóban. Az összes következő kísérletet ebben a repóban megadott kód felhasználásával hajtottuk végre.
1. kísérlet: edzés stílusvesztés segítségével, egy rétegből
Ennek az 5 rétegnek a kimeneteit használtam a stílusveszteség kiszámításához: conv1_2, conv2_2, conv3_3, conv4_1, conv5_1. Kezdő kísérletként nulla értékre állítottam a tartalom és a tv súlyát, a képet inicializáltam „zajra”. És létrehozta a stílusképeket ezen rétegek mindegyikének felhasználásával (egyszerre egy réteget használva a stílusveszteség kiszámításához). A létrehozott stílusképeknek meg kell felelniük a festmény paszticháinak.
A következők voltak a kimenetek:
A korábbi rétegek kimeneteiben (conv1_2 és conv2_2) kiemelkedőek azok a minták a stílusképben, amelyek kisebb befogadó mezőt igényelnek (például a kávé színű háttér). A későbbi rétegekben (conv3_3 és conv4_1) a nagyobb minták hangsúlyosabbak. A conv5_1 kimenete inkább szemétnek tűnik. Azt hiszem, ennek az az oka, hogy nagyon kevés aktiválás aktív ennél a rétegnél. Tehát nem sokat járul hozzá a veszteséghez. És ugyanez látható az alábbi kezdeti veszteségekben.
A stilizált képek előállításához a conv3_3 értéket használtam a tartalomveszteség kiszámításához.
Amikor mind az 5 réteg súlyát 1-gyel egyenlőnek tartottam, a következők voltak a rétegenkénti tartalmi és stílusvesztési értékek, a kép „tartalomra” inicializálva:
Amikor mind az 5 réteg súlyát egyenlően tartottam, a következők voltak a rétegenként elosztott tartalom és stílusveszteség értékek, a kép „zajra” inicializálva:
Mint nyilvánvaló, a későbbi rétegek hozzájárulása a stílusvesztéshez mindkét esetben nagyon kicsi. És a stílusátadással kapcsolatos legtöbb publikált műben a súly minden réteggel megegyezik, aminek nincs értelme.
Ezután azt akartam megtudni, hogy milyen stilizált képek jönnek létre, ha csak ezen rétegek egyikével edzek.
Amint a fenti generált képekből kitűnik, az ecsetvonás mérete növekszik, amikor a conv1_2-ról a conv5_1-re lépünk. Van néhány furcsa minta a conv5_1 kimenetén. Valószínűleg azért, mert a conv5_1 nem tartalmaz sok információt (ennek a képnek a generálásához 1e6-mal kellett méreteznem ennek a rétegnek a veszteségét). Tehát ez csak zaj. A kedvenc kimenetem ezekből az 5-ből? kimenet a conv3_3-ból.
2. kísérlet: edzés egy-egy rétegből származó tartalomveszteség felhasználásával
A tartalomveszteség kiszámításához 3 réteg kimenetét használtam: conv2_2, conv3_3, conv4_1 egyenként.
Először megpróbáltam megtalálni azokat a képeket, amelyek a stílus súlyának és a tv súlyának 0-ra állításával készültek, és kiszámoltam a tartalmi rétegek mindegyikéből származó veszteséget, vagyis csak tartalomveszteséget.
Amint látható, amikor a conv2_2-ról a conv4_1-re haladunk, a magas szintű információk, például a Windows stb. Továbbra is rögzítésre kerülnek, de az alacsony szintű információk, például a szélek, sarkok stb.
Ezután létrehoztam a stilizált képeket (tartalom, stílus és tv-veszteség felhasználásával). Stílusvesztéshez a conv3_3 réteget használtam. Meg akartam nézni, hogyan változik a kép kimenete az előző kísérlet conv3_3 rétegéből, ha megváltoztatom a tartalmi rétegeket.
A következő képek készülnek:
Ismét, mint nyilvánvaló. Ahogy a conv2_2-ról a conv4_1-re haladunk, az épület szélei tompabbá, a színek halványabbá válnak. Sokkal kevesebb az eredeti tartalom.
3. kísérlet: Vonat a különböző rétegek stílusveszteségeinek felhasználásával a veszteséghálózat két max-pooling rétege között
Ezután azt akartam tudni, hogy a stílusveszteség kiszámításához két réteg (max. Pooling réteg) közötti különböző rétegek használata módosítja-e a létrehozott stilizált képet. Erre a célra a következő „conv3_1”, „conv3_2” és „conv3_3” rétegeket használtam.
A fentiek kimenetek, ha csak a stílusvesztést alkalmazó edzésre kerül sor. A conv3_3 kimenete teljesen eltér a conv3_1 és a conv3_2 kimenetétől.
Ezután megpróbáltam létrehozni a stilizált képet, felhasználva ezeket a rétegeket a stílusveszteség kiszámításához. A tartalom elvesztésére használt réteg conv2_2 volt.
A következő képeket generálták:
A conv3_1 és a conv3_3 között a fenti képen látható képalkotások (conv3_3 kimenet) fekete aláhúzásokkal lényegesen magasabbak. És érdekes módon, mivel a conv3_3 pasztái különböztek a conv3_1 és a conv3_2 pasztéitól. Így a létrehozott kép is.
4. kísérlet: Edzés különböző méretű stíluskép használatával
A conv2_2 réteg kimeneteit használtam a tartalomveszteség kiszámításához: conv2_2. A stílusvesztéshez a conv2_2 súlyt használtam 1. Az eredeti méretû (928x514) stíluskép helyett a képet úgy méreteztem át, hogy a rövidebb oldal megegyezzen egy adott mérettel, és a nagyobb méretet központosan levágtam egy négyzet kinyerésére. A kipróbált méretem 128, 256, 384 és 512 volt.
A következő képeket generálták:
Az alacsonyabb méretű stílusképekkel készített képek nem néznek ki jól, és nem is mutatják a stíluskép ecsetvonásait.
Ismét nyilvánvaló, hogy a stílus képének növekedésével a létrehozott kép sokkal jobban megragadja a festő ecsetvonásait.
5. kísérlet: Vonat készítése különböző vgg hálózatok (vgg16 és vgg19) használatával
Ezután generáltam a képeket a vgg16 és a vgg19 fájlokból. A tartalomveszteséget a conv2_2, a stílusvesztést a conv3_1 segítségével számoltuk ki.
Először csak a pasztákat generáltam (a tartalom és a tv súlya nulla). A következő paszták jöttek létre:
A keletkezett pástétomok alig különböztek egymástól. Tehát arra számítottam, hogy a stilizált kép alig különbözik egymástól, de teljesen tévedtem. Ezek voltak a létrehozott képek:
A vgg-19 használatával létrehozott kép sokkal jobban néz ki, sokkal jobban megragadja a tartalmat. Engem ez érdekelt, és úgy döntöttem, hogy a kép tartalmának elvesztését, stílusának elvesztését és teljes elvesztését ábrázolom, amint betanul.
Ennél is fontosabb, hogy a vgg-19 kezdő stílusvesztesége sokkal alacsonyabb volt, mint a vgg-16 esetében. Gondolom, a létrehozott képek eltérőnek bizonyulnak, mert a hálózat különböző „implicit” súlyokat ad a tartalom és a stílus veszteségeinek. Az „implicit” súlyok alatt azt értem, hogy a hálózat súlyokat ad a tartalom és a stílus veszteségeinek önmagában, nem az általam megadott tartalmi stílus és tv súlyok miatt.
Vegye figyelembe, hogy itt a vgg16 és a vgg19 különböző funkciókat jelöl. Így ez az összehasonlítás nem jelenti azt, hogy a „vgg-19” abszolút értelemben alacsonyabb lenne, mint a „vgg-16”. Ez csak azt jelzi, hogy a kép optimalizálása közben a vgg-16 stílusvesztése sokkal nagyobb jelentőséget kap.
Megjegyzés: - A következő kísérletekhez a (6,7,8) tartalomveszteséget a conv2_2, a conv3_1 stílusveszteségének felhasználásával számoltuk ki.
6. kísérlet: Vonat készítése különböző inicializálással („zaj”/„tartalom”)
- A diétás italok segítenek a fogyásban? Nem világos a tudomány és a társadalom irodája - McGill Egyetem
- Eva Longoria felfedi a baba utáni étrendet, a fitneszet, a fogyás stílusát; Élő
- Egyedül a testmozgás nem okoz fogyást - írja a Science The Guardian
- Kreatin- és zsírvesztés - a tények - AST Sporttudomány
- Köszvény és fogyás - Kísérletek a köszvény elleni küzdelemben