Marketplaces como Amazon exigen que la imagen principal del producto tenga un fondo blanco puro, y las fichas de Shopee, Lazada y TikTok Shop se ven más profesionales con imágenes cuadradas y uniformes. Recortar cientos de fotos a mano lleva días. rembg es una herramienta de código abierto que ejecuta modelos de IA de eliminación de fondos en un servidor con CPU corriente. Esta guía la instala, compara los modelos y utiliza un script breve para convertir, en una sola ejecución, una carpeta de fotos de productos en archivos PNG transparentes e imágenes principales JPG cuadradas con fondo blanco.
apt install -y python3-venv
python3 -m venv /opt/rembg
/opt/rembg/bin/pip install "rembg[cpu,cli]"
/opt/rembg/bin/rembg --help
Cada modelo se descarga automáticamente la primera vez que se usa y se guarda en ~/.u2net, por lo que el servidor necesita acceso a Internet en la primera ejecución.
/opt/rembg/bin/rembg i photo.jpg cut-u2net.png # default model
/opt/rembg/bin/rembg i -m isnet-general-use photo.jpg cut-isnet.png # often cleaner edges
/opt/rembg/bin/rembg i -m birefnet-general photo.jpg cut-birefnet.png # most accurate, slower, more RAM
/opt/rembg/bin/rembg i -a photo.jpg cut-matting.png # alpha matting for hair and soft edges
Pruebe los candidatos con cinco fotos representativas de su catálogo y compare los bordes a tamaño completo antes de decidir.
cat > /opt/rembg/whitebg.py <<'EOF2'
import os, sys
from PIL import Image, ImageOps
from rembg import new_session, remove
src, dst = sys.argv[1], sys.argv[2]
size = int(os.environ.get("SIZE", "1600")) # square canvas in pixels
fill = float(os.environ.get("FILL", "0.85")) # share of the canvas the product fills
session = new_session(os.environ.get("MODEL", "isnet-general-use"))
for sub in ("png", "white"):
os.makedirs(os.path.join(dst, sub), exist_ok=True)
for name in sorted(os.listdir(src)):
if not name.lower().endswith((".jpg", ".jpeg", ".png", ".webp")):
continue
base = os.path.splitext(name)[0]
img = ImageOps.exif_transpose(Image.open(os.path.join(src, name))).convert("RGB")
cut = remove(img, session=session)
box = cut.getchannel("A").getbbox()
if not box:
print(name, "no object found, skipped", flush=True)
continue
cut = cut.crop(box) # trim the empty space around the product
cut.save(os.path.join(dst, "png", base + ".png")) # transparent version
scale = size * fill / max(cut.size)
cut = cut.resize((max(1, round(cut.width * scale)), max(1, round(cut.height * scale))),
Image.Resampling.LANCZOS)
canvas = Image.new("RGB", (size, size), (255, 255, 255))
canvas.paste(cut, ((size - cut.width) // 2, (size - cut.height) // 2), cut)
canvas.save(os.path.join(dst, "white", base + ".jpg"), quality=92)
print(name, "done", flush=True)
EOF2
El script corrige la orientación de las fotos tomadas con el teléfono, elimina el fondo, recorta los bordes vacíos y guarda un PNG transparente; después centra el producto sobre un lienzo cuadrado de color blanco puro (255, 255, 255) de modo que ocupe aproximadamente el 85 % del encuadre.
mkdir -p /data/photos/in /data/photos/out # upload the original photos to /data/photos/in
cd /data/photos
nohup /opt/rembg/bin/python /opt/rembg/whitebg.py in out > whitebg.log 2>&1 &
tail -f whitebg.log
# Other sizes or models, for example:
SIZE=2000 FILL=0.8 MODEL=birefnet-general /opt/rembg/bin/python /opt/rembg/whitebg.py in out
Los resultados quedan en dos carpetas: out/png contiene los recortes transparentes para banners, anuncios y trabajos de diseño, y out/white, las imágenes principales cuadradas listas para subir. La velocidad depende del modelo y de la CPU; cronometre primero un lote de 20 fotos para estimar cuánto tardará todo el catálogo.
alpha_matting=True a la llamada a remove(), o use rembg i -a para archivos sueltos. Es más lento, así que úselo solo donde haga falta.No. Para decenas o cientos de fotos al día basta con un servidor con CPU. Una GPU solo marca una diferencia real cuando se procesan muchos miles de imágenes al día o se usan constantemente los modelos más grandes.
rembg incluye un pequeño servidor web (rembg s) con una página sencilla y una API HTTP. Ejecútelo en 127.0.0.1 y publíquelo a través de Nginx con HTTPS y contraseña, nunca directamente en un puerto público.
Los títulos, las viñetas y las descripciones en varios idiomas (consulte generar fichas de producto en varios idiomas en lote con IA) y los subtítulos de los videos de producto (consulte subtítulos automáticos con faster-whisper).
¿Sigue sin resolverlo después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico de IMIDC, disponible 24/7, le ayudará. Incluya la IP del servidor, la CPU y la RAM, el modelo que utilizó y las últimas líneas de whitebg.log para que podamos localizar el problema más rápido.