Darmowe i profesjonalne usuwanie tła ze zdjęć za pomocą AI na Windows 11 i Linux Mint

Większość popularnych narzędzi do wycinania tła z obrazów opiera się na rozwiązaniach chmurowych, które wymagają subskrypcji i wysyłania plików na zewnętrzne serwery. Alternatywą jest uruchomienie modeli sztucznej inteligencji lokalnie. Ten artykuł opisuje proces instalacji i konfiguracji biblioteki rembg do automatycznego przetwarzania plików i folderów z wykorzystaniem procesora (CPU) lub karty graficznej (GPU) w systemach Windows 11 i Linux Mint.

Czym jest rembg i jakie ma możliwości?

rembg to otwartoźródłowa biblioteka napisana w języku Python. Służy do automatycznego oddzielania pierwszego planu od tła na obrazach.

Kluczowe cechy techniczne:

Modele AI: Biblioteka pod spodem wykorzystuje wytrenowane sieci neuronowe. Domyślnie używa modelu u2net, ale pobiera również nowsze, zoptymalizowane modele, takie jak bria-rmbg, które radzą sobie z trudnymi krawędziami (np. włosy).

Silnik wykonawczy: Operacje tensorowe są obsługiwane przez ONNX Runtime. Pozwala to na wykonywanie obliczeń zarówno na procesorze (CPU), jak i akcelerację na układach graficznych (GPU NVIDIA) za pośrednictwem rdzeni CUDA.

Prywatność i brak limitów: Cały proces inferencji odbywa się w pamięci RAM/VRAM lokalnego komputera. Nie ma limitów rozdzielczości ani ilości przetwarzanych plików.

Krok 1: Instalacja środowiska Python

Do poprawnego działania wymagany jest interpreter języka Python. Należy używać stabilnych wersji. Wersje testowe (np. 3.14) powodują problemy z kompilacją biblioteki numba i są blokowane przez zabezpieczenia Windows.

Windows 11:

  • Pobierz instalator Pythona ze strony python.org.
  • Uruchom instalator.
  • Krytyczne: Na pierwszym ekranie instalatora zaznacz pole wyboru „Add python.exe to PATH”. Bez tego system nie rozpozna poleceń Pythona w konsoli.
  • Zakończ instalację klikając „Install Now”.

Linux Mint:

Większość dystrybucji bazujących na Ubuntu ma Pythona preinstalowanego. Upewnij się, że masz menedżer pakietów pip.

sudo apt update
sudo apt install python3 python3-pip python3-venv

Krok 2: Instalacja CUDA i cuDNN (Tylko dla kart NVIDIA GPU)

Jeśli chcesz używać tylko procesora (CPU), zignoruj ten krok. Przetwarzanie na CPU trwa dłużej, ale nie wymaga dodatkowych sterowników. Jeśli posiadasz kartę NVIDIA (np. seria RTX), akceleracja sprzętowa przyspieszy proces kilkunastokrotnie.

ONNX Runtime wymaga środowiska CUDA w wersji 12.x lub 13.x oraz bibliotek cuDNN w wersji 9.x.

Konfiguracja dla Windows 11:

  • Pobierz i zainstaluj sterowniki karty graficznej (Game Ready lub Studio).
  • Pobierz CUDA Toolkit 12.x lub 13.x ze strony dla deweloperów NVIDIA. Zainstaluj przy użyciu ustawień domyślnych (Express). Ścieżka domyślna to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x.
  • Pobierz instalator .exe pakietu cuDNN w wersji 9 ze strony NVIDIA (wymaga darmowego konta dewelopera). Zainstaluj go.
  • Naprawa błędu „Error 2 (LoadLibrary failed)”: Instalator cuDNN często nie aktualizuje poprawnie zmiennych środowiskowych, co skutkuje błędem braku pliku cudnn64_9.dll podczas uruchamiania skryptów.
  • Przejdź do folderu: C:\Program Files\NVIDIA\CUDNN\v9.x\bin
  • Skopiuj wszystkie znajdujące się tam pliki .dll.
  • Wklej je do folderu bin głównej instalacji CUDA: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin. Zgódź się na prośbę o uprawnienia administratora.
  • Uruchom ponownie komputer.

Konfiguracja dla Linux Mint:

Najbezpieczniej zainstalować sterowniki i narzędzia CUDA bezpośrednio z repozytoriów systemu:

sudo ubuntu-drivers autoinstall
sudo apt install nvidia-cuda-toolkit

(Uwaga: w zależności od wersji systemu, może być wymagane dodanie oficjalnego repozytorium NVIDIA PPA, aby uzyskać CUDA w wersji 12.x (13.x) oraz cuDNN 9).

Krok 3: Instalacja biblioteki rembg

Gdy Python (i opcjonalnie środowisko GPU) jest gotowe, instalujemy pakiety. Otwórz wiersz poleceń (CMD na Windowsie) lub Terminal (Linux) i wykonaj komendę:

Windows 11:

pip install rembg[gpu] onnxruntime onnxruntime-gpu

Linux Mint:

pip3 install rembg[gpu] onnxruntime onnxruntime-gpu

(Flaga [gpu] oraz pakiety onnxruntime gwarantują, że program będzie potrafił odwołać się do rdzeni CUDA, jeśli je wykryje).

