CutItOut
- title
- CutItOut
- type
- toolbox
- summary
- Инструмент для удаления фона в браузере: запускает U2-Net в WebAssembly, так что изображения не покидают устройство
- tags
- typescript, webassembly, image-processing, local-ai, privacy
- language
- TypeScript
- license
- Apache-2.0
- created
- 2026-07-23
- updated
- 2026-07-23
- lang
- ru
- translation_of
- cut-it-out
- source_updated
- 2026-07-23
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
CutItOut вырезает фон из изображения и возвращает прозрачный PNG в полном разрешении. Вся работа происходит прямо во вкладке браузера, без загрузки на сервер и без создания аккаунта, ради чего инструмент и создавался: коммерческие аналоги требуют отправки картинки к себе, а большинство из них ещё и добавляет водяные знаки или урезает итоговое разрешение.
Как это работает
Модель сегментации - U2-Net, детектор ключевых объектов (salient-object detector), запускаемый через библиотеку @imgly/background-removal. Эта библиотека поставляет модель в формате ONNX и исполняет её с помощью ONNX runtime, скомпилированного в webassembly, поэтому инференс происходит прямо на странице. Сервера инференса нет, так что стоимость хостинга равна стоимости любого статического сайта, а гарантия приватности обеспечена архитектурно, а не обещаниями в политике конфиденциальности: байты никогда не покидают устройство.
Остальная часть проекта - интерфейс редактирования поверх маски, созданной моделью. Автоматическая сегментация ошибается на краях волос, стекле и низкоконтрастных границах, поэтому здесь предусмотрены волшебная кисть для добавления или удаления областей по схожести цвета, режим восстановления (показывает удалённые пиксели полупрозрачным слоем, пока вы закрашиваете их обратно), а также масштабирование и панорамирование для работы на уровне пикселей. Экспорт происходит в полном разрешении.
Сборка представляет собой приложение на Vite, а на выходе получается директория dist/, которую можно выложить на любой статический хостинг.
git clone https://github.com/Suvink/cut-it-out.git
cd cut-it-out
npm install
npm run dev # http://localhost:5173
npm run build # dist/, deployable to Vercel, Netlify, Pages
Ограничения
Модель и рантайм должны скачаться до обработки первого изображения, поэтому первый запуск на холодном кэше медленный, а офлайн-режим недоступен, пока файлы не загрузятся. Инференс упирается в процессор (CPU-bound WebAssembly); обработка больших изображений на скромном ноутбуке занимает ощутимые секунды. U2-Net - универсальная модель для выделения ключевых объектов, а не специализированная модель для портретного вырезания (matting), поэтому она неплохо справляется с одним чётким объектом, но сбоит на нескольких объектах, тонких волосах и полупрозрачных краях - отсюда и необходимость в ручной кисти.
Почти вся ценность здесь кроется в @imgly/background-removal и весах U2-Net; CutItOut - это просто интерфейс редактирования вокруг них. Это не столько критика инструмента, сколько замечание о том, где кроются риски зависимостей. В репозитории не было коммитов со дня публикации в декабре 2025 года, что для небольшого автономного статического приложения скорее означает "завершено", чем "заброшено", однако улучшения upstream-модели или рантайма сами по себе сюда не попадут.
Репозиторий: github.com/Suvink/cut-it-out - ~435 звёзд, Apache-2.0, TypeScript.