Casos de uso y soluciones

Quitar el fondo de fotos de productos con IA en lote (rembg): PNG transparente y fondo blanco

5 pasos 14 min de lectura 78 vistas 0
Contenido

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.

Use solo fotos propias o sobre las que tenga derechos de uso. Revise los resultados antes de subirlos: los cables finos, el vidrio transparente, el pelaje y el cabello son los casos más difíciles para cualquier modelo de eliminación de fondos.

Paso 1: Instalar rembg

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.

Paso 2: Probar con una sola foto y elegir el modelo

/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
  • u2net: el modelo predeterminado, de uso general.
  • isnet-general-use: suele dar bordes de producto más nítidos con una velocidad similar; una buena opción por defecto para e-commerce.
  • birefnet-general: el más preciso con fotos difíciles, pero varias veces más lento y con mayor consumo de memoria.
  • u2netp: un modelo pequeño y rápido para vistas previas.

Pruebe los candidatos con cinco fotos representativas de su catálogo y compare los bordes a tamaño completo antes de decidir.

Paso 3: Crear el script de procesamiento por lotes

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.

Paso 4: Procesar una carpeta

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.

Paso 5: Revisar y corregir los casos difíciles

  • Revise los archivos PNG sobre un fondo oscuro: los halos residuales y las partes que faltan se distinguen mucho mejor ahí que sobre blanco.
  • Para cabello, pelaje y bordes suaves, vuelva a procesar esas fotos con alpha matting: añada 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.
  • Los modelos eliminan las sombras. Si quiere una sombra natural bajo el producto, añádala en su herramienta de diseño a partir del PNG transparente.
  • Para productos blancos sobre un lienzo blanco, considere un fondo gris claro en las imágenes secundarias; consulte las normas de cada marketplace para las imágenes principales.

Preguntas frecuentes

¿Necesito una GPU?

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.

¿Pueden usarlo mis compañeros sin SSH?

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.

¿Qué más puede automatizar la IA en las fichas de producto?

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.

¿Fue útil la respuesta?

Tutoriales relacionados