GitHub - janticDeOldify Egy mély tanuláson alapuló projekt a régi képek (és

A GitHub több mint 50 millió fejlesztőnek ad otthont, amelyek együttesen működnek együtt kódok befogadásában és felülvizsgálatában, projektek kezelésében és szoftverek építésében.

tanuláson

A GitHub az, ahol a világ szoftvereket épít

Fejlesztők és vállalatok milliói építik, szállítják és tartják karban szoftverüket a GitHubon - a világ legnagyobb és legfejlettebb fejlesztői platformján.

Használja a Git vagy a checkout SVN használatát a web URL segítségével.

Dolgozzon gyorsan a hivatalos CLI-vel. Tudj meg többet.

A GitHub Desktop elindítása

Ha nem történik semmi, töltse le a GitHub Desktop alkalmazást, és próbálja újra.

A GitHub Desktop elindítása

Ha nem történik semmi, töltse le a GitHub Desktop alkalmazást, és próbálja újra.

Az Xcode elindítása

Ha semmi sem történik, töltse le az Xcode-ot és próbálja újra.

A Visual Studio elindítása

Legutóbbi elkötelezettség

Git statisztika

Fájlok

Nem sikerült betölteni a legfrissebb végrehajtási információkat.

README.md

Gyors indítás: A képek színezésének legegyszerűbb módja a DeOldify használatával (ingyen!): DeOldify Image Colorization on DeepAI

A legfejlettebb A DeOldify képszínezés változata kizárólag itt érhető el. Próbáljon ki néhány képet ingyen! MyHeritiage In Color

Kép (művészi) | Videó

ÚJ Gondjai vannak az alapértelmezett képszínezővel, más néven "művészi"? Próbálja ki a lenti "stabil" -t. Általában nem fog olyan érdekes színeket produkálni, mint a "művészi" színek, de a hibák jelentősen csökkennek.

A fenti Colabs használatára vonatkozó útmutatásokat Old Ireland írta video oktató formában a Colour's John Breslin-ben. Ez nagyszerű! A megtekintéshez kattintson az alábbi videoképre.

További frissítéseket kaphat a Twitteren .

Tartalomjegyzék

  • A DeOldify-ról
  • Példa videók
  • Példa képek
  • Olyan dolgok, amelyeknek valószínűleg egy papírban kell lenniük
    • Hogyan lehet stabil videót elérni
    • Mi a NoGAN?
  • Miért három modell?
  • Műszaki információk
  • Előre menni
  • Saját kezdés
    • A legkönnyebb megközelítés
    • Saját gép
  • Dokkmunkás
  • Előretolt súlyok

Egyszerűen fogalmazva, a projekt küldetése a régi képek és filmfelvételek színezése és helyreállítása. Kicsit belemerülünk a részletekbe, de először nézzünk meg néhány csinos képet és videót!

Új és izgalmas dolgok a DeOldify-ban

  • A hibákat és a műtárgyakat szinte teljesen megszüntetik
  • Jobb bőr (kevesebb zombi)
  • Részletesebb és fotorealisztikusabb megjelenítések
  • Sokkal kevesebb "kék elfogultság"
  • Videó - valójában jól néz ki!
  • NoGAN - egy új és furcsa, de nagyon hatékony módszer a kép-kép GAN-képzés elvégzésére.

Jegyzet: Kattintson a megtekinteni kívánt képekre

Facebook F8 Demo

Némafilmes példák

Dorothea Lange (migráns anya) (1936)

Nő pihen a nappaliban Svédországban (1920)

Jimmy Sime "Toffs and Toughs" (1937)

Hálaadás maszkolói (1911)

Glen Echo Madame Careta cigánytábor Marylandben (1925)

- Mr. és Mrs. Lemuel Smith és kisebb gyermekeik a tanyasi házukban, Carroll megyében, Georgiában. (1941)

"Az Arany Kapu-híd építése" (est 1937)

Jegyzet: Amire kíváncsi lehet, hogy ez a megjelenítés hűvösnek tűnik, pontosak-e a színek? Az eredeti fotó bizonyosan úgy néz ki, hogy a híd tornyai fehérek lehetnek. Megvizsgáltuk ezt, és kiderült, hogy a válasz nemleges - a tornyokat ekkorra már vörös alapozó borította. Tehát ezt érdemes szem előtt tartani - a történelmi pontosság továbbra is hatalmas kihívás!

"Terrasse de café, Párizs" (1925)

Norvég menyasszony (az 1890-es évek végén)

Zitkála-Šá (Lakota: Vörös madár), más néven Gertrude Simmons Bonnin (1898)

Kínai ópiumdohányzók (1880)

Olyan dolgok, amelyeknek valószínűleg egy papírban kell lenniük

Hogyan lehet stabil videót elérni

A NoGAN-képzés elengedhetetlen ahhoz, hogy stabil és színes képeket kapjunk a DeOldify ezen iterációjában. A NoGAN képzés ötvözi a GAN képzés előnyeit (csodálatos színezés), miközben kiküszöböli a csúnya mellékhatásokat (például a videóban villogó tárgyak). Ha hiszed, ha nem, a videó elkülönített képgenerálás segítségével jelenik meg, anélkül, hogy bármiféle időbeli modellezést folytatnának. A folyamat 30-60 percet hajt végre a "NoGAN" edzés GAN részéből, az imagenet adatok 1-3% -át használva fel egyszer. Ezután, mint az állóképek színezésénél, az egyes képkockákat is "DeOldify" -ként készítjük el, mielőtt újraépítenénk a videót.

A jobb video-stabilitás mellett itt egy érdekes dolog zajlik, amelyet érdemes megemlíteni. Kiderült, hogy az általam futtatott modellek, méghozzá másképp és eltérő képzési struktúrákkal, folyamatosan többé-kevésbé ugyanazt a megoldást kapják. Ez a helyzet még azoknak a színeknek a színezésére is, amelyekről azt gondolhatja, hogy önkényesek és felismerhetetlenek, például a ruházat színe, az autók és még a speciális effektusok is (amint az a "Metropolis" -nál látható).

A legjobb tippem az, hogy a modellek érdekes szabályokat tanulnak arról, hogyan lehet színezni a fekete-fehér képeken megjelenő finom jelek alapján, amelyek biztosan nem számítanának a létezésemre. Ez az eredmény szépen determinisztikus és következetes eredményekhez vezet, és ez azt jelenti, hogy nincsenek sínmodell színezési döntései, mert azok nem önkényesek. Emellett rendkívül robusztusnak tűnnek, így a mozgó jeleneteknél is nagyon következetesek a renderelések.

A videó stabilizálásának egyéb módjai is összeadódnak. Először is, általában a nagyobb felbontással (magasabb render_tényező) történő megjelenítés növeli a színezéssel kapcsolatos döntések stabilitását. Ez ésszerű, mert a modell magasabb hűségértékű képinformációkkal rendelkezik, és nagyobb eséllyel következetesen meghozza a "helyes" döntést. Ehhez szorosan kapcsolódik a resnet101 használata a resnet34 helyett, mivel ezzel a generátorobjektumok gerincét következetesebben és helyesen észlelik. Ez különösen fontos a jó, következetes bőrvisszaadás érdekében. Különösen vizuálisan rángatózó lehet, ha például "zombikezzel" zárul.

Ezenkívül úgy tűnik, hogy a képzés során a gaussus zajnövekedés segít, de ezen a ponton a következtetések arra vonatkoznak, hogy mennyi sokkal gyengébb (ezt még nem formálisan mértem még). Ez lazán a stílusátadási videóban végzett munkán alapul, amelyet itt ismertettek: https://medium.com/element-ai-research-lab/stabilizing-neural-style-transfer-for-video-62675e203e42.

Külön köszönet jár Rani Horev-nak a zajnövelés megvalósításában való közreműködéséért.

Ez egy új típusú GAN-képzés, amelyet az előző DeOldify modell néhány kulcsfontosságú problémájának megoldására fejlesztettem ki. A GAN-képzés előnyeit nyújtja, miközben minimális időt tölt a közvetlen GAN-képzéssel. Ehelyett a képzési idő nagy részét a generátor és a kritikus külön-külön előkészítésével töltik, egyenesebb, gyorsabb és megbízhatóbb hagyományos módszerekkel. Kulcsfontosságú betekintés, hogy ezek a "hagyományosabb" módszerek általában elhozzák a szükséges eredmények nagy részét, és hogy a GAN-ok felhasználhatók a reális hézag csökkentésére. A tényleges GAN-képzés nagyon rövid időtartama alatt a generátor nem csak a teljes valósághű színező képességeket kapja meg, amelyek korábban napokig tartottak a GAN-ok fokozatos átméretezéséhez, de a GAN-ok műveinek és egyéb csúnya poggyászainak közel sem akkora részét gyűjti. Valójában megközelítésétől függően szinte teljesen kiküszöbölheti a hibákat és a műtárgyakat. Ha jól tudom, ez egy új technika. És hihetetlenül hatékony.

Eredeti DeOldify modell

NoGAN-alapú DeOldify modell

A lépések a következők: Először a generátort hagyományos módon, önmagában, csak a funkciók elvesztésével kell kiképezni. Ezután képeket generál abból, és képezze a kritikust, hogy különböztesse meg ezeket a kimeneteket és a valós képeket, mint alapvető bináris osztályozót. Végül képezzük együtt a generátort és a kritikust GAN-beállításban (ebben az esetben közvetlenül a 192px-es célmérettől indulva). Most a furcsa részről: Az itt található összes hasznos GAN-képzés csak nagyon kis időn belül zajlik. Van egy inflexiós pont, ahol úgy tűnik, hogy a kritikus mindent megtett, ami csak hasznos, a generátor számára. Ezen a ponton túl a képminőség ingadozik az inflexiós ponton elérhető legjobb vagy kiszámítható módon rossz (narancssárga bőr, túlságosan vörös ajkak stb.) Között. Úgy tűnik, hogy az inflexiós pont után nincs produktív képzés. És ez a pont az Imagenet Data mindössze 1–3% -án végzett képzésen belül rejlik! Ez körülbelül 30-60 perc edzést jelent 192 képpontos felbontással.

Az a nehéz, hogy megtaláljuk ezt az inflexiós pontot. Eddig ezt úgy hajtottam végre, hogy egy csomó modell mentési ellenőrző pontot készítettem (az adatok minden 0,1% -a megismétlődött), majd csak azt a pontot kerestem, ahol a képek nagyszerűen néznek ki, mielőtt teljesen narancssárga bőrű hülyékké válnának (mindig az első dolog menni). Ezenkívül a generátor renderelése ezen a ponton azonnal elkezdi a hibátlanságot és következetlenséget, ami különösen nem jó a videók számára. Amit nagyon szeretnék kitalálni, az az inflexiós pont visszajelző jele, amely korai megállási pontként könnyen automatizálható. Sajnos nekem még semmi végleges nem ugrik ki. Egyrészt ez az edzésveszteség közepén történik, nem pedig akkor, amikor ellaposodik, ami a felszínen ésszerűbbnek tűnik.

A NoGAN képzés másik kulcsfontosságú eleme, hogy a kezdeti GAN képzés után megismételheti a kritikus előkészítését a generált képeken, majd ugyanúgy megismételheti magát a GAN képzést is. Így tudtam extra színes eredményeket elérni a "művészi" modellel. De ez jelenleg költségekkel jár - a generátor kimenete egyre inkonzisztensebbé válik, és a legjobb eredmény elérése érdekében kísérleteznie kell a renderelési felbontással (render_factor). De a megjelenítések még mindig hibamentesek és sokkal következetesebbek, mint amit valaha is sikerült elérnem az eredeti DeOldify modellel. Körülbelül öt ilyen ismétlési ciklust tehet meg, adhat vagy vehet, mielőtt csökkenő hozamot kapna, amennyire meg tudom mondani.

Ne feledje - nem voltam teljesen szigorú, amikor kitaláltam, mi minden zajlik a NoGAN-ban - ezt megtakarítom egy papírra. Ez azt jelenti, hogy jó eséllyel tévedek valamiben. De azt gondolom, hogy mindenképp érdemes kitenni oda, mert nagyon hasznosnak találom - ez alapvetően megoldja a DeOldify-ban fennmaradt problémáim nagy részét.

Ez egy Jeremy Howard és Sylvain Gugger együttműködésével kifejlesztett technikára épül a Fast.AI 7. leckéjénél, a praktikus mély tanulás a kódolók I. részének 3. változatában. Az adott leckefüzet itt található: https://github.com/fastai /course-v3/blob/master/nbs/dl1/lesson7-superres-gan.ipynb

Miért három modell?

Most három modell közül lehet választani a DeOldify-ban. Ezek mindegyikének kulcsfontosságú erősségei és gyengeségei vannak, így különböző használati eseteik is vannak. A videó természetesen videóra szól. De a stabil és a művészi egyaránt a képekre vonatkozik, és néha az egyik jobban fogja csinálni a képeket, mint a másik.

Mivel a művészi és stabil modellek kiképzése a „Mi az a NoGAN?” Részben leírt NoGAN képzés „inflexiós pontjának” felfedezése előtt történt, úgy gondolom, hogy ez a mennyiségű képzés jelentősen leüthető. Amennyire meg tudom mondani, a modelleket olyan "jó pontokon" állították meg, amelyek jóval túlmutattak azon a helyen, ahol produktív képzés zajlott. Ezt a jövőben megvizsgálom.

Ideális esetben végül ez a három modell egy olyan modellbe tömörül, amelyben mindezek a kívánatosak egyesülnek. Azt hiszem, van ott egy út, de ehhez még több munkára lesz szükség! Tehát egyelőre úgy tűnik, hogy a legpraktikusabb megoldás több modell fenntartása.

A technikai részletek

Ez egy mély tanuláson alapuló modell. Pontosabban, amit tettem, a következő megközelítéseket ötvözi:

Kivéve a generátort a előképzett U-Net, és most módosítottam a spektrális normalizálás és az önfigyelem érdekében. Ez egy elég egyértelmű fordítás.

Ez szintén nagyon egyértelmű - ez csak egy az egyhez generátor/kritikus iterációk és magasabb kritikus tanulási arány. Ezt úgy módosítják, hogy beépítsen egy "küszöbértékű" kritikus veszteséget, amely biztosítja, hogy a kritikus "felzárkózzon", mielőtt áttérne a generátor képzésre. Ez különösen hasznos az alábbiakban ismertetett "NoGAN" módszer esetében.

Nincs itt papír! Ez egy új típusú GAN-képzés, amelyet az előző DeOldify modell néhány kulcsfontosságú problémájának megoldására fejlesztettem ki. A lényeg az, hogy élvezheti a GAN-képzés előnyeit, miközben minimális időt tölt a közvetlen GAN-képzéssel. További részletek a Mi a NoGAN? szakasz (ez egy kicsi).

A NoGAN-tanulás során bekövetkező veszteség két részből áll: Az egyik a VGG16-on alapuló alapvető perceptuális veszteség (vagy szolgáltatásveszteség) - ez csak a generátor modelljét torzítja a bemeneti kép megismétléséhez. A második a kritikus veszteség pontszáma. Kíváncsi emberek számára - az észlelési veszteség önmagában nem elegendő a jó eredmények eléréséhez. Hajlamos csak arra ösztönözni egy csomó barna/zöld/kék színt - tudod, a teszt megcsalása, alapvetően, melyik ideghálózat igazán jó! Kulcsfontosságú dolog itt megérteni, hogy a GAN-ok lényegében az ön számára tanulják meg a veszteségfüggvényt - ami valóban egy nagy lépéssel közelebb áll ahhoz az ideálhoz, amelyre a gépi tanulásban törekszünk. És természetesen általában sokkal jobb eredményeket ér el, amikor ráveszi a gépet arra, hogy megtanuljon valamit, amit korábban kézzel kódolt. Itt bizonyára ez a helyzet.

Megjegyzés: Itt már nem folyik a "GAN-ok progresszív növekedése" típusú képzés. Csak nem szükséges a fent leírt "NoGAN" technikával elért kiváló eredmények helyett.

Ennek a modellnek az a szépsége, hogy általában mindenféle képmódosításhoz hasznosnak kell lennie, és egész jól meg kell tennie. Amit fent láthat, az a színező modell eredménye, de ez csak egy elem a folyamatban, amelyet pontosan ugyanazzal a megközelítéssel fejlesztek ki.

Ez a projekt, haladva

Tehát ez a projekt lényege - arra törekszem, hogy a régi fotók és filmek valóban jól nézzenek ki a GAN-okkal, és ami még fontosabb, hogy a projekt hasznos legyen. Időközben bár ez lesz a babám, és belátható időn belül aktívan frissítem és javítom a kódot. Megpróbálom ezt minél felhasználóbarátabbá tenni, de biztos vagyok benne, hogy csuklás lesz végig.

Ja és esküszöm, hogy megfelelően dokumentálom a kódot. végül is. Kétségtelenül azon emberek közé tartozom, akik hisznek az "öndokumentáló kódban" (LOL).

Saját kezdés

Az indulás legegyszerűbb módja, ha egyenesen a Colab notebookokhoz megy:

Kép | Videó

Külön köszönet Matt Robinsonnak és María Benaventének a Colab notebook képalkotásáért, és Robert Bellnek a videó Colab notebook munkájáért!

Saját gép (nem olyan egyszerű)

Hardver és operációs rendszer követelmények

  • (Csak edzéshez) BEEFY grafikus kártya. Nagyon szeretnék, ha több memóriám lenne, mint a 11 GB a GeForce 1080TI-ben (11 GB). Nehéz dolga lesz kevesebbel. A generátorok és a kritikusok nevetségesen nagyok.
  • (Egyedül a színezés) Tisztességes grafikus kártya. Körülbelül 4 GB + memóriakártyával elegendőnek kell lennie.
  • Linux. Ubuntu 18.04-et használok, és tudom, hogy a 16.04 is jól működik. A Windows nem támogatott, és az ezzel kapcsolatban felmerült problémákat nem vizsgálják.

Most már képesnek kell lennie egy egyszerű telepítésre az Anaconda segítségével. Itt vannak a lépések:

Nyissa meg a parancssort, és keresse meg a telepíteni kívánt gyökérmappát. Ezután írja be a következő parancsokat

Ezután kezdje el futtatni ezeket a parancsokat:

Innen kezdheti meg a noteszgépek futtatását a Jupyter Lab-ban, a konzolon megadott URL-en keresztül.

Jegyzet: Mostantól megteheti a "conda activ deoldify" funkciót is, ha rendelkezik a legújabb verzióval, és valójában ez most ajánlott. De sok embernek még nincs ilyen, ezért itt még nem fogom az alapértelmezett utasítást tenni.

Megjegyzés a test_images mappához

A test_images mappában lévő képeket eltávolítottuk, mert Git LFS-t használtak, és ez sok pénzbe kerül, amikor a GitHub ténylegesen felszámolja a sávszélességet egy népszerű nyílt forráskódú projektben (számlázási hibájuk volt, amíg a közelmúltban javították). Az őket használó jegyzetfüzetek (a képtesztek) továbbra is rámutatnak a könyvtárban található képekre, amelyek nekem (Jason) személyesen vannak, és szeretném ezt megtartani, mert végül is messze én vagyok az elsődleges és a legaktívabb fejlesztő. De nem fognak neked menni. Mégis, ezek a noteszgépek kényelmes sablonok saját tesztek készítéséhez, ha annyira hajlandó.

A ColorizeTrainingWandb notebook azért jött létre, hogy naplózza és figyelemmel kísérje az eredményeket a Súlyok és elfogultságok segítségével. A tipikus képzés leírását megtalálja a W&B Report segítségével.

Docker a Jupyterhez

A dokkolót a következő eljárással készítheti el és futtathatja: