GitHub е дом на над 50 милиона разработчици, които работят заедно за хостване и преглед на код, управление на проекти и изграждане на софтуер заедно.

базиран

GitHub е мястото, където светът създава софтуер

Милиони разработчици и компании изграждат, доставят и поддържат своя софтуер на GitHub - най-голямата и най-модерна платформа за развитие в света.

Използвайте Git или плащане с SVN, като използвате уеб URL адреса.

Работете бързо с нашия официален CLI. Научете повече.

Стартиране на GitHub Desktop

Ако нищо не се случи, изтеглете GitHub Desktop и опитайте отново.

Стартиране на GitHub Desktop

Ако нищо не се случи, изтеглете GitHub Desktop и опитайте отново.

Стартиране на Xcode

Ако нищо не се случи, изтеглете Xcode и опитайте отново.

Стартиране на Visual Studio

Последен ангажимент

Git статистика

Файлове

Неуспешно зареждане на последната информация за фиксиране.

README.md

Бърз старт: Най-лесният начин за оцветяване на изображения с помощта на DeOldify (безплатно!) Е тук: DeOldify Оцветяване на изображения на DeepAI

The най-напредналите Версията на DeOldify за оцветяване на изображения е достъпна изключително тук. Опитайте няколко изображения безплатно! MyHeritiage в цвят

Изображение (артистично) | Видео

НОВО Имате проблеми с оцветителя за изображения по подразбиране, известен още като „артистичен“? Опитайте "стабилната" отдолу. Обикновено няма да произведе цветове, които са толкова интересни, колкото „артистичните“, но бъговете значително намаляват.

Инструкции за това как да използвате Colabs по-горе са любезно предоставени под формата на видеоурок от Old Ireland в Colour's John Breslin. Чудесно е! Щракнете върху видео изображение по-долу, за да го гледате.

Получавайте още актуализации в Twitter .

Съдържание

  • Относно DeOldify
  • Примерни видеоклипове
  • Примерни изображения
  • Неща, които вероятно би трябвало да са в хартия
    • Как да постигнем стабилно видео
    • Какво е NoGAN?
  • Защо три модела?
  • Технически подробности
  • Върви напред
  • Първи стъпки за себе си
    • Най-лесният подход
    • Вашата собствена машина
  • Докер
  • Предварително претеглени тежести

Най-просто казано, мисията на този проект е да оцвети и възстанови стари изображения и филмови кадри. Ще влезем малко в подробностите след малко, но първо нека видим няколко хубави снимки и видеоклипове!

Нови и вълнуващи неща в DeOldify

  • Бъговете и артефактите са почти изцяло елиминирани
  • По-добра кожа (по-малко зомбита)
  • По-подробни и фотореалистични рендери
  • Много по-малко "синьо пристрастие"
  • Видео - всъщност изглежда добре!
  • NoGAN - нов и странен, но изключително ефективен начин да се направи GAN обучение за изображение в изображение.

Забележка: Щракнете върху изображения за гледане

Демонстрация на Facebook F8

Примери за мълчалив филм

"Майка мигрантка" от Доротея Ланге (1936)

Жена отпуска в хола си в Швеция (1920)

"Toffs and Toughs" от Джими Симе (1937)

Деня на благодарността (1911)

Цигански лагер на Глен Ехо Мадам Карета в Мериленд (1925)

„Господин и госпожа Лемуел Смит и по-малките им деца в тяхната фермерска къща, окръг Карол, Джорджия.“ (1941)

"Изграждане на моста Golden Gate" (est 1937)

Забележка: Това, което може би се чудите, е, че докато тази визуализация изглежда страхотно, точните ли са цветовете? Оригиналната снимка със сигурност прави така, че кулите на моста да са бели. Разгледахме това и се оказа, че отговорът е отрицателен - по това време кулите вече бяха покрити с червен грунд. Това е нещо, което трябва да се има предвид - историческата точност остава огромно предизвикателство!

„Тераса на кафенето, Париж“ (1925)

Норвежка булка (приблизително края на 1890-те)

Zitkála-Šá (Lakota: Червена птица), известна също като Гертруда Симънс Бонин (1898)

Китайски пушачи на опиум (1880)

Неща, които вероятно би трябвало да са в хартия

Как да постигнем стабилно видео

