Как удалить фон изображения с помощью Python?

Активное развитие нейронных сетей меняет не только предметный мир пользователей, но и спешит на помощь разработчикам! Одним из таких примеров является библиотека rembg, которая успешно справляется с удалением фона изображений. А все потому, что в основе алгоритма, на который опирается библиотека, лежит нейронная сеть, позволяющая точно определять объекты переднего плана. В результате мы получим изображение с добавленным альфа-каналом, передающим прозрачность фоновых пикселей.

Узнаем, как установить эту чудо-библиотеку, напишем простой скрипт для удаления фона изображения и ненадолго окунемся в историю создания библиотеки rembg!

Как установить библиотеку rembg?

Для установки библиотеки используйте код:

pip install rembg

Пример скрипта для удаления фона изображения

В качестве примера возьмем изображение, которое мне любезно предоставила нейросеть Kandinskiy на просьбу нарисовать ученого кота в серверной:

Исходное изображение с фоном

Изображение сохранено под названием «cat.jpg». Попробуем теперь извлечь этого кота из серверной и сохранить результат в той же директории в файле «cat_new.png»:

import rembg
import numpy as np
from PIL import Image

# Загружаем исходное изображение
input_image = Image.open('cat.jpg')

# Преобразуем в numpy-массив
input_array = np.array(input_image)

# Удаляем фон с помощью rembg
output_array = rembg.remove(input_array)

# Создаем изображение из полученного массива
output_image = Image.fromarray(output_array)

# Сохраняем результат в png файл
output_image.save('cat_new.png')

Описание скрипта:

Представим изображение в виде массива, в котором хранится информация о цветовых кодах каждого пискселя. Для этого воспользуемся функцией np.array(). После чего передадим полученный массив данных функции remove() библиотеки rembg. На выходе получим массив данных, в который добавлен альфа-канал, хранящий информацию о прозрачности фоновых пикселей. Преобразуем numpy — массив в понятное для человеческого глаза изображение и сохраним результат в файле «cat_new.png»:

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

Небольшое отступление: о создателе rembg

Автором библиотеки rembg является исследователь и инженер-программист Dag Sverre Seljebotn. Первоначальной разработкой автора является алгоритм под названием Rembg, в основе которого лежит модель нейронной сети, позволяющей точно извлекать объекты переднего плана с использованием методов глубокого обучения.

Чуть позже Dag Sverre Seljebotn разработал автономный консольный инструмент Rembg, который, опираясь на ранее созданный одноименный алгоритм, успешно справлялся с удалением фона на изображениях. А затем, с учетом потребности python — разработчиков, был разработан удобный интерфейс для использования алгоритма Rembg в виде python библиотеки rembg. К нашей всеобщей радости, библиотека и по сей день поддерживается и обновляется сообществом открытого кода. Для работы с компьютерной графикой, а также решения задач компьютерного зрения библиотека rembg является просто находкой, а с учетом доступности этого инструмента для всех разработчиков, своеобразным ускорителем прогресса в своей нише.


У нас появился Telegram-канал для изучающих Python! Присоединяйтесь: вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»

Добавить комментарий