Как вырезать фон из картинки прямо в браузере без серверов и подписок

16 авг 2026

Репозиторий давно не обновлялся

Последнее обновление было 9 месяцев назад.

456
62
3
9 месяцев

Каждый раз, когда нужно быстро вырезать фон у фотографии для пет-проекта, карточки товара или аватарки, начинается один и тот же квест. Популярные онлайн-сервисы вроде Remove.bg просят платную подписку после трёх скачиваний, сжимают картинку до размера почтовой марки или требуют авторизацию через Google. К тому же отправлять личные снимки или рабочие макеты на сторонние серверы хочется далеко не всегда.

Недавно я наткнулся на репозиторий cut-it-out от разработчика Suvink. Это опенсорсный инструмент, который делает всё то же самое, но прямо в браузере на машине пользователя. Никаких бэкендов, никаких очередей и нулевые затраты на чужую инфраструктуру.

CutItOut Demo

Что под капотом

Главная фишка проекта заключается в том, что все вычисления происходят на клиенте. В репозитории используется библиотека @imgly/background-removal, которая загружает нейросетевую модель U2-Net через ONNX Runtime в WebAssembly (WASM).

Если раньше для инференса сегментационных сетей обязательно требовался сервер с Python, PyTorch и хотя бы скромной видеокартой, то сейчас стек WASM + WebGL/WebGPU справляется с этим прямо во вкладке Chrome или Firefox.

Реклама

При первом открытии страницы браузер скачивает веса модели, кэширует их и дальше обрабатывает входящие файлы локально. Данные никуда не улетают. Вы можете отключить интернет на ноутбуке, перетащить в окно картинку, и маска всё равно сгенерируется за пару секунд.

Инструменты для ручной доводки

Нейросети часто ошибаются на сложных границах. Тонкие волосы, прозрачное стекло или полуразмытый фон часто превращаются в рваные края. Создатели CutItOut не стали ограничиваться одной кнопкой «Удалить фон» и добавили несколько полезных инструментов для ручной коррекции:

  • Magic Brush (волшебная кисть). Выделяет соседние пиксели по сходству оттенков, что помогает быстро стереть неудачно оставленный кусок заднего плана.
  • Режим восстановления с полупрозрачным слоем (Ghost overlay). Когда нейросеть отрезает лишнее, тяжело вернуть нужный фрагмент вслепую. Здесь исходник подсвечивается мягким контуром, поэтому видно, где именно провести кистью.
  • Навигация по холсту. Есть зум и панорамирование, чтобы аккуратно подчищать мелкие детали на высоком разрешении.
  • Экспорт без сжатия. Готовый результат отдается в PNG с прозрачным альфа-каналом в исходном разрешении, без водяных знаков и таймеров ожидания.

Как развернуть проект у себя

Кодовая база написана на TypeScript и собирается стандартным тулингом фронтенда. Чтобы запустить проект локально или использовать как основу для собственного сервиса, понадобятся Node.js 18+ и npm 9+.

Клонируем репозиторий и переходим в папку:

git clone https://github.com/Suvink/cut-it-out.git
cd cut-it-out

Ставим зависимости:

npm install

Запускаем локальный сервер разработки:

npm run dev

Vite поднимет приложение на http://localhost:5173.

Если хотите задеплоить приложение себе, проект собирается в статику одной командой:

npm run build

Все готовые файлы упадут в директорию dist. Так как бэкенд проекту вообще не нужен, эти файлы можно залить на любой бесплатный хостинг статики вроде Vercel, Netlify или GitHub Pages. Никаких контейнеров с Docker, переменных окружения с API-ключами или настроек очередей Celery поднимать не придется.

Зачем этот проект разработчикам

Код CutItOut интересен сразу с двух сторон.

Во-первых, это удобная готовая утилита для личного пользования. Её можно запустить на домашнем сервере или держать в закладках, чтобы не платить за коммерческие аналоги, когда нужно подготовить пару десятков картинок.

Во-вторых, проект отлично иллюстрирует подход edge-вычислений во фронтенде. Если вы строите приложение, где пользователи загружают аватарки или фотографии товаров, перенос сегментации на клиент экономит приличные деньги. Вместо того чтобы оплачивать инстансы с GPU в облаке, вы перекладываете работу на процессор пользователя. В репозитории можно посмотреть, как автор организовал работу с канвасом, масштабированием и интеграцией WASM-библиотеки в интерфейс.

CutItOut — аккуратный и честный проект под лицензией Apache 2.0. Он решает конкретную бытовую проблему и наглядно показывает, до какого уровня доросли возможности браузерного машинного обучения. Звёзд у проекта пока не так много, но код чистый, понятный и легко адаптируется под собственные задачи.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.