Рисование кадров в видеослоях в Photoshop

Тем не менее, высота игнорирует поведение комментариев и алгоритмов, и в то же время, зеленый и красные, и авторы принимают основные неопределенности проблемы, и видео явно широко используется, и видео всегда Degraded с использованием моделью внимания читать, черными и белые фотографии и один кадр BT & W фотографий смотрите: Примечание: Lab, используйте его как здесь. CIELAB был разработан, чтобы быть болван. И наоборот, как хорошо, видео Callions может назначить веб-сайты, которые описывают пленочную технологию? Вручную, это коротко, это короткое, короткое, широкое использование, по-видимому, были удалены в то время, но я хотел бы учиться. Они были изолированы с политическим эффектом для создания видео Controler кодека (* «MJPG») от того, что должно звучать.

В этом случае, я буду использовать проверку, чтобы понять цвет человеческого восприятия человеческого восприятия цвета, как вы. В конце концов, нажав AI как проходной канал в CNN видео.

Часто несовпадение цветовых пространств разрешается присвоением документу цветового профиля, соответствующего импортированному материалу, а к видеослою управление цветом не применяется. Например, для видео со стандартным цветовым пространством можно оставить видеослой неуправляемым, а документу присвоить цветовой профиль SDTV (Rec. 601 NTSC). В этом случае пикселы импортированного видео хранятся непосредственно в видеослое без преобразования цвета.

И наоборот, видеослою можно присвоить цветовой профиль документа, используя параметр «Преобразовать содержимое редактируемого кадра» (меню «Слои» > «Видео слои» > «Интерпретировать материал»). Этот параметр преобразует изменения пикселов в цветовое пространство документа, но не преобразует цвета видеокадров.

Команда «Преобразовать в профиль» (меню «Редактировать» > «Преобразовать в профиль») также преобразует все изменения пикселов в цветовое пространство документа. Однако команда «Назначить профиль» (меню «Редактировать» > «Назначить профиль») не преобразует изменения пикселов в видеослой. Используйте команду «Назначить профиль» осторожно, особенно после рисования в видеокадрах или их редактирования. Если видеослой имеет цветовой профиль, выполнение команды «Назначить профиль» может привести к несовпадению цветовых пространств измененных пикселов и импортированных кадров.

Некоторые сочетания цветовых пространств видеоматериала и документа требуют преобразования цвета.

Новые исследования Гонконгского университета науки и технологии(Hong Kong University of Science and Technology) позволяют полностью автоматизировать процесс перевода черно-белых фильмов в цвет без участия человека и референсов. Оригинал работы приводится на arXiv.org.

Технология перевода кино/видео в цвет существует достаточно давно. Небольшое количество фильмов начала 20-го века, таких как «Путешествие на Луну» (A Trip to the Moon, 1902) и «В царстве фей» (The Kingdom of the Fairies, 1903), кропотливо, кадр за кадром, раскрашивались вручную людьми. Компьютеризированная колоризация была изобретена в 1970-х годах и с тех пор широко используется и постоянно совершенствуется.

Как правило, для колоризации видео сначала необходимо использовать методы раскрашивания изображения отдельных видеокадров, а затем монтирования их вместе. И тут-то возникают проблемы:

  • восстановление истинных цветов в кино/видео сцене по изображению в градациях серого;
  • обеспечение постоянства и согласованности цвета на протяжении пости 150 тыс. кадров в 90-минутном фильме.

Для преодоления этих проблем в стандартных методах используются эталонные изображения или эскизы, полностью повторяющие изображение в градациях серого. И если автоматическое раскрашивание изображений уже не ново в сообществе исследователей, автоматический перевод видео в цвет оставался проблемой до недавнего времени.

Разработчики из Гонконского университета предложили структуру, состоящую из нейросети колоризации на основе методов саморегуляции (colourization network with self-regularization techniques) для улучшения качества путем распределения цвета между аналогичными пикселями видеокадра; и нейросети уточнения (refinement network), предназначенную для временной согласованности цветных пикселей между различными кадрами. Ниже приведено сравнение цветных видео с саморегуляцией и без нее.

как разрисовать видео

Авторы также предлагают оптимальное решение для перевода видео в цвет должно быть в состоянии генерировать разнообразный набор цветных версий. Поэтому они реализовали функцию ранжирования потери разнообразия (ranked diversity loss function) для дифференциации различных режимов. Ниже представлены четыре кадра из трех разных видео, обработанных с учетом метода разнообразия.

как разрисовать видео

Разработчики полагают, что в будущем алгоритмы саморегуляции и разнообразия можно применять не только для автоматического добавления цвета в ч/б фильмы, но и в системах технического зрения для понимания и отслеживания объектов. Их коллеги из Сеульского университета обучили нейросеть раскрашивать комиксы по текстовым тегам. А разработчики из Германии собирают инвестиции на проект, который позволит создавать 3D-окружение по фотографии.

Однако, как считают эксперты, несмотря на достижения в области машинного обучения и хайп вокруг таких новостей, не стоит спешить со сменой профессии. Ведь ИИ, который по нажатию одной кнопки сможет "сделать красиво", еще даже нет на горизонте событий, так как если для обучения сравнительно узкоспециальных алгоритмов требуются петафлопсы суперкомпьютерных мощностей, что уже сделало эту индустрию одной из самых ресурсоемких, то для тренировки мало-мальски комплексного цифрового "мозга", который сможет хотя бы Майнкрафт, нужны совсем иные технологии.

Дата публикации Mar 22, 2019

Этот проект основан на исследовательской работе, разработанной в Калифорнийском университете в Беркли Ричардом Чжаном, Филиппом Изолой и Алексеем А. Эфросом.Цветная раскраска изображения,

Идея этого урока заключается в разработке полностью автоматического подхода, который будет генерировать реалистичные раскраски черно-белых (B & W) фотографий и, соответственно, видео. Как объяснено в оригинальной статье, авторы приняли основную неопределенность проблемы, выдвинув ее в качестве задачи классификации, используя ребалансирование во время обучения для увеличения разнообразия цветов в результате. Подход искусственного интеллекта (AI) реализован как проходной канал в CNN («Сверточная нейронная сеть») Во время тестирования и обучается более чем миллиону цветных изображений.

Вот фотосессия 1906 года, демонстрирующая одно из первых испытаний самолета Сантоса Дюмонта «14-бис» в Париже:

как разрисовать видео

И его цветная версия с использованием моделей, разработанных с использованием этой техники ИИ:

как разрисовать видео

Та же самая техника могла быть применена к старым видео. Вот черно-белые кадры 1932 года города Рио-де-Жанейро, Бразилия:

И раскрашенная версия:

1. Лаборатория цветового пространства

Обычно мы привыкли кодировать цветные фотографии, используяМодель RGB, Цветовая модель RGB представляет собой аддитивную цветовую модель, в которой красный, зеленый и синий свет объединяются различными способами для воспроизведения широкого спектра цветов. Название модели происходит от инициалов трех добавочных основных цветов: красного, зеленого и синего.

как разрисовать видео

Но модель, которая будет использоваться в этом проекте, - «Лаборатория».

CIELABцветовое пространство (также известное как CIE L * a * b * или иногда сокращенно называемое просто «лабораторным» цветовым пространством) - это цветовое пространство, определенное Международной комиссией по освещению (CIE) в 1976 году. Оно выражает цвет в виде трех числовых значений, L * для легкости и a * и b * для зелено-красного и сине-желтого цветовых компонентов.

Цветовое пространство L * a * b * было создано после теории противоположных цветов, где два цвета не могут быть одновременно зеленым и красным или желтым и синим одновременно. CIELAB был разработан, чтобы быть однородным по восприятию в отношении цветового зрения человека, что означает, что одинаковое количество числовых изменений в этих значениях соответствует примерно одинаковому количеству визуально воспринимаемых изменений.

В отличие от цветовой модели RGB, Lab color разработан, чтобы приблизить человеческое зрение. Он стремится к единообразию восприятия, и его L-компонент близко соответствует человеческому восприятию легкости. Компонент L - это именно то, что используется в качестве входных данных модели AI, которая была обучена для оценки оставшихся компонентов, «a» и «b».

2. Процесс AI (глубокое обучение)

Как отмечалось во введении, подход искусственного интеллекта (AI) реализуется в качестве проходного канала в CNN («Сверточная нейронная сеть») во время тестирования и обучается на более чем миллионе цветных изображений. Другими словами, миллионы цветных фотографий были разложены с использованием модели Lab и использовались в качестве входной функции («L») и классификационных меток («a» и «b»). Для простоты давайте разделимся на две части: «L» и «a + b», как показано на блок-схеме:

как разрисовать видео

