Реализация AI-реставрации повреждённых фотографий

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Реализация AI-реставрации повреждённых фотографий
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

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 неделя.