Обучението NoGAN е от решаващо значение за получаването на вида стабилни и цветни изображения, които се виждат в тази итерация на DeOldify. Обучението NoGAN съчетава предимствата на обучението GAN (прекрасно оцветяване), като същевременно елиминира неприятните странични ефекти (като трептене на обекти във видео). Вярвате или не, видеото се изобразява, като се използва изолирано генериране на изображения, без да се използва някакво времево моделиране. Процесът изпълнява 30-60 минути от GAN част от обучението "NoGAN", използвайки 1% до 3% от данните на imagenet веднъж. След това, както при оцветяването на неподвижни изображения, ние "DeOldify" отделни кадри, преди да възстановим видеото.

В допълнение към подобрената стабилност на видеото, тук се случва и едно интересно нещо, което си струва да се спомене. Оказва се, че моделите, които управлявам, дори различни и с различни обучителни структури, продължават да достигат до горе-долу едно и също решение. Това е дори случаят с оцветяването на неща, които може да смятате за произволни и непознаваеми, като цвета на облеклото, автомобилите и дори специалните ефекти (както се вижда в „Метрополис“).

Най-доброто ми предположение е, че моделите научават някои интересни правила за това как да оцветяват на базата на фини сигнали, присъстващи в черно-белите изображения, които със сигурност не бих очаквал да съществуват. Този резултат води до добре детерминирани и последователни резултати, а това означава, че нямате решения за оцветяване на модела на проследяване, защото те не са произволни. Освен това те изглеждат изключително здрави, така че дори при движещи се сцени рендерите са много последователни.

Добавят се и други начини за стабилизиране на видео. Първо, най-общо казано, изобразяването с по-висока резолюция (по-висок render_factor) ще увеличи стабилността на решенията за оцветяване. Това е основателно, защото моделът има по-висока точност на информацията за изображението, с която да работи и ще има по-голям шанс да вземе "правилното" решение последователно. Тясно свързано с това е използването на resnet101 вместо resnet34, тъй като гръбнакът на обектите на генератора се открива по-последователно и правилно с това. Това е особено важно за получаване на добро, последователно визуализиране на кожата. Може да бъде особено зрително дразнещо, ако завършите с "зомби ръце", например.

Освен това усилването на гаусов шум по време на обучение изглежда помага, но на този етап изводите за това колко са малко по-слаби (просто все още не съм измерил това официално). Това се основава свободно на работата, извършена в видео за прехвърляне на стилове, описана тук: https://medium.com/element-ai-research-lab/stabilizing-neural-style-transfer-for-video-62675e203e42.

Специални благодарности отиват на Рани Хорев за приноса му в прилагането на това увеличаване на шума.

Това е нов тип GAN обучение, което разработих за решаване на някои ключови проблеми в предишния модел DeOldify. Той предоставя предимствата на обучението по GAN, като същевременно отделя минимално време за директно обучение по GAN. Вместо това, по-голямата част от времето за обучение се отделя за предварително обучение на генератора и критика поотделно с по-прави, бързи и надеждни конвенционални методи. Ключово прозрение тук е, че тези по-"конвенционални" методи обикновено ви осигуряват по-голямата част от резултатите, от които се нуждаете, и че GAN могат да се използват, за да се запълни пропастта в реализма. По време на много краткото количество действително обучение за GAN, генераторът не само получава пълните реалистични възможности за оцветяване, които отнемаха дни на прогресивно преоразмерено обучение за GAN, но също така не натрупва почти толкова от артефактите и други грозни багажи на GAN. Всъщност можете почти напълно да премахнете бъгове и артефакти почти изцяло в зависимост от вашия подход. Доколкото знам, това е нова техника. И това е невероятно ефективно.

Оригинален модел DeOldify

Модел DeOldify, базиран на NoGAN

Стъпките са както следва: Първо обучете генератора по конвенционален начин от само себе си, само със загуба на характеристиките. След това генерирайте изображения от това и обучете критиката да прави разлика между тези изходи и реални изображения като основен двоичен класификатор. И накрая, обучете генератора и критика заедно в настройка на GAN (започвайки точно от целевия размер 192px в този случай). Сега за странната част: Цялото полезно обучение по GAN тук се провежда само за много малък период от време. Има точка на прегъване, където изглежда, че критикът е прехвърлил всичко, което е възможно, което е полезно на генератора. След тази точка качеството на изображението се колебае между най-доброто, което можете да получите в точката на огъване, или лошото по предсказуем начин (портокалова кожа, прекалено червени устни и т.н.). Изглежда няма продуктивна тренировка след точката на инфлексия. И тази точка се крие в обучението само от 1% до 3% от данните на Imagenet! Това възлиза на около 30-60 минути обучение при 192px.

Трудната част е намирането на тази точка на огъване. Досега постигнах това, като направих цял куп контролни точки за запазване на модели (на всеки 0,1% от данните, повтарящи се) и след това просто търсех точката, в която изображенията изглеждат страхотно, преди да станат напълно луди с оранжева кожа (винаги първото нещо да отида). Освен това рендирането на генератора започва незабавно да става нестабилно и непоследователно в този момент, което не е добре особено за видео. Това, което наистина бих искал да разбера, е това, което е предупредителният знак на точката на огъване, която може лесно да бъде автоматизирана като точка за ранно спиране. За съжаление още нищо окончателно не ми скача. Първо, това се случва в средата на намаляване на загубата на тренировка - не когато се изравнява, което на пръв поглед изглежда по-разумно.

Друго ключово нещо при обучението по NoGAN е, че можете да повторите предварително обучение на критиката върху генерирани изображения след първоначалното обучение по GAN, след което да повторите самото обучение по GAN по същия начин. По този начин успях да получа изключително цветни резултати с „артистичния“ модел. Но това в момента си струва - изходът на генератора става все по-непостоянен и трябва да експериментирате с разделителна способност за рендиране (render_factor), за да получите най-добрия резултат. Но рендерите все още са без проблеми и по-последователни, отколкото някога съм успявал да постигна с оригиналния модел DeOldify. Можете да направите около пет от тези повторни цикъла, дайте или вземете, преди да получите намаляваща възвръщаемост, доколкото мога да разбера.

Имайте предвид - аз не бях напълно строг в разбирането какво се случва в NoGAN - Ще запазя това за хартия. Това означава, че има голям шанс да сгреша за нещо. Но мисля, че определено си струва да се изложи там сега, защото го намирам за много полезен - той решава основно голяма част от останалите ми проблеми, които имах в DeOldify.

Това се основава на техника, разработена в сътрудничество с Джеръми Хауърд и Силвен Гугър за Fast.AI's Lection 7 in version 3 of Practical Deep Learning for Coders Part I. Конкретната тетрадка с уроци може да бъде намерена тук: https://github.com/fastai /course-v3/blob/master/nbs/dl1/lesson7-superres-gan.ipynb

Защо три модела?

Вече има три модела за избор в DeOldify. Всяка от тях има ключови силни и слаби страни, както и различни случаи на употреба. Видеото е за видео разбира се. Но стабилността и артистичността са едновременно за изображения и понякога единият ще прави изображения по-добре от другия.

Тъй като обучението на артистичните и стабилни модели беше направено преди да бъде открита „точката на прегъване“ на обучението NoGAN, описано в „Какво е NoGAN.“, Вярвам, че това количество обучение върху тях може значително да бъде премахнато. Доколкото мога да разбера, моделите бяха спрени на "добри точки", които бяха далеч отвъд мястото, където се провеждаха продуктивни тренировки. Ще разгледам това в бъдеще.

В идеалния случай в крайна сметка тези три модела ще бъдат обединени в един, който има всички тези добри желани унифицирани. Мисля, че има пътека там, но това ще изисква повече работа! Така че засега най-практичното решение изглежда е поддържането на множество модели.

Технически подробности

Това е модел, базиран на дълбоко обучение. По-конкретно, това, което направих, комбинира следните подходи:

Освен че генераторът е a предварително обучен U-Net, и току-що го модифицирах, за да има спектрална нормализация и самообръщение. Това е доста ясен превод.

Това също е много лесно - това е само едно към едно итерации на генератор/критик и по-висок процент на обучение на критици. Това е модифицирано, за да включи „прагова“ загуба на критик, която гарантира, че критикът е „наваксан“, преди да премине към обучение на генератор. Това е особено полезно за метода "NoGAN", описан по-долу.

Тук няма хартия! Това е нов тип GAN обучение, което разработих за решаване на някои ключови проблеми в предишния модел DeOldify. Същността е в това, че получавате предимствата на обучението по GAN, докато прекарвате минимално време в директно обучение по GAN. Повече подробности са в Какво е NoGAN? раздел (това е doozy).

