Реалізація AI-реставрації пошкоджених фотографій

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Реалізація AI-реставрації пошкоджених фотографій
Простий
~2-3 дні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

AI-реставрація старих та пошкоджених фотографій

AI-реставрація усуває пошкодження старих фотографій: подряпини, плями, потертості, піксельність, артефакти стиснення, розмитість, шум. Комбінує кілька спеціалізованих моделей у пайплайні.

Пайплайн повної реставрації

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       # fp16
)

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  # 0 = GFPGAN, 1 = оригінал (баланс)
    )
    return restored_img

REST API

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")

Real-ESRGAN дає апскейлинг ×4 з відновленням деталей. GFPGAN спеціалізується на особах — критично для сімейних фотоархівів. Комбінація обох покриває 90% завдань реставрації. Терміни: деплой пайплайну — 1–2 дні. Сервіс з веб-інтерфейсом завантаження та порівнянням до/після — 1 тиждень.