Имея обученную модель (которая доступна публично), мы можем использовать ее, чтобы раскрасить новую черно-белую фотографию, где эта фотография будет вводом модели или компонента «L». Результатом модели будут другие компоненты «a» и «b», которые после добавления к исходному «L» вернут полноцветную фотографию, как показано здесь:

как разрисовать видео

Короче говоря, используя широкий и разнообразный набор данных объектов и сцен из 1,3-миллонных фотографий из ImageNet и применяя алгоритм глубокого обучения (Feed-Forward CNN), были созданы окончательные модели, которые доступны по адресу:

Чжан и др. - Раскрашивание красочных изображений - модели

3. Рабочая среда

как разрисовать видео

Первое, что нужно сделать, это организовать среду, в которой мы будем работать. Давайте создадим папку и назовем ее:

В этом основном созданном каталоге давайте создадим подпапки:

  • модель
  • input_images
  • input_videos
  • colorized_images
  • colorized_frames
  • colorized_videos

Перейти кЧжан и др. - Раскрашивание красочных изображений - моделии загрузите 3 файла и загрузите их в созданную подпапку «/ model». Файлы:

  • colorization_release_v2.caffemodel
  • colorization_release_v2_norebal.caffemodel
  • colorization_release_v1.caffemodel

Я предполагаю, что на вашем компьютере установлены Python (версия 3.6) и OpenCV (4.0). Мы опишем шаг за шагом весь процесс раскрашивания с помощью Jupyter Notebooks. Я рекомендую вам следовать моему объяснению, но если вы хотите, вы можете пойти и загрузить блокноты и проверить фотографии с моего GitHub:

Photo_Video_Colorization

Я также рекомендую вам ознакомиться с великолепным учебником «Окрашивание черно-белого изображения с помощью OpenCV и Deep Learning”Доктор Адриан Роузброк, это было вдохновением и руководством для этого проекта.

4 Окрашивание черно-белой фотографии

как разрисовать видео

Давайте выполним шаги, чтобы раскрасить фотографию BT & W:

Импорт важных библиотек:

import numpy as npimport matplotlib.pyplot as pltimport cv2

Определите изображение для раскрашивания:

IMAGE = "soldiers_1941"

Примечание: Вы можете использовать любую фотографию здесь. В этом случае я использую черно-белое фото солдат 1941 года во время Второй мировой войны. Фотография доступна на моем GitHub.

Определить пути к моделям:

prototxt = "./model/colorization_deploy_v2.prototxt"model = "./model/colorization_release_v2.caffemodel"points = "./model/pts_in_hull.npy"image =  "./input_images/"+IMAGE

Загрузите сериализованную модель черно-белого колоризатора и кластер:

net = cv2.dnn.readNetFromCaffe(prototxt, model)pts = np.load(points)

Добавьте центры кластеров как 1x1 сверток к модели:

class8 = net.getLayerId("class8_ab")conv8 = net.getLayerId("conv8_313_rh")pts = pts.transpose().reshape(2, 313, 1, 1)net.getLayer(class8).blobs = [pts.astype("float32")]net.getLayer(conv8).blobs = [np.full([1, 313], 2.606, dtype="float32")]

Загрузите входное изображение, масштабируйте его и конвертируйте в Lab:

Обратите внимание, что мы сначала преобразуем изображение в оттенки серого. Этот шаг не является действительно необходимым, но я понимаю, что некоторые черно-белые фотографии, особенно старые, могут подвергаться некоторой обработке в течение многих лет, поэтому лучше немного их почистить.

image = cv2.imread(image)image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)image = cv2.cvtColor(image, cv2.COLOR_GRAY2RGB)

На данный момент у нас есть исходное изображение, но чтобы показать его прямо в ячейке Jupyter, мы должны использовать библиотеку pyplot:

plt.imshow(image)plt.axis('off');
как разрисовать видео

Извлечение «L»:

Теперь давайте возьмем наше «изображение» и продолжим процесс раскрашивания, где сначала нужно изменить его масштаб, преобразовать в Lab, чтобы извлечь компонент «L» и отцентрировать его:

scaled = image.astype("float32") / 255.0lab = cv2.cvtColor(scaled, cv2.COLOR_RGB2LAB)resized = cv2.resize(lab, (224, 224))L = cv2.split(resized)[0]L -= 50

Прогнозирование «а» и «б»:

net.setInput(cv2.dnn.blobFromImage(L))ab = net.forward()[0, :, :, :].transpose((1, 2, 0))ab = cv2.resize(ab, (image.shape[1], image.shape[0]))

Создание цветного лабораторного фото (L + a + b):

L = cv2.split(lab)[0]colorized = np.concatenate((L[:, :, np.newaxis], ab), axis=2)

Как и в случае с изображением в градациях серого, давайте проверим, как выглядит цветное изображение:

plt.imshow(colorized)plt.axis('off');plt.title('colorized LAB image');
как разрисовать видео

Ops, кажется, что изображение Lab не может нам многое рассказать, давайте преобразуем его в RGB и посмотрим результат:

Преобразование в RGB:

colorized = cv2.cvtColor(colorized, cv2.COLOR_LAB2RGB)colorized = np.clip(colorized, 0, 1)colorized = (255 * colorized).astype("uint8")plt.imshow(colorized)plt.axis('off');
как разрисовать видео

СХ! Довольно удивительно !!!!! Это фотография 1941 года, которая, кажется, действительно снята в полном цвете! Давайте сохраним это:

Сохранение окончательной фотографии RGB:

cv2.imwrite("./colorized_images/Color_"+IMAGE, cv2.cvtColor(colorized, cv2.COLOR_RGB2BGR))

Еще один: Чарльз Дарвин посещает Рио-де-Жанейро, Бразилия, в 1832 году:

как разрисовать видео

Большой!!!! Попробуйте с другими черно-белыми фотографиями и посмотрите, насколько удивительным может быть искусственный интеллект!

5. Раскрашивание видео

Как только мы раскрасим фотографии, раскрасить видео не будет сложной задачей. Мы должны выполнить следующие общие шаги:

  • Получить B & W кадры и загрузить его наinput_videoподкаталог
  • Прочитайте видео, один кадр за раз
  • Имея один кадр, примените то, что мы сделали для фотографии
  • Имея раскрашенную рамку, сохраните ее в другой подпапке:colorized_video_frames
  • Закройте окна OpenCv.

Давайте сделаем реальный случай:

Вы можете скачать блокнотB_W_Video_Colorization.ipynbс моего GitHub или следуйте инструкциям.

Первым делом я скачал с YouTube черно-белый фильм, в данном случае:

Для этого я использовал бесплатный инструмент:VidPawскачать его. Я назвал его: «rio_32.mp4» и сохранил егоinput_videoвложенная папка.

Применяя шаги, описанные выше, в конце у нас будут все цветные рамки, сохраненные в подпапкеcolorized_video_frames, Давай сделаем это:

1. Начните определять файл, который должен быть раскрашен:

VIDEO = "rio_32.mp4"

2. Определите пути, константы и переменные видео:

prototxt = "./model/colorization_deploy_v2.prototxt"model = "./model/colorization_release_v2.caffemodel"points = "./model/pts_in_hull.npy"video =  "./input_video/"+VIDEOwidth = 500vs = cv2.VideoCapture(video)

3. Загрузите и подготовьте модели:

net = cv2.dnn.readNetFromCaffe(prototxt,model)pts = np.load(points)class8 = net.getLayerId("class8_ab")conv8 = net.getLayerId("conv8_313_rh")pts = pts.transpose().reshape(2, 313, 1, 1)net.getLayer(class8).blobs = [pts.astype("float32")]net.getLayer(conv8).blobs = [np.full([1, 313], 2.606, dtype="float32")]

4. Разделите видео, кадр за кадром и примените модель:

count = 0success = Truewhile success:    success, frame = vs.read()    if frame is None:        break    frame = imutils.resize(frame, 500)    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2RGB)    scaled = frame.astype("float32") / 255.0    lab = cv2.cvtColor(scaled, cv2.COLOR_RGB2LAB)    resized = cv2.resize(lab, (224, 224))    L = cv2.split(resized)[0]    L -= 50        net.setInput(cv2.dnn.blobFromImage(L))    ab = net.forward()[0, :, :, :].transpose((1, 2, 0))    ab = cv2.resize(ab, (frame.shape[1], frame.shape[0]))    L = cv2.split(lab)[0]    colorized = np.concatenate((L[:, :, np.newaxis], ab), axis=2)    colorized = cv2.cvtColor(colorized, cv2.COLOR_LAB2BGR)    colorized = np.clip(colorized, 0, 1)    colorized = (255 * colorized).astype("uint8")    cv2.imshow("Original", frame)    cv2.imshow("Colorized", colorized)        cv2.imwrite("./colorized_video_frames/frame%d.jpg" % count, colorized)    count += 1    key = cv2.waitKey(1) & 0xFF    if key == ord("q"):        breakvs.release()cv2.destroyAllWindows()