Krok 4: Skrypty automatyzujące przetwarzanie (Batch Processing)

Podstawowe wywołanie rembg z wiersza poleceń dla każdego pliku z osobna zmusza kartę graficzną do ładowania modelu AI do pamięci VRAM (co zajmuje około 2-6 sekund) od nowa przy każdym zdjęciu. Przy przetwarzaniu całych folderów jest to wysoce nieefektywne.

Rozwiązaniem jest skrypt, który uruchamia instancję Pythona raz, ładuje model do pamięci, a następnie w pętli przepuszcza przez niego wszystkie zdefiniowane pliki.

Skrypt dla Windows 11 (.bat)

Utwórz na pulpicie plik tekstowy, nazwij go usun.bat i wklej poniższy kod. Aby przetworzyć pliki, wystarczy zaznaczyć obraz (lub cały folder) i przeciągnąć go na ikonę tego pliku.

@echo off
chcp 65001 >nul
echo ==========================================
echo    Narzędzie AI (Wersja Turbo GPU/CPU)
echo ==========================================

if "%~1"=="" (
    echo Przeciągnij i upuść PLIK lub FOLDER na ten plik .bat!
    pause
    exit /b
)

:: Zabezpieczenie przed blokadą kompilatora Numba w Windows
set "NUMBA_DISABLE_JIT=1"
set "NUMBA_THREADING_LAYER=omp"

:: Generowanie skryptu Python w locie
echo import sys, os, glob > temp_ai.py
echo from rembg import remove, new_session >> temp_ai.py
echo print("Ladowanie modelu do pamieci... (to potrwa kilka sekund)") >> temp_ai.py
echo session = new_session() >> temp_ai.py
echo target = sys.argv[1] >> temp_ai.py
echo def process(img_path): >> temp_ai.py
echo     out = os.path.splitext(img_path)[0] + "_bez_tla.png" >> temp_ai.py
echo     print(" Wycinanie: " + os.path.basename(img_path)) >> temp_ai.py
echo     with open(img_path, "rb") as i, open(out, "wb") as o: >> temp_ai.py
echo         o.write(remove(i.read(), session=session)) >> temp_ai.py
echo if os.path.isdir(target): >> temp_ai.py
echo     for ext in ("*.jpg", "*.jpeg", "*.png", "*.JPG", "*.PNG"): >> temp_ai.py
echo         for f in glob.glob(os.path.join(target, ext)): process(f) >> temp_ai.py
echo else: >> temp_ai.py
echo     process(target) >> temp_ai.py

:: Wykonanie głównego zadania
python temp_ai.py "%~1"

:: Czyszczenie plików tymczasowych
del temp_ai.py

echo.
echo ==========================================
echo Gotowe! 
echo ==========================================
pause

Skrypt dla Linux Mint (.sh)

Utwórz plik usun.sh, nadaj mu prawa do wykonywania (chmod +x usun.sh). Możesz go uruchamiać z terminala, podając ścieżkę do pliku lub folderu jako argument: ./usun.sh /ścieżka/do/obrazów.

#!/bin/bash
echo "=========================================="
echo "   Narzędzie AI (Wersja Turbo GPU/CPU)"
echo "=========================================="

if [ -z "$1" ]; then
    echo "Podaj ścieżkę do pliku lub folderu jako argument!"
    exit 1
fi

TARGET="$1"
cat << 'EOF' > temp_ai.py
import sys, os, glob
from rembg import remove, new_session

print("Ladowanie modelu do pamieci... (to potrwa kilka sekund)")
session = new_session()
target = sys.argv[1]

def process(img_path):
    out = os.path.splitext(img_path)[0] + "_bez_tla.png"
    print(" Wycinanie: " + os.path.basename(img_path))
    with open(img_path, "rb") as i, open(out, "wb") as o:
        o.write(remove(i.read(), session=session))

if os.path.isdir(target):
    for ext in ("*.jpg", "*.jpeg", "*.png", "*.JPG", "*.PNG"):
        for f in glob.glob(os.path.join(target, ext)):
            process(f)
else:
    process(target)
EOF

python3 temp_ai.py "$TARGET"

rm temp_ai.py

echo ""
echo "=========================================="
echo "Gotowe!"
echo "=========================================="

Podsumowanie

Pierwsze uruchomienie skryptu potrwa najdłużej – program pobierze domyślny model sieci neuronowej (np. plik ONNX ważący około 170MB – 1GB w zależności od silnika) z serwerów GitHub do ukrytego folderu użytkownika (w Windows jest to .rembg/models w katalogu domowym). Każde kolejne uruchomienie skorzysta już z pobranego modelu. Dzięki zastosowanej strukturze skryptu, obciążenie startowe (ładowanie modelu) następuje tylko raz na sesję, gwarantując maksymalną przepustowość podczas przetwarzania dużych folderów z grafikami.

Efekt działania prezentowanego narzędzia

Jak widać po załączonych zdjęciach tragedii nie ma, jednak ten model AI najlepiej sobie radzi w przypadku zdjęć produktowych. Bardzo duże znaczenie na końcowy efekt ma także ostrość elementów brzegowych obiektu.