У обычной Depth-Anything проблема с консистентностью в видео
Уверен, что там много проблем, и уверен что в конвертации 2D -> 3D вообще очень много проблем, но я вам еще раз говорю - я посмотрел около десятка фильмов, все очень хорошо, меня удовлетворило на 90% (10% на всякий случай оставлю, все-таки не нативное 3D).
Добавьте функцию создания анаглифа, сделайте параллакс чуть более агрессивным и дрожь станет более заметной
Зачем? Параллакс 10-15, все отлично. Зачем что-то еще делать?
А я эту дрожь и так вижу
Я на своем смартфоне иногда вижу черные полосы, особенности матрицы, и что? Меня устраивает мой смартфон на 100%, а придраться можно к чему угодно.
За сим предлагаю закончить этот спор, конструктива мало. Выше я просил вас предоставить или прокомментировать ваш код, если найдете минуту, прошу вас.
Спасибо большое! Мне пока не встречались готовые опенсорс утилиты.
Сложновато выглядит на первый взгляд, много непонятных сходу настроек, но интересно будет изучить. Я планирую написать свою утилиту, только проще, оставив самое главное. Может быть отправлю вам на сравнение, если не забуду.
ПС:
Скоро должна выйти модель "Deep Anything V2 - Giant"
Вы уверены, что скоро? ) Я наблюдаю за их гитхабом, там надпись "Coming soon" висит уже несколько месяцев.
Код здесь выполняет конкретную задачу, он с ней справляется. Скрипты я писал не для конкурса красоты, а для того, чтобы быстро, в свободное время, реализовать задачу.
"потребуется порядка 400–500Гб". У меня тоже глаза чуть не вытекли, когда это увидел
Прочитайте статью внимательнее, там я написал, что сейчас работаю над скриптом, чтобы выгружать фреймы пачками. Собственно я это давно реализовал, но дорабатываю скрипты, чтобы оформить все это в GUI, тогда будет еще проще (хотя лично для меня и так все уже вполне удобно).
я переделал на чтение видео по кадрам из python, инференс, покадровая запись
Поделитесь пожалуйста, возможно включу это в свой вайб код скрипт. Хотя "по кадрам" уже звучит очень странно, по 1 кадру? И что, правда, выгружаете 1 кадр, потом тут же его кодируете в видео? А аудио как подключаете, по миллисекундам? Это как? Не сочтите за троллинг или что такое, мне правда интересно что вы подразумеваете под "чтение видео по кадрам" и "покадровая запись". Кодеки кодируют видео на основе ближайших кадров, как вы покадрово записываете, это слайд-шоу из фреймов? Или все таки пачками? Я например делаю пачками, если опять таки вы читали статью, там это указано, причем пачки (чанки) обрабатываются в потоках, что значительно ускоряет процесс.
весь пайплайн можно на gpu переписать - будет быстрее
Первая мысль была все перенести на GPU, но пока не получилось добиться прироста скорости, там все равно есть преобразования CPU-GPU-CPU, которые вероятно самое узкое место. Впрочем, признаться, тут я сильно не копался, вероятно можно оптимизировать лучше, но даже в этой реализации, через cv2, все работает довольно быстро, а самое ресурсозатратное здесь это генерация глубины. Я пробовал доработать библиотеку Depth-Anything-V2 чтобы на вход можно было подавать не одно изображение, а батчи из 2х и более, и даже получилось передать батчи, но время обработки не изменилось.... Впрочем здесь я тоже долго не мучался, т.к. это "проект выходного дня" и в целом все работает в разумное время, возможно позже все-таки домучаю, а может к тому времени уже что-то новое выйдет.
metric depth или depth модели для видео
А можно название модели или ссылку для примера? В данной реализации, через покадровую обработку, в целом все хорошо, нет мельканий и какой-либо "разности смежных кадров", только очень редко бывает перескок фокуса на объектах в динамичных сценах, но это совсем не критично, бывает редко и заметно если специально это искать. В общем, для обычного домашнего применения в целом достаточно и этой реализации через Depth-Anything-V2 (думаю любая другая модель глубин также подойдет)
Я конвертирую 2D в 3D с помощью нейронки Depth-Anything-V2 (модель Large), все делается относительно быстро на обычном домашнем ПК. Качество, ну, меня, как фаната 3D, вполне устраивает. По 100 бальной шкале охарактеризовал бы на 80-90 баллов, а учитывая простоту и дешевизну метода, то и все 100. Специально даже сравнивал отрендеренный Кэмероном Терминатор-2 3D и свой рендер, мне свой больше понравился, глубина ближних объектов ощущалась лучше. Но дальний план, к сожалению, слабо обрабатывается, возможно на новых моделях будет лучше. Впрочем, дальний план он, гм, дальний, глубина там слабо различима хоть в каком 3D, во всяком случае в разы меньше переднего и среднего плана.
Я написал здесь статью как рендерил, может вам будет интересно:
Если кратко, суть: разбираем исходное видео на кадры; для каждого кадра с помощью Depth-Anything-V2 рассчитываем карту глубины (вообще любая нейронка расчета глубины годится); на основе исходного кадра и его карты глубины создаем 3D версию кадра через параллакс; затем компилируем из полученных 3D кадров итоговое видео. Получается почти полноценное 3D, если не знать, то сложно отличить от настоящего, хороший объем и глубина, кроме разве что заднего (дальнего) плана, но это не критично.
Я уже много фильмов так пересмотрел, включая новинки (которые в 2D). Теперь меня не беспокоит "смерть 3D кино", я синтезирую его самостоятельно на домашнем ПК.
Основной потребитель ресурсов здесь - вычисление карты глубины (GPU). Затем идет создание параллакса (CPU), который, впрочем, делается относительно быстро. Загрузка и сохранение изображений занимает совсем незначительное время. Причем я пробовал делать так - загрузка с одного диска, сохранение на другой диск + несколько потоков обработки, разницы не случилось, к сожалению. Возможно здесь есть какое-то узкое место, хотя бы тот же Питон, или код нужно подправить. Я периодически копаюсь в этом, но в целом все работает относительно быстро, особенно на моделях Small и Base, может и нет особого смысла оптимизировать дальше.
Это уже вопрос авторских прав. Если нужно, могу скинуть отрывок, тизер так сказать, если у вас есть на чем смотреть (3D телевизор/проектор или VR). Напишите в личку.
Сжатие без потерь, меньше места на диске. У BMP сжатия совсем нет
используйте RAM диск для промежуточного хранения
Спасибо, а есть где посмотреть подробности о чем именно речь?
Подскажите нейронки для апскейлинга / удаления шума / удаления тряски
Многие (или большинство) моделей для апскейла также удаляют шум и прочие артефакты, это обусловлено тем, что они обучаются на специально заблюренных или излишне "зажепегеных" изображениях.
Из последних моделей мне понравились, например эти:
Искажения конечно есть, но в целом все смотрится очень хорошо и органично.
объем чувствуется только на небольшом расстоянии в 5-10м
Да, примерно так и есть. Задний план мало меняется, объем создается в основном для ближнего и среднего плана, и этого в целом достаточно. Возможно модель Giant (Depth-Anything-V2) или вообще другая новая модель, смогут детальнее работать с дальним планом. Уверен, это направление будет развиваться и дальше. Например, если сравнивать Depth-Anything-V1 и Depth-Anything-V2 - разница очень значительная в пользу последнего.
Вероятно вы имеете в виду аналоги конвертации на лету 2D -> 3D на 3D телевизорах? Ну там алгоритмы простые, качество 3D получается очень слабое, его практически нет, это скорее формальная функция, которой вряд ли кто-то пользовался.
Здесь же мы полностью перерисовываем материал, создаем его с нуля, от первоначальных данных ничего не остается (грубо). На базе каждого исходного фрейма мы рендерим его 3D пару, где в каждом фрейме объекты смещены (влево и вправо), это полностью перерисованная сцена.
Я думал насчет варианта "на лету", возможно на более мощном железе, например RTX 4900, а скорее пары RTX 4900, получится реализовать этот рендер, например на модели Small для видео 24fps. Но это дорогое удовольствие и более сложная разработка.
Вы хотя-бы заходили на страницу Video-Depth-Anything? Или только слышали звон? Ну вот хотя-бы насчет инференса:
https://github.com/DepthAnything/Video-Depth-Anything?tab=readme-ov-file#release-notes
23.6Gb VRAM на FP16 для модели Large
Уверен, что там много проблем, и уверен что в конвертации 2D -> 3D вообще очень много проблем, но я вам еще раз говорю - я посмотрел около десятка фильмов, все очень хорошо, меня удовлетворило на 90% (10% на всякий случай оставлю, все-таки не нативное 3D).
Зачем? Параллакс 10-15, все отлично. Зачем что-то еще делать?
Я на своем смартфоне иногда вижу черные полосы, особенности матрицы, и что? Меня устраивает мой смартфон на 100%, а придраться можно к чему угодно.
За сим предлагаю закончить этот спор, конструктива мало. Выше я просил вас предоставить или прокомментировать ваш код, если найдете минуту, прошу вас.
Спасибо большое! Мне пока не встречались готовые опенсорс утилиты.
Сложновато выглядит на первый взгляд, много непонятных сходу настроек, но интересно будет изучить. Я планирую написать свою утилиту, только проще, оставив самое главное. Может быть отправлю вам на сравнение, если не забуду.
ПС:
Вы уверены, что скоро? ) Я наблюдаю за их гитхабом, там надпись "Coming soon" висит уже несколько месяцев.
Я посмотрел уже с десяток фильмов, ничего не дрожит. Зачем вы утверждаете то, чего нет на самом деле?
Код здесь выполняет конкретную задачу, он с ней справляется. Скрипты я писал не для конкурса красоты, а для того, чтобы быстро, в свободное время, реализовать задачу.
Прочитайте статью внимательнее, там я написал, что сейчас работаю над скриптом, чтобы выгружать фреймы пачками. Собственно я это давно реализовал, но дорабатываю скрипты, чтобы оформить все это в GUI, тогда будет еще проще (хотя лично для меня и так все уже вполне удобно).
Поделитесь пожалуйста, возможно включу это в свой
вайб кодскрипт. Хотя "по кадрам" уже звучит очень странно, по 1 кадру? И что, правда, выгружаете 1 кадр, потом тут же его кодируете в видео? А аудио как подключаете, по миллисекундам? Это как? Не сочтите за троллинг или что такое, мне правда интересно что вы подразумеваете под "чтение видео по кадрам" и "покадровая запись". Кодеки кодируют видео на основе ближайших кадров, как вы покадрово записываете, это слайд-шоу из фреймов? Или все таки пачками? Я например делаю пачками, если опять таки вы читали статью, там это указано, причем пачки (чанки) обрабатываются в потоках, что значительно ускоряет процесс.Спасибо большое! Изучу этот момент.
Первая мысль была все перенести на GPU, но пока не получилось добиться прироста скорости, там все равно есть преобразования CPU-GPU-CPU, которые вероятно самое узкое место. Впрочем, признаться, тут я сильно не копался, вероятно можно оптимизировать лучше, но даже в этой реализации, через cv2, все работает довольно быстро, а самое ресурсозатратное здесь это генерация глубины. Я пробовал доработать библиотеку Depth-Anything-V2 чтобы на вход можно было подавать не одно изображение, а батчи из 2х и более, и даже получилось передать батчи, но время обработки не изменилось.... Впрочем здесь я тоже долго не мучался, т.к. это "проект выходного дня" и в целом все работает в разумное время, возможно позже все-таки домучаю, а может к тому времени уже что-то новое выйдет.
А можно название модели или ссылку для примера? В данной реализации, через покадровую обработку, в целом все хорошо, нет мельканий и какой-либо "разности смежных кадров", только очень редко бывает перескок фокуса на объектах в динамичных сценах, но это совсем не критично, бывает редко и заметно если специально это искать. В общем, для обычного домашнего применения в целом достаточно и этой реализации через Depth-Anything-V2 (думаю любая другая модель глубин также подойдет)
Я конвертирую 2D в 3D с помощью нейронки Depth-Anything-V2 (модель Large), все делается относительно быстро на обычном домашнем ПК. Качество, ну, меня, как фаната 3D, вполне устраивает. По 100 бальной шкале охарактеризовал бы на 80-90 баллов, а учитывая простоту и дешевизну метода, то и все 100. Специально даже сравнивал отрендеренный Кэмероном Терминатор-2 3D и свой рендер, мне свой больше понравился, глубина ближних объектов ощущалась лучше. Но дальний план, к сожалению, слабо обрабатывается, возможно на новых моделях будет лучше. Впрочем, дальний план он, гм, дальний, глубина там слабо различима хоть в каком 3D, во всяком случае в разы меньше переднего и среднего плана.
Я написал здесь статью как рендерил, может вам будет интересно:
https://habr.com/ru/articles/897860
Там и модели и код есть, немного примеров, что получилось. Крайне интересно будет услышать ваше мнение и комментарии, если найдете минуту.
Можно узнать чем именно конвертировали?
По теме вашей статьи, возможно будет интересно, моя статья здесь же на Хабре:
Как сделать 3D версию любого фильма на примере StarWars4
Если кратко, суть: разбираем исходное видео на кадры; для каждого кадра с помощью Depth-Anything-V2 рассчитываем карту глубины (вообще любая нейронка расчета глубины годится); на основе исходного кадра и его карты глубины создаем 3D версию кадра через параллакс; затем компилируем из полученных 3D кадров итоговое видео. Получается почти полноценное 3D, если не знать, то сложно отличить от настоящего, хороший объем и глубина, кроме разве что заднего (дальнего) плана, но это не критично.
Я уже много фильмов так пересмотрел, включая новинки (которые в 2D). Теперь меня не беспокоит "смерть 3D кино", я синтезирую его самостоятельно на домашнем ПК.
Приветствую! Специально не проверял, возможно позже протестирую
Основной потребитель ресурсов здесь - вычисление карты глубины (GPU). Затем идет создание параллакса (CPU), который, впрочем, делается относительно быстро. Загрузка и сохранение изображений занимает совсем незначительное время. Причем я пробовал делать так - загрузка с одного диска, сохранение на другой диск + несколько потоков обработки, разницы не случилось, к сожалению. Возможно здесь есть какое-то узкое место, хотя бы тот же Питон, или код нужно подправить. Я периодически копаюсь в этом, но в целом все работает относительно быстро, особенно на моделях Small и Base, может и нет особого смысла оптимизировать дальше.
Это уже вопрос авторских прав. Если нужно, могу скинуть отрывок, тизер так сказать, если у вас есть на чем смотреть (3D телевизор/проектор или VR). Напишите в личку.
В 3D очках на 3D телевизоре/проекторе (то есть, которые поддерживают 3D), либо шлемы VR
Сжатие без потерь, меньше места на диске. У BMP сжатия совсем нет
Спасибо, а есть где посмотреть подробности о чем именно речь?
Многие (или большинство) моделей для апскейла также удаляют шум и прочие артефакты, это обусловлено тем, что они обучаются на специально заблюренных или излишне "зажепегеных" изображениях.
Из последних моделей мне понравились, например эти:
realSR_BSRGAN_DFO_s64w8_SwinIR-M_x2_GAN
realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN
Можете найти их тут: https://github.com/JingyunLiang/SwinIR/releases
Они хорошо апскейлят, и, важно - не создают эффект пластилиновости, искусственности.
Еще очень много моделей тут: https://openmodeldb.info/
В основном там тюны, заточенные под определенные вещи (аниме, игры и тд).
Искажения конечно есть, но в целом все смотрится очень хорошо и органично.
Да, примерно так и есть. Задний план мало меняется, объем создается в основном для ближнего и среднего плана, и этого в целом достаточно. Возможно модель Giant (Depth-Anything-V2) или вообще другая новая модель, смогут детальнее работать с дальним планом. Уверен, это направление будет развиваться и дальше. Например, если сравнивать Depth-Anything-V1 и Depth-Anything-V2 - разница очень значительная в пользу последнего.
Вероятно вы имеете в виду аналоги конвертации на лету 2D -> 3D на 3D телевизорах? Ну там алгоритмы простые, качество 3D получается очень слабое, его практически нет, это скорее формальная функция, которой вряд ли кто-то пользовался.
Здесь же мы полностью перерисовываем материал, создаем его с нуля, от первоначальных данных ничего не остается (грубо). На базе каждого исходного фрейма мы рендерим его 3D пару, где в каждом фрейме объекты смещены (влево и вправо), это полностью перерисованная сцена.
Я думал насчет варианта "на лету", возможно на более мощном железе, например RTX 4900, а скорее пары RTX 4900, получится реализовать этот рендер, например на модели Small для видео 24fps. Но это дорогое удовольствие и более сложная разработка.
- этот момент не понятно, о чем речь?
Спасибо