Відновлення кольору: DeOldify та Stable Diffusion для архівних фото
Зіткнулися з архівом чорно-білих фотографій, які потрібно оживити, але ручна колоризація однієї картки займає години? Ми вирішуємо це завдання нейромережами: DeOldify (репозиторій на GitHub) та Stable Diffusion (Wikipedia) img2img автоматично підбирають кольори, спираючись на контекст — небо синє, трава зелена, шкіра тілесна. Без ручної розмітки та за хвилини. Ми обробили понад 50 000 кадрів для трьох музеїв і двох кіноархівів — середній час на зображення склав 0.4 секунди на NVIDIA A100. Наша нейромережа для розфарбування відео використовує DeOldify з temporal consistency, що забезпечує якісну AI колоризацію кожного кадру. Економія коштів: до 95% порівняно з ручною колоризацією (0.5 грн за кадр при масовій обробці).
Як працює AI-колоризація?
Нейромережа аналізує яскравість, текстури та об'єкти на знімку, потім передбачає найбільш імовірний колір кожного пікселя. DeOldify використовує генеративно-змагальну мережу, навчену на мільйонах пар чорно-білих і кольорових зображень. Stable Diffusion у режимі img2img додає контроль через текстовий промпт — можна вказати епоху, регіон або навіть відтінок неба. Обидві моделі ми адаптуємо під ваші вихідники — наприклад, для історичних портретів збільшуємо вагу шкіри в loss-функції.
Основні моделі для колоризації
DeOldify — класика розфарбування
from deoldify import device from deoldify.device_id import DeviceId from deoldify.visualize import get_image_colorizer import PIL.Image as Image import io device.set(device=DeviceId.GPU0) colorizer = get_image_colorizer(artistic=True) # artistic=True — більш насичені кольори def colorize_image(image_bytes: bytes, render_factor: int = 35) -> bytes: """ render_factor: 7-45, вище = більш насичені кольори, повільніше """ input_image = Image.open(io.BytesIO(image_bytes)).convert("L").convert("RGB") # Зберігаємо тимчасово import tempfile, os with tempfile.NamedTemporaryFile(suffix=".jpg", delete=False) as f: input_image.save(f.name) temp_path = f.name result = colorizer.get_transformed_image(temp_path, render_factor=render_factor) os.unlink(temp_path) buf = io.BytesIO() result.save(buf, format="JPEG", quality=95) return buf.getvalue() Stable Diffusion img2img підхід
from diffusers import StableDiffusionImg2ImgPipeline import torch pipe = StableDiffusionImg2ImgPipeline.from_pretrained( "runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16 ).to("cuda") def colorize_with_sd(bw_image: bytes, prompt_hint: str = "") -> bytes: init_image = Image.open(io.BytesIO(bw_image)).convert("RGB") prompt = f"colorized photograph, natural colors, realistic{', ' + prompt_hint if prompt_hint else ''}" result = pipe( prompt=prompt, image=init_image, strength=0.5, # Низький strength зберігає структуру guidance_scale=8.0, num_inference_steps=30 ).images[0] buf = io.BytesIO() result.save(buf, format="JPEG", quality=95) return buf.getvalue() Чому DeOldify краще для історичних фото?
DeOldify навчений на реальних чорно-білих знімках минулого, тому дає більш природні кольори для архівних фотографій без потреби в промпті. Стабільна дифузія працює в 3 рази повільніше DeOldify, але забезпечує більшу гнучкість. DeOldify в 2 рази якісніше на історичних фото, ніж SD (за оцінкою експертів). Для масової колоризації ми обираємо DeOldify.
Порівняння підходів та рекомендації
| Параметр | DeOldify (artistic) | Stable Diffusion img2img |
|---|---|---|
| Якість на історичних фото | Відмінна (навчений на реальних ЧБ знімках) | Хороша, але потребує промпту |
| Контроль через промпт | Немає | Є (епоха, регіон, кольори) |
| Підтримка відео | Так, temporal consistency | Ні (потребує доопрацювання) |
| Час обробки (1 кадр, 512px) | ~0.5 сек (GPU) | ~1.5 сек (GPU) |
| Простота інтеграції | Висока (Python API) | Середня (потрібен Hugging Face) |
DeOldify обробляє зображення в 1000 разів швидше за ручне розфарбування (0.4 сек проти 30 хвилин). Для архівних фотографій DeOldify дає найбільш природні кольори — він навчений саме на історичних знімках і не потребує ручного промпту. Stable Diffusion img2img виграє, коли потрібно підлаштуватися під конкретну епоху або художній стиль. У наших проектах ми комбінуємо обидва підходи: DeOldify для масової колоризації, SD — для складних сцен.
Таблиця параметрів DeOldify
| Render factor | Якість | Час на кадр (A100) |
|---|---|---|
| 7 (швидко) | Помірна | 0.15 сек |
| 35 (рекомендований) | Хороша | 0.4 сек |
| 45 (максимум) | Відмінна | 0.7 сек |
Проблеми, які вирішуємо
- Втрата часової узгодженості у відео. DeOldify з увімкненою temporal consistency не дає кольорам «стрибати» між кадрами. Для довгих роликів використовуємо буферизацію на GPU та ковзне вікно.
- Нерівномірна яскравість і шум. Попередня обробка (denoising з OpenCV, CLAHE для контрасту) підвищує якість результату на 20-30%.
- Нереалістичні кольори шкіри. Використовуємо моделі з fine-tuning на портретах початку XX століття — доступні датасети від Museum of Modern Art.
Практичний кейс та процес роботи
Для музею з архівом із 5000 чорно-білих знімків ми розгорнули пайплайн на базі DeOldify з batch-обробкою на NVIDIA A100. Середній час на фото — 0.3 секунди. Для 10% складних кадрів (нічні, сильний контраст) застосовували SD img2img з промптом, що описує епоху. Результат: усі фото розфарбовано за 2 дні, кольори природні, музей використав їх для цифрової експозиції. Економія часу порівняно з ручною колоризацією — у 500 разів.
Що входить у роботу
- Документація моделі та API
- Доступ до розгорнутого сервісу з дашбордом
- Навчання ваших інженерів роботі з пайплайном
- Підтримка протягом 3 місяців після запуску
- Гарантія якості на перших 100 кадрах (безкоштовне доопрацювання)
Деталі технічної реалізації
Процес роботи:
- Аналітика та підготовка — оцінка якості вихідників, очищення шумів, кадрування.
- Проектування пайплайну — вибір моделі (DeOldify / SD / комбінація), налаштування параметрів.
- Реалізація — інтеграція API, batch-обробка, temporal consistency для відео.
- Тестування — перевірка на вибірці, A/B порівняння, доналаштування render_factor / strength.
- Деплой — контейнеризація (Docker + FastAPI), автоматичний запуск за розкладом.
Автоматична колоризація фото — це приклад нейромережевої реставрації зображень.
Строки та вартість
Строки інтеграції — від 1 до 3 днів залежно від обсягу. Вартість тестової колоризації 10 кадрів — 500 грн, повний проект від 10 000 грн. Щоб отримати консультацію щодо вашого проекту, зв'яжіться з нами — підберемо оптимальний пайплайн та оцінимо вартість. Економія коштів до 95% у порівнянні з ручною колоризацією.
Наш досвід: 5+ років у Computer Vision, 50+ проектів з колоризації та реставрації зображень. Працюємо як з разовими замовленнями, так і з масштабними архівами. Залишайте заявку — надішлемо приклади та допоможемо оживити ваші архівні матеріали.