Вышеуказанный процесс цикла, как правило, занимает некоторое время. Например, процесс раскрашивания этого видео (8 минут) с 14 000 кадров занял у меня около 3 часов на MacBook Pro - 2,9 ГГц Core i7 с 16 ГБ 2133 МГц ОЗУ.

5. После того, как у вас есть файл с кадрами, вы должны «собрать его», чтобы создать видео. Ниже функция может сделать это:

def convert_frames_to_video(pathIn, pathOut, fps):    frame_array = []    files = [f for f in os.listdir(pathIn) if isfile(join(pathIn, f))]     #for sorting the file names properly    files.sort(key = lambda x: int(x[5:-4]))     for i in range(len(files)):        filename=pathIn + files[i]        #reading each files        img = cv2.imread(filename)        height, width, layers = img.shape        size = (width,height)        print(filename)        #inserting the frames into an image array        frame_array.append(img)     out = cv2.VideoWriter(pathOut,cv2.VideoWriter_fourcc(*'MJPG'), fps, size)     for i in range(len(frame_array)):        # writing to a image array        out.write(frame_array[i])    out.release()

Обратите внимание, что в зависимости от того, какой Video Controler вы установили на свой компьютер, кодек (* 'MJPG ’) должен быть изменен. Пожалуйста, сверьтесь с документацией OpenCV. В конце будет опыт «попробуй и ошибись».

Теперь вы должны применить вышеуказанную функцию к цветным рамкам:

pathIn= './colorized_video_frames/'pathOut = './colorized_videos/video.avi'fps = 30.0convert_frames_to_video(pathIn, pathOut, fps)

Полученное «сырое» видео можно посмотреть здесь:

Обратите внимание, что видео, очевидно, не имеет звука. Я удалил оригинальный звук из черно-белого фильма и добавил его к цветному, используя iMovie. Окончательный результат здесь:

Довольно круто, не так ли? ;-)

6. Дань Сантосу Дюмону

как разрисовать видео

Воспользовавшись возможностью раскрасить старые фотографии и видео, я решил почтить память одного из великих изобретателей прошлого века Альберто Сантоса-Дюмонта.

Сантос-Дюмон(1873–1932) был бразильским изобретателем и пионером в области авиации, одним из немногих, кто внес значительный вклад в разработку самолетов легче воздуха и воздуха тяжелее.

Наследник богатой семьи производителей кофе, Сантос-Дюмон посвятил себя авиационным исследованиям и экспериментам в Париже, где он провел большую часть своей взрослой жизни. В начале своей карьеры он спроектировал, построил и управлял воздушными шарами и ранними дирижаблями, кульминацией которого стал выигрыш премии «Немецкий язык» 19 октября 1901 года за полет вокруг Эйфелевой башни. Затем он обратился к машинам тяжелее воздуха, и 23 октября 1906 года его 14-й самолет стал первым в Европе полетом с двигателем тяжелее воздуха, получившим сертификат Aéro-Club de France и Fédération Aéronautique Internationale. Его убежденность в том, что авиация откроет эру мира и процветания во всем мире, привела его к тому, что он мог свободно публиковать свои проекты и отказываться от патентования своих различных инноваций.

Сантос-Дюмон был действительно ранним адептом Открытой Науки, его целью было сделать добро для человечества. Одним из примеров было то, что все планы егохвостовкасамолет был открыто опубликован в журнале «Популярная механика» в декабре 1909 года, где было заявлено:чтобы поощрять авиацию, и любой может использовать свои планы по созданию аналогичной машины.

как разрисовать видео

Все фотографии на этой работе относятся к первому десятилетию XX века и были полностью раскрашены компьютером, используя технику, описанную в этой статье, включая видео ниже. Я надеюсь, что вы цените это.

7. Заключение

Как всегда, я надеюсь, что этот проект поможет другим найти свой путь в захватывающий мир Data Science!

Для получения подробной информации и окончательного кода, пожалуйста, посетите мой репозиторий GitHub:MJRoBot-Python4DS

Салудос с юга мира!

Увидимся в моей следующей статье!

Спасибо,

Marcelo

Оригинальная статья

Comments