Загубата по време на обучението по NoGAN е две части: Едната е основна перцептивна загуба (или загуба на характеристики), базирана на VGG16 - това просто пристрастява модела на генератора да репликира входното изображение. Второто е загубата от критиката. За любопитните - Перцептуалната загуба сама по себе си не е достатъчна, за да доведе до добри резултати. Склонен е просто да насърчава куп кафяво/зелено/синьо - знаете, измама към теста, всъщност, кои невронни мрежи са наистина добри! Ключовото нещо, което трябва да разберете тук, е, че GANs по същество учат функцията за загуба вместо вас - което е наистина една голяма стъпка по-близо до идеала, за който стреляме в машинното обучение. И разбира се обикновено получавате много по-добри резултати, когато накарате машината да научи нещо, което преди сте кодирали на ръка. Тук със сигурност е така.

За отбелязване: Тук вече не се провежда обучение от типа „Прогресивно отглеждане на ГАН“. Това просто не е необходимо вместо превъзходните резултати, получени от описаната по-горе техника "NoGAN".

Красотата на този модел е, че той като цяло трябва да бъде полезен за всякакви модификации на изображения и трябва да го прави доста добре. Това, което виждате по-горе, са резултатите от модела за оцветяване, но това е само един компонент в конвейер, който разработвам с абсолютно същия подход.

Този проект, напред

Така че това е същността на този проект - гледам да направя старите снимки и филми да изглеждат наистина добре с GAN и по-важното е да направя проекта полезен. Междувременно обаче това ще бъде моето бебе и аз ще обновявам и подобрявам кода активно в обозримо бъдеще. Ще се опитам да направя това възможно най-удобно за потребителя, но съм сигурен, че ще има хълцане по пътя.

О, и кълна се, че ще документирам правилно кода. в крайна сметка. Разбира се, аз съм от хората, които вярват в "самодокументиращ код" (LOL).

Първи стъпки за себе си

Най-лесният начин да започнете е да отидете направо до тетрадките на Colab:

Изображение | Видео

Специални благодарности на Мат Робинсън и Мария Бенавенте за техния имидж Colab бележник, и Робърт Бел за видео Colab бележник работа!

Вашата собствена машина (не толкова лесно)

Изисквания към хардуера и операционната система

  • (Само за обучение) Графична карта BEEFY. Наистина бих искал да имам повече памет от 11 GB в моя GeForce 1080TI (11 GB). Ще имате трудно време с по-малко. Генераторите и Критикът са нелепо големи.
  • (Colorization Alone) Прилична графична карта. Приблизително 4GB + видеокарти с памет трябва да са достатъчни.
  • Linux. Използвам Ubuntu 18.04 и знам, че и 16.04 работи добре. Windows не се поддържа и всички повдигнати проблеми, свързани с това, няма да бъдат разследвани.

Вече трябва да можете да направите проста инсталация с Anaconda. Ето стъпките:

Отворете командния ред и отидете до основната папка, която искате да инсталирате. След това въведете следните команди

След това започнете да изпълнявате с тези команди:

Оттам можете да започнете да пускате преносимите компютри в Jupyter Lab, чрез URL адреса, който ви предоставят в конзолата.

Забележка: Вече можете да направите "conda activate deoldify", ако имате най-новата версия на conda и всъщност това вече се препоръчва. Но много хора все още нямат това, така че все още няма да го направя инструкцията по подразбиране тук.

Забележка в папка test_images

Изображенията в папката test_images са премахнати, тъй като са използвали Git LFS и това струва много пари, когато GitHub всъщност таксува за честотна лента на популярен проект с отворен код (те са имали грешка при фактурирането, докато наскоро беше поправена). Бележниците, които ги използват (тестовите за изображения), все още сочат към изображения в тази директория, които аз (Джейсън) имам лично и бих искал да запазя така, тъй като в крайна сметка аз съм най-основният и най-активен разработчик. Но те няма да работят за вас. И все пак тези преносими компютри са удобен шаблон за правене на собствени тестове, ако сте толкова склонни.

Бележникът ColorizeTrainingWandb е създаден, за да регистрира и наблюдава резултатите чрез Weights & Biases. Можете да намерите описание на типичното обучение, като се консултирате с W&B Report.

Докер за Юпитер

Можете да изградите и стартирате докера, като използвате следния процес: