LeanImg

Как удалить фон изображения бесплатно и без водяного знака?

Что делает модель IS-Net в вашем браузере, почему вырезка всегда больше, чем загруженный PNG, и как уменьшить размер этого PNG с измеренными значениями.

Каждый бесплатный инструмент для удаления фона делает два одинаковых обещания: отсутствие водяного знака и отсутствие регистрации. Почти все они все равно хотят ваш файл. Он загружается на сервер, там запускается модель, и политика хранения обещает удаление через час или день. У нас это работает иначе. Инструмент для удаления фона загружает модель IS-Net в вашу вкладку браузера и запускает ее на вашем собственном компьютере, так что изображение никогда не становится частью HTTP-запроса.

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

Уходит ли изображение с моего компьютера?

Нет. В этом коде нет API-методов и нет действий на сервере, поэтому нет конечной точки, которая могла бы получить ваше изображение даже случайно. Единственный сетевой трафик, который делает инструмент, — это запрос на получение весов модели, которые находятся под /ml-assets на нашем собственном домене, и вы загрузите их только один раз. После этого ваш браузер кэширует их. Ваш файл читается с помощью createImageBitmap, передается модели в виде пикселей и записывается обратно как Blob, который остается во вкладке, пока вы не загрузите его или не закроете. Ничего не нужно ставить в очередь для удаления позже, потому что ничего никуда не уходит. Страница конфиденциальности коротка по этой причине.

Что на самом деле делает модель IS-Net?

IS-Net — это сеть сегментации заметных объектов из исследования DIS. Она считывает всю рамку и предсказывает, для каждого пикселя, насколько вероятно, что этот пиксель принадлежит тому единственному объекту, о котором идет речь на изображении. Это предсказание становится альфа-каналом выходного PNG. Она не знает, что такое человек или бутылка шампуня. Она знает о заметности. Вот почему один объект на простом фоне вырезается чисто, в то время как группа людей на оживленной улице часто не получается.

Время выполнения — ONNX Runtime Web, и движок запрашивает устройство WebGPU. Если WebGPU отсутствует, библиотека самостоятельно переключается на CPU, и она все равно завершит работу, но медленнее. Файлы обрабатываются по одному. Если вы загрузите десять, вам придется дождаться десяти проходов вывода, поэтому пакет праздничных фотографий — это время на кофе.

Почему вырезанный PNG больше, чем загруженный JPG?

JPEG не поддерживает альфа-канал в любом режиме, поэтому вырезка не может оставаться JPEG. Выход должен быть PNG, который является без потерь. Происходит две вещи одновременно. Декодированные пиксели хранятся точно, включая артефакты сжатия, и каждый пиксель получает альфа-байт, которого у него никогда не было. Без потерь хранение фотографических деталей дорого. Для примера, texture.jpg в нашем тестовом наборе имеет размер 3840x2160 и весит 538,6 KB, в то время как alpha.png имеет размер 900x606 с прозрачностью и весит 942,4 KB. Это примерно 1,75x байтов при примерно одной пятой количества пикселей. Никто ничего не добавлял к вашему изображению. Вы просто теперь платите по ценам PNG.

Как сделать вырезанный PNG меньше?

Отправьте его в компрессор изображений и выберите один из двух режимов PNG. Оба сохранят альфа-канал. "PNG без сжатия" запускает oxipng на уровне 3, что является без потерь: те же пиксели, меньше байтов. "PNG меньшего размера" запускает imagequant, который уменьшает изображение до палитры. Вот что каждый из них сделал с alpha.png, прозрачным PNG размером 900x606 выше.

Оба режима PNG в нашем компрессоре, измеренные на одном и том же прозрачном файле размером 900x606.
РежимЧто он делаетРезультатИзменение
Исходный файл900x606 PNG с настоящим альфа-каналом942,4 KBбазовый уровень
PNG без сжатияoxipng уровень 3, полностью без потерь383,9 KB-59%
PNG меньшего размераimagequant, уменьшение палитры98,3 KB-90%
Карточка результата компрессора, показывающая прозрачный PNG, уменьшившийся с 942,4 KB до 98,3 KB в режиме палитры
Режим палитры на прозрачном PNG: 942,4 KB уменьшилось до 98,3 KB, альфа сохранена.

Маршрут палитры сначала уничтожает градиенты. Плоские логотипы и упаковки хорошо переносят это. Челка на мягкой тени — это место, где проявляется полосатость, поэтому посмотрите на результат в полном размере перед отправкой. Сжатие также удаляет каждую часть метаданных: EXIF, GPS, ICC профиль и встроенный миниатюру. Ориентация сохраняется.

Может ли он поставить белый фон за объектом?

Нет. Инструмент записывает альфа и на этом останавливается. Здесь нет цвета заливки и нет заменяющего изображения. Если вы хотите белый фон за объектом, пропустите готовый PNG через PNG в JPG. Любой целевой формат без альфа-канала получает прозрачность, наложенную на белый, так что JPEG и PDF оба предоставляют вам белый фон без дополнительных шагов. Если вам нужно вырезанное изображение в другом размере пикселей, изменитель размера записывает PNG без потерь, так что альфа также сохраняется. Обрезчик делает то же самое для PNG, по одному файлу за раз до 10 MB.

Какие файлы я могу загрузить и сколько?

Десять файлов и 50 MB на партию. Выборщик принимает JPEG, PNG, WebP, AVIF, GIF, BMP и ICO. SVG и HEIC отклоняются до начала работы модели, потому что Chrome не может декодировать ни один из них: SVG — это XML без пикселей, а HEIC — это контейнер HEIF, который только Safari отображает. Для HEIC с iPhone сначала запустите HEIC в PNG и загрузите результат в инструмент, а почему Windows не может открыть этот файл объясняет, что внутри контейнера. Каждый выход сохраняет базовое имя исходного файла с расширением .png, так что вы сможете их распознать в своей папке загрузок, и несколько результатов сразу загружаются как background-removed.zip.

Почему моя вырезка вернулась полностью пустой?

Изображение без заметного объекта возвращает полностью прозрачный PNG, и снижение размера может даже восприниматься как экономия. Мы проверяем это, чтобы вы не отправили пустое изображение по ошибке. После каждого запуска движок проверяет альфа-канал до размера 1024 px и считает пиксели с альфа 64 или выше. Если менее 0,1% рамки сохраняется, карточка сообщает вам, что объект не найден. Пейзажи, текстуры и плоские фоны часто попадают в эту категорию. Файл все равно остается вашим для загрузки. Он просто не является вырезкой, и никакое количество повторных запусков не сделает его таковым.

Попробуйте один файл, прежде чем ставить в очередь десять. Загрузите одну упаковку на инструмент для удаления фона, загрузите PNG, затем отправьте этот же PNG прямо в компрессор и выберите "PNG меньшего размера". Сравните два размера и решите, какой из них вы действительно отправите. Если эта вырезка также будет использоваться в документе, страница, в которую превращается одно изображение, когда оно становится PDF, измеряется отдельно.