Генерація відео з зображення та тексту за допомогою ШІ
Я не є data scientist, але цікавлюся комп’ютерним зором. Тому періодично переглядаю, що нового з’являється на GitHub та Kaggle у пошуках цікавих проєктів та натхнення. Тут я хотів би описати одну зі своїх знахідок.
Перш ніж перейти до конкретних деталей, дозвольте мені окреслити свої критерії та очікування від проєктів, які я досліджую:
- Безкоштовність: Проєкт має бути безкоштовним.
- Простота використання: Він повинен бути легким у реалізації, бажано на Python, що можна запустити на Kaggle (не API).
- Креативність: Проєкт має сприяти творчості.
- Розваги: Процес має бути приємним та захоплюючим.
Що я знайшов
Одного вечора я натрапив на цікавий репозиторій на GitHub: Cinemo. Зацікавившись, я вирішив зануритися глибше та дослідити його. Цей проєкт містить попередньо натреновану модель і надає можливість створювати відео зі зображень та тексту, що ви очікуєте побачити. Він використовує Motion Diffusion Models, що ще більше зацікавило мене.
Тому я створив notebook на Kaggle і розпочав тестування.
Крок 1: Клонування репозиторію
Спершу клонування репозиторію з GitHub:
!git clone https://github.com/maxin-cn/Cinemo
Крок 2: Встановлення залежностей
Далі встановлення всіх необхідних залежностей:
!pip install diffusers[torch]==0.24.0 !pip install timm !pip install accelerate !pip install python-hostlist !pip install tensorboard !pip install einops !pip install transformers !pip install av !pip install scikit-image !pip install decord !pip install omegaconf !pip install torch-dct !pip install imageio-ffmpeg !pip install moviepy
Бібліотека imageio-ffmpeg
потрібна для створення GIF з відео, що полегшує їх вбудовування в HTML. Бібліотека moviepy
дозволяє переглядати результати безпосередньо у блокноті
Крок 3: Імпорт необхідних бібліотек
Імпорт усіх необхідних бібліотек:
import os import sys import shutil import requests from base64 import b64encode from IPython.display import HTML from moviepy.editor import VideoFileClip
Cinemo
до свого path:Крок 4: Збереження зображення
Збереження зображення, з якого ви хочете створити відео. Для цього прикладу я використав класичне фото Lena
.
Крок 5: Збереження файлу конфігурації
Створення файлу конфігурації з параметрами можна знайти тут.
Параметри, які варто тестити в першу чергу:
- video_length: 15
- use_dct: False
- num_sampling_steps: 300
а ось тут потрібно вказати файл (зображення) з якого потрібно зробити відео і текст (що ви очікуєте отримати)
[’Lena.jpg’, ’winks with eyes and smiling’], [’Lena.jpg’, ’winks with eyes’], [’Lena.jpg’, ’winks with eyes’],
Крок 6: Генерація відео
Для генерації відео виконайте функцію main
з проєкту Cinemo
з файлом конфігурації. (в колі я скопіював повністю код, але достатньо лише її імпортувати)
main(OmegaConf.load("/kaggle/working/config.yaml"))
Крок 7: Перегляд результатів
Нарешті, після завершення обробки, ви можете переглянути згенероване відео.
def play(filename): html = '' video = open(filename, 'rb').read() src = 'data:video/mp4;base64,' + b64encode(video).decode() html += '<video width=1000 controls autoplay loop><source src="%s" type="video/mp4"></video>' % src return HTML(html) video_path = "/kaggle/working/sample_videos/" for file in os.listdir(video_path): if file.endswith(".mp4"): file_path = os.path.join(video_path, file) videoClip = VideoFileClip(file_path) file_path_gif = file_path.replace(".mp4", ".gif") videoClip.write_gif(file_path_gif) display(play(file_path))
Висновок
Дослідження проєктів ШІ, таких як Cinemo
, було захопливим досвідом, що дозволило мені поєднати свій інтерес до комп’ютерного зору з практичними застосуваннями. Наступний крок — можна подумати про практичні способи використання цих результатів. Ось кілька ідей:
- Створення мемів: Створюйте смішний та захопливий контент.
- Особисті відео: Робіть відео з друзями та діліться ними для розваги.
- Створити набори даних: Генеруйте набори даних для навчання інших моделей. Якщо у вас є інші ідеї, буду радий їх почути.
1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів