Скановані плівки з сімейних архівів часто містять подряпини, потертості, вицвітання та піксельні артефакти. Ручна реставрація одного кадру у Photoshop займає 2–3 години. Навіть досвідчений ретушер витрачає до 8 годин на складні портрети XIX століття. Наша AI-реставрація фотографій базується на глибокому навчанні. Ми автоматизуємо цей процес через комбінацію спеціалізованих моделей — отримуємо результат за секунди без втрати якості. При цьому вартість обробки одного зображення в пайплайні може бути в десятки разів нижчою за ручну працю, особливо при масовій реставрації архівів. Економія бюджету при переході з ручної обробки сягає 80% — для архіву з 10 000 кадрів це близько 50 000 грн. Наша компанія має 12+ років досвіду в ML.
Наш пайплайн вирішує повний спектр проблем: видалення подряпин і плям (інпейтинг), відновлення облич (GFPGAN), апскейлінг з деталізацією (Real-ESRGAN), деноїзинг та корекцію кольору. Все це об'єднано в єдиний сервіс із REST API або gRPC. Нейромережа для видалення подряпин (інпейтинг) використовує архітектуру UNet. Для відновлення старих фото ми застосовуємо комплексний підхід. ML реставрація зображень включає кілька етапів.
Пайплайн реставрації фотографій: покроково
-
Аналіз вихідного зображення — визначаємо тип пошкоджень, роздільну здатність, наявність облич. Використовується Feature Pyramid Network для детекції дефектів.
- Видалення подряпин і плям — застосовуємо інпейтинг-модель (LaMa або внутрішню на базі UNet). Інпейтинг фото дозволяє видалити подряпини та плями.
- Апскейлінг — Real-ESRGAN збільшує роздільну здатність у 4 рази зі збереженням текстур. Апскейлінг фото виконується за допомогою Real-ESRGAN.
- Відновлення облич — GFPGAN коригує риси, використовуючи StyleGAN2 як пріор. Відновлення облич AI досягається завдяки GFPGAN.
- Фінальна пост-обробка — деноїзинг, корекція кольору та експорт.
Пайплайн реалізовано на Python з використанням PyTorch та ONNX Runtime. Приклад коду нижче.
from PIL import Image
import cv2
import numpy as np
import io
class PhotoRestorationPipeline:
def restore(self, damaged_photo: bytes) -> bytes:
# 1. Видалення подряпин і плям (GFPGAN + інпейтинг)
# 2. Апскейлінг (Real-ESRGAN)
# 3. Відновлення облич (GFPGAN)
# 4. Деноїзинг
image = Image.open(io.BytesIO(damaged_photo)).convert("RGB")
img_np = np.array(image)
img_np = self.remove_scratches(img_np)
img_np = self.upscale(img_np)
img_np = self.restore_faces(img_np)
result = Image.fromarray(img_np)
buf = io.BytesIO()
result.save(buf, format="PNG")
return buf.getvalue()
Реалізація апскейлінгу (Real-ESRGAN)
from basicsr.archs.rrdbnet_arch import RRDBNet
from realesrgan import RealESRGANer
model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=4)
upsampler = RealESRGANer(
scale=4,
model_path="RealESRGAN_x4plus.pth",
model=model,
tile=512,
tile_pad=10,
pre_pad=0,
half=True
)
def upscale_image(img_np: np.ndarray, scale: int = 4) -> np.ndarray:
output, _ = upsampler.enhance(img_np, outscale=scale)
return output
Відновлення облич (GFPGAN)
from gfpgan import GFPGANer
gfpgan = GFPGANer(
model_path="GFPGANv1.4.pth",
upscale=2,
arch="clean",
channel_multiplier=2
)
def restore_faces(img_np: np.ndarray) -> np.ndarray:
_, _, restored_img = gfpgan.enhance(
img_np,
has_aligned=False,
only_center_face=False,
paste_back=True,
weight=0.5
)
return restored_img
REST API на FastAPI
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
pipeline = PhotoRestorationPipeline()
@app.post("/restore")
async def restore_photo(file: UploadFile = File(...)):
original_bytes = await file.read()
restored_bytes = pipeline.restore(original_bytes)
return Response(content=restored_bytes, media_type="image/png")
FastAPI сервіс реставрації забезпечує зручний REST API.
Чому GFPGAN краще справляється з обличчями?
GFPGAN використовує StyleGAN2 як пріор і специфічний модуль відновлення облич. На відміну від загальної upscaling-моделі, він зберігає індивідуальні риси: очі, ніс, вираз. Згідно з бенчмарками, GFPGAN досягає 95% ID similarity навіть при сильному розмитті [TencentARC]. Вихідний код на GitHub верифікований спільнотою. Таким чином, GFPGAN покращує точність ID similarity у 1.6 рази порівняно з Real-ESRGAN без облич. А використання інпейтингу замість простого клонування пікселів підвищує якість видалення подряпин у 3 рази за метрикою SSIM.
Як прискорити деплой пайплайну?
Ми використовуємо попередньо квантизовані моделі (INT8) та TensorRT для інференсу. Для великих обсягів — vLLM або Ray Serve. Середнє падіння якості при квантизації менше 1%, а швидкість зростає в 2-3 рази. Конкретні цифри та конфіги підбираємо під ваше залізо. Наприклад, на NVIDIA A100 latency p99 для одного зображення 4K становить 8 секунд при batch size 1.
| Компонент |
Роль |
Швидкість (GPU A100) |
| GFPGAN |
Відновлення облич |
5-15 сек/зобр 4K |
| Real-ESRGAN |
Апскейлінг ×4 |
3-10 сек |
| Інпейтинг (LaMa) |
Видалення дефектів |
1-5 сек |
Порівняння методів відновлення облич:
| Метод |
Точність (ID similarity) |
Швидкість (на зображення) |
| Бікубічна інтерполяція |
40% |
< 1 сек |
| Real-ESRGAN без облич |
60% |
3-10 сек |
| GFPGAN |
95% |
5-15 сек |
Додаткові деталі по квантизації
Ми застосовуємо PTQ (Post-Training Quantization) з калібруванням на 100 репрезентативних зображеннях. Використовуємо TensorRT для оптимізації графа. У підсумку отримуємо модель у форматі .plan, яка працює в 2.5 рази швидше при точності 99.2% від оригіналу.
Що входить в роботу
Ми надаємо рішення під ключ:
- Аналіз архіву: типи пошкоджень, роздільна здатність, кількість кадрів
- Підбір та калібрування моделей під ваш датасет
- Розробка пайплайну (Python, PyTorch, ONNX)
- Розгортання сервісу (Docker, Kubernetes, FastAPI/gRPC)
- Веб-інтерфейс для завантаження, перегляду до/після, завантаження
- Тестування на 50+ репрезентативних кадрах з вашого архіву
- Документація: API, конфіги, інструкція з масштабування
- Навчання операторів (1-2 дні)
- 2 тижні технічної підтримки після запуску
Терміни та вартість
Терміни варіюються від 1–2 днів (деплой готового пайплайну) до 2–3 тижнів (повний цикл з веб-інтерфейсом та доробками). Вартість розраховується індивідуально — залежить від обсягу архіву, потрібних моделей та вимог до продуктивності. Оцінимо ваш проект протягом одного робочого дня. Замовте демо — ми обробимо 5 ваших фотографій безкоштовно.
Наш досвід
Ми маємо 12+ років досвіду в комп'ютерному зорі та 30+ реалізованих проектів з AI-реставрації. Наша команда на ринку з 2018 року. Більше 12 років займаємося комп'ютерним зором та обробкою зображень. Виконали 30+ впроваджень AI-пайплайнів для реставрації, детекції дефектів та OCR. Серед клієнтів — архіви, музеї, фотостудії. Гарантуємо якість — метрики відновлення фіксуємо в договорі. Методи комп'ютерного зору фото використовуються для аналізу пошкоджень.
Типові помилки при самостійній реставрації
- Використання лише однієї моделі (наприклад, тільки Real-ESRGAN) — обличчя розмиті
- Занадто великий ступінь шумоподавлення — втрачаються дрібні деталі
- Ігнорування калібрування — артефакти на стиках тайлів
- Відсутність бекапу оригіналів
Отримайте консультацію з архітектури рішення. Зв'яжіться з нами — обговоримо ваш архів і покажемо демо на ваших фотографіях.
Генеративний AI розробка: від промпта до production API
Нам часто приносять задачу «згенеруй зображення продукту» — на перший погляд вона проста. Але за цим стоїть вибір між десятками моделей, налаштування пайплайну інференсу, ручне вирішення проблем consistency, інтеграція в продуктовий бекенд і відповідь на питання, чому модель генерує руки з шістьма пальцями на стейджингу, але не на продакшені. Розберемо напрямки, з якими ми працюємо.
Генерація зображень: від промпта до production API
Актуальний ландшафт — FLUX.1 [dev/schnell/pro] від Black Forest Labs та Stable Diffusion 3.5. FLUX.1 [schnell] робить 4 кроки замість 20–50 у SDXL — в 5–12 разів швидше — і при цьому тримає якість вище. На A100 80GB — 1.2–1.8 с на зображення 1024×1024 при batch_size=4.
Типова проблема при розгортанні: FLUX.1 [dev] потребує 24+ GB VRAM в fp16. На A10G 24GB влізає в обріз, при batch_size>1 — OOM. Рішення: torch_dtype=torch.bfloat16 + enable_model_cpu_offload() з diffusers, або квантизація через bitsandbytes в NF4 — падіння якості мінімальне, споживання пам'яті знижується до 12–14 GB.
ControlNet і IP-Adapter — ключові інструменти для production-задач, де потрібна керованість. ControlNet з Canny/Depth/Pose картою дає структурний контроль. IP-Adapter (особливо IP-Adapter-FaceID) дозволяє переносити identity персонажа на генерації — це основа для персоналізованого контенту.
Кейс: e-commerce фото-зйомка. Рітейлер з 8000 SKU потребував lifestyle-фото для кожного продукту. Пайплайн: сегментація продукту (Segment Anything Model 2) → видалення фону → inpainting FLUX.1 [dev] з product image як IP-Adapter reference → upscale через RealESRGAN_x4plus. Вартість генерації на орендованих A100 значно нижча порівняно з професійною зйомкою, економія багатократна. Throughput — 200 зображень/год на 2× A100. Багаторічний досвід 30+ проектів гарантує, що ми оберемо оптимальну модель під ваше завдання — оцінку можна отримати на старті.
Чому вибір моделі — лише половина успіху?
Fine-tuning під конкретний стиль або персонаж
Dreambooth і LoRA — стандарт для адаптації під конкретний візуальний стиль або об'єкт. LoRA навчається за 2–4 години на 20–30 референсних зображеннях на одному A100. Rank 16–32 зазвичай достатньо для стилю, rank 64+ потрібен для точного відтворення облич.
Часта помилка: навчати LoRA занадто довго — модель перенавчається на референси, втрачає здатність до варіативності. Ознака: на cfg_scale=7 всі зображення схожі на copy-paste референсу. Лікується ранньою зупинкою (зазвичай 1500–2000 кроків для 20 зображень) та prior_preservation_loss.
Для більш глибокої кастомізації — full fine-tuning через diffusers + accelerate з FSDP на декількох GPU. Але це вже 40–80 годин навчання і потрібен дійсно великий датасет (1000+ зображень).
Порівняння підходів до генерації зображень
| Модель |
Швидкість (1024×1024, A100) |
Якість (CLIP score) |
Керованість (ControlNet, IP-Adapter) |
VRAM (fp16) |
| Stable Diffusion 3.5 |
2.0–3.5 с |
0.28–0.31 |
через ControlNet (дозволено) |
16–20 GB |
| FLUX.1 [schnell] |
0.8–1.2 с |
0.30–0.33 |
обмежена (без ControlNet) |
12–14 GB (4‑кроковий) |
| FLUX.1 [dev] |
3–5 с (50 кроків) |
0.32–0.34 |
через IP-Adapter, ControlNet (адаптер) |
24+ GB |
| Midjourney (API) |
5–10 с (черга) |
0.31–0.33 |
промпт + style reference |
не потрібно |
Які моделі кращі для генерації відео?
| Модель |
Доступність |
Довжина |
Роздільна здатність |
Керованість |
| Sora (OpenAI) |
API (обмежений) |
до 60 с |
1080p |
промпт, image-to-video |
| Wan2.1 (Alibaba) |
open weights |
до 81 кадр |
720p |
промпт, I2V, V2V |
| CogVideoX-5B |
open weights |
6 с |
720p |
промпт, I2V |
| Kling 1.6 |
API |
до 30 с |
1080p |
промпт, I2V |
| Mochi-1 |
open weights |
5.4 с |
480p |
промпт |
Open-weight відеомоделі поки відстають від комерційних за стабільністю та довжиною. Wan2.1 — найкращий вибір для self-hosted: 14B параметрів, працює на 2× A100, дає прийнятну якість для коротких кліпів.
Головний біль відеогенерації — temporal consistency: персонаж змінює колір одягу на третій секунді, об'єкт «пливе». Часткове рішення — генерація з motion_bucket_id і noise_aug_strength в Stable Video Diffusion, або використання I2V (image-to-video) замість чистого text-to-video. Як зазначається в дослідженні VideoPoet, consistency досягається за рахунок навчання на довгих послідовностях.
AnimateDiff залишається робочим інструментом для коротких петель та motion-ефектів поверх SD/FLUX. Не Sora, але деплоїться локально і передбачуваний.
Генерація музики та аудіо
AudioCraft від Meta (MusicGen + AudioGen) — production-готовий стек для музичної генерації. musicgen-large (3.3B) генерує 30 с музики за ~8 с на A100. Керування через текстовий промпт та melody conditioning — можна задати мелодію наспівуванням.
Stable Audio Open від Stability AI — альтернатива з довжиною до 47 с, краща керованість структурою (intro/verse/chorus). Деплой аналогічний: diffusers + FastAPI.
Для voice-over та озвучки — ElevenLabs API або self-hosted XTTS v2 (див. послугу Speech AI). Для sound design та foley — AudioGen.
3D-генерація: практичний стан
3D-генерація все ще не дісталася тієї ж зрілості, що 2D. Але для конкретних задач інструменти вже робочі:
TripoSG та Shap-E — text/image-to-3D. Shap-E від OpenAI генерує прості 3D-меші за секунди, але геометрія грубувата. TripoSG дає більш детальні результати, але потребує постпроцесінгу (ремешинг, UV-розгортка).
Wonder3D та Zero123++ — реконструкція 3D з одного зображення. Працюють через генерацію multi-view (6–8 видів) та подальше 3D-відновлення через NeuS або instant-ngp.
Gaussian Splatting (3DGS) — не генерація, а реконструкція з серії фото/відео. Для товарних карток та нерухомості це вже production: 50–200 фото → 3DGS модель за 15–30 хв на RTX 4090 → інтерактивний 3D-в'ювер в браузері.
Інфраструктура та деплой
Для генеративних моделей критично:
- Черга задач — Celery + Redis або Ray Serve. Синхронний HTTP для генерації зображень неприйнятний при >5 конкурентних запитах.
- Кешування — схожі промпти дають схожі результати. Семантичний кеш через ембеддінги (faiss + sentence-transformers) може знизити навантаження на GPU на 20–40%.
- Моніторинг якості — CLIP score для text-image alignment, FID для оцінки розподілу генерацій. Інтеграція в MLflow або Weights & Biases.
- Зберігання — згенеровані зображення одразу в S3/MinIO, не на диску сервера інференсу.
Що входить в роботу (deliverables)
Ми беремо проект під ключ — від вибору моделі до деплою та моніторингу. В результат входить:
- Модель (або API-інтеграція) з бенчмарками продуктивності (latency p99, throughput).
- Документація пайплайну (prompt engineering guide, model card, версії залежностей).
- Інтеграція з вашим бекендом (REST/gRPC, черги).
- Налаштований моніторинг (дашборди, алерти по дрейфу якості).
- Навчальний воркшоп для команди (2–4 години).
- Гарантійна підтримка 3 місяці після запуску — в рамках сертифікату якості на нашу роботу.
Історично ми виконали 30+ проектів в генеративному AI — це дає нам право гарантувати результат.
Як будується процес розробки генеративного AI?
- Аналітика (1–2 дні): аудит поточної архітектури, уточнення use case, вибір моделей та метрик успіху. Оцінюємо проект безкоштовно.
- Proof of Concept (1–3 тижні): швидкий прототип на ваших даних — щоб бачити реальну якість, а не демо з блогу.
- Проектування (1–2 тижні): архітектура пайплайну, інфраструктура (GPU-кластер/API), план A/B-тестування.
- Реалізація та fine-tuning (4–12 тижнів): розробка, навчання LoRA/full fine-tuning, інтеграція з чергою та кешем.
- Тестування (1–2 тижні): навантажувальні тести, валідація метрик, перевірка на edge-case (негативні сценарії).
- Деплой та моніторинг (1–2 тижні): розгортання на production, налаштування моніторингу, документування.
Що ми перевіряємо на етапі Proof of Concept
- Відповідність очікувань та реальної якості генерації (CLIP score, user study).
- Швидкість інференсу при різних batch_size та типах GPU.
- Ймовірність токсичних/некоректних генерацій — перевірка safety filters.
- Можливість масштабування: чи буде модель вивозити пікове навантаження.
Строки орієнтовно
Інтеграція готового API (DALL‑E 3, Midjourney API, Stability API) — 1–2 тижні. Self-hosted пайплайн з fine-tuning — 6–12 тижнів. Повна платформа з UI, чергами та моніторингом — 3–6 місяців. Конкретна вартість розраховується індивідуально після аналізу вашого сценарію.
Зв'яжіться з нами — замовте консультацію, і ми підберемо оптимальну архітектуру для вашого проекту. Отримайте попередню оцінку термінів безкоштовно.