Eliminación de Marca de Agua IA · Versión de Verificación a Nivel de Píxel
Elimina la marca de agua blanca/semitransparente "XXAI generado" en las esquinas de imágenes generadas por IA (Doubao/Jimeng/Kolors, etc.). Valor principal: Verificación a nivel de píxel sin autoengaño, doble señal de localización cruzada contra alucinaciones, votación de múltiples candidatos con indicadores objetivos para cubrir — otros solo "ajustan la IA para retocar y dicen que está bien a simple vista", esto se calcula.
Escenarios de uso
- Marca de agua blanca/semitransparente "XXAI generado" en las esquinas de imágenes generadas por IA (Doubao/Jimeng/Kolors, etc.)
- Marca de agua sobre un fondo relativamente uniforme (bloques de color lisos/cielo/mar/gradiente)
- Marca de agua en las esquinas de la imagen, no sobre el sujeto principal
Cadena completa (cadena de relevos para reducir correlación de errores)
La eliminación de la marca de agua es una cadena de relevos de cuatro saltos: Localización → Muestreo de fondo → Cobertura → Verificación. Cada salto comete solo un pequeño error de forma independiente, tras varios saltos la tasa de precisión cae drásticamente; los métodos de la misma fuente fallan juntos en el mismo problema. Versión completa = agregar verificación individual en nodos clave + señales cruzadas de diferentes principios + votación de múltiples candidatos.
① Localización (dos señales cruzadas, deben ser de diferente principio)
- Señal A: Método de cuadrícula ampliada: Amplía el área candidata dibujando una cuadrícula roja de 10x10 (marcando x0-x9/y0-y9), para que el modelo visual solo informe "la marca de agua está en x?-x?, y?-y?" — solo confía en el rango de la cuadrícula, no en su descripción porcentual/píxel a píxel, luego convierte de vuelta a coordenadas de la imagen original y hace un escaneo fino a nivel de píxel.
- Señal B: Agrupación por densidad de píxeles: No realiza análisis de píxeles dependiendo de modelos visuales. Para colores blancos/semitransparentes (r>180, g>180, b>180, semitransparente reducido a 140-150) suma por filas para encontrar segmentos densos de texto, busca el rango x del texto con píxeles blancos continuos >3 en columnas.
- Solo se bloquea el área de la marca de agua si A y B localizan la misma zona; solo A o solo B → reevaluar, no apresurarse a cubrir (cruce de principios diferentes, evita que el mismo modelo visual falle junto).
- La marca de agua puede estar en una esquina (por ejemplo, área de mar azul) y no sobre el sujeto — primero escanea toda la imagen en busca de grupos densos de píxeles blancos/semitransparentes y luego determina las coordenadas.
② Cobertura (votación de múltiples candidatos, sin decisiones apresuradas)
Genera múltiples candidatos y vota con indicadores objetivos para seleccionar el óptimo:
- Candidato 1: Banda de fondo del mismo ancho justo encima (o a la izquierda) de la marca de agua, estirada verticalmente al área de la marca (LANCZOS) — más natural para fondos complejos
- Candidato 2: Relleno con el color medio de la izquierda/alrededores + máscara con borde difuso gaussiano (GaussianBlur 2px) — para fondos uniformes
- Candidato 3: Interpolación multidireccional
- Indicadores de votación: Continuidad de textura en el área (gradiente de bordes) + varianza estadística de color + distancia euclidiana con píxeles circundantes. Gana el que tenga mejores indicadores, no "lo que yo crea que es mejor".
- El área de cobertura añade un pad de 6-8px para evitar residuos en los bordes del texto.
③ Verificación (decisión a nivel de píxel, aislando falsos positivos visuales)
- Ejecuta
scripts/verify_watermark_removed.pycon ground truth a nivel de píxel: compara la cantidad de píxeles blancos en el área objetivo entre la imagen original y la procesada. Original 856 → Procesada 2 = Eliminado ✅ - El modelo visual no participa en la decisión, solo informa la localización gruesa. Sus falsos positivos de "aún hay marca de agua" (zonas brillantes de pelo blanco, salpicaduras de agua, llamas en fondos complejos) quedan aislados fuera del nodo por la diferencia de píxeles, sin retrasar el progreso.
- Juicio de residuos: Si el blanco en el área objetivo de la imagen procesada es < 5% del original, se considera eliminado.
Cadena completa (gestionada como sistema distribuido)
- Entrada y salida de cada salto fijas: diccionario bbox / lista de candidatos / indicadores, se puede probar y restaurar individualmente.
- De extremo a extremo: tasa de éxito (tasa de cumplimiento de píxeles) + coste (rondas) + capacidad de depuración, comparado con la línea base de un solo salto — solo se implementa si el beneficio después de descontar costes sigue siendo positivo.
Puntos críticos (experiencia real)
- El modelo visual alucinará "aún hay marca de agua": En fondos complejos (pelo blanco, salpicaduras de agua, zonas brillantes de llamas) reportará falsamente "hay una marca de agua de Doubao en la esquina inferior derecha", incluso si la prueba a nivel de píxel demuestra que se ha eliminado. La diferencia de píxeles es el árbitro — si el valor numérico cumple el estándar, no dejes que el modelo visual te lleve a rehacerlo.
- Cuando el modelo visual dice "esquina inferior derecha" puede referirse a todo el cuarto inferior derecho; las coordenadas precisas deben obtenerse mediante análisis de píxeles (agrupación de densidad blanca por filas/columnas).
- Los colores brillantes de la imagen (pelo blanco de tigre, espuma blanca de cascada) pueden interferir con la detección de blanco — cuando "el original es blanco y la procesada también es blanca" aparece por toda la imagen, no es marca de agua sino contenido de la imagen.
- En fondos complejos, el estiramiento del fondo superior para cubrir es más natural que el color sólido; el color sólido solo se usa para fondos uniformes (como el mar).
- Juicio de residuos en verificación: Si el blanco en el área objetivo de la imagen procesada es < 5% del original, se considera eliminado.
Scripts
scripts/verify_watermark_removed.py— Verificación a nivel de píxel de si la marca de agua se ha eliminado (comparación de píxeles blancos entre original y procesada)
Dependencias
- Python 3,
PIL+numpy(pip install pillow numpy)
Limitaciones (advertencia honesta)
- Este paso de cobertura usa "estiramiento de píxeles circundantes/relleno de color medio", que es esencialmente una reparación falsa. Si la marca de agua cubre contenido real (rostros humanos, logotipos de productos, texturas complejas), la cobertura se distorsionará — se necesita una reparación real con IA (inpainting/Lama).
- Esta skill destaca en: marcas de agua en esquinas de imágenes generadas por IA, fondos relativamente uniformes, verificación de respaldo a nivel de píxel. La localización y verificación son las más robustas.
🙋 Sobre el autor
Jiu Pin Jin Li e | Envuelve los problemas que he encontrado en skills "listas para usar", no escribo libros de texto.
Esta skill es la versión que uso yo mismo a diario. Si te atascas al usarla, quieres funcionalidades avanzadas, o tienes otros escenarios que quieras que convierta en skill, agrégame directamente en WeChat y menciona «SkillHub» para que te dé prioridad:

Escanea el código para agregar al autor en WeChat · Menciona «SkillHub» para prioridad