El contenido ilustrado para adultos creado en Japón debe estar censurado por ley. Dos tipos comunes de censura son las barras de censura y los mosaicos borrosos. Para nosotros, los degenerados que vivimos fuera de Japón, esto significa que también estamos sujetos a los barrotes y los mosaicos. Hay una solución, DeepCreamPy de deeppomf que puede atraer a los censores, siempre que le digas dónde están los censores. Es un proceso largo y minucioso, por lo que espero automatizarlo con este proyecto. Este proyecto utilizará aprendizaje profundo y segmentación de imágenes, técnicas típicamente utilizadas en vehículos autónomos y tareas de visión por computadora. Como novedad en 1.6.3, agregamos ESRGAN como alternativa a DeepCreamPy, que también censurará una imagen/video en mosaico después de la detección.
Esto está construido sobre Mask R-CNN de Matterport, y la censura de video utiliza ESRGAN.
Aquí hay un video NSFW que muestra mejor lo que hace este proyecto, en el antiguo modelo 161.
Gorjeo (NSFW).
¿Te gusta lo que ves? Ayude a financiar este proyecto:
Puede unirse a la discusión sobre desarrollo y noticias en el canal Discord: https://discord.gg/j4dPZ7W
Ejemplo de detección de barras en el modelo 226:
Ejemplos de detección de mosaicos en el modelo 236:
Para ambos ejemplos, el modelo 161 más nuevo proporciona máscaras y detección mucho más precisas.
Necesitará los mismos requisitos que la implementación Mask RCNN de Matterport, nada más. Tenga en cuenta que estoy usando tensorflow 1.8.0, tensorflow-gpu 1.9.0, torch 0.4.1 y keras 2.2.0. No he probado completamente la estabilidad de las combinaciones más nuevas. Utilizo Anaconda3 para mi línea de comando.
Sólo Windows es compatible con el ejecutable. Puede extraer este código para Linux.
main.py Contiene GUI y todo el manejo de E/S y análisis de archivos, junto con detección de errores básica. Crea instancias de la clase de detector.
detector.py Contiene mi clase de detector, que es responsable de activar la red neuronal, iniciar la detección de inferencia y crear una superposición a partir de la máscara para DCP. Ya no necesita hentai.py y puede realizar detecciones por sí solo. También maneja la funcionalidad ESRGAN.
hentai.py Interfaces entre mi detector y el modelo. Basado en Balloon.py de la implementación Mask RCNN. Sólo es necesario para el entrenamiento.
inspect_h_model.ipynb Este cuaderno es idéntico al cuaderno de globos. Lo modifiqué para que funcione con este proyecto y se utiliza mejor para inspeccionar un modelo. Para un registro detallado, use Tensorboard (que debe instalarse si tiene tensorflow)
inspect_h_data.ipynb Lo mismo que arriba, excepto que este cuaderno se usa para validar el conjunto de datos. También tiene información interesante que muestra algunas de las peculiaridades y características de MaskRcnn.
test_combined_generator.py Script que automatiza la censura y anotación de barras, que se explica con más detalle a continuación. Esto debe colocarse en una carpeta separada y espera imágenes sin censura en una carpeta llamada "decensored_input" y genera la imagen barrada en "decensored_input_original" y completa un csv con las anotaciones. No es necesario utilizar este script, a menos que desee ayudar a expandir el conjunto de datos. En cuyo caso, únete a la discordia y contáctame.
hent_AI_COLAB_1.ipynb Cuaderno de Google Colab con instrucciones para la censura de videos de ESRGAN. Esto utilizará las GPU de Google en la nube de forma gratuita y debería ser más rápido que la mayoría, si no todas, las GPU de consumo. Sin embargo, las sesiones se eliminarán después de 30 minutos de inactividad o 12 horas. Recomiendo esta opción para cualquier tipo de censura de vídeo, es visualmente bastante buena y muy rápida.
green_mask_project_mosaic_solving.py Script de GMP que estima la granularidad de un mosaico (tamaño de los cuadros de mosaico) para su uso en la decensura de ESRGAN.
hconfig.ini Archivo de configuración que contiene información del directorio.
El conjunto de datos tiene una combinación de algunas anotaciones hechas a mano y, en su mayoría, imágenes anotadas a mano utilizando nuestro test_combined_generator. Este script toma imágenes sin censura como entrada y puede crear un clon de la imagen con un mosaico y barras de censura aleatorias, utilizando NudeNet. Este conjunto de datos no se proporciona aquí. Puedes contactarme en Discord si estás interesado.
Las anotaciones del conjunto de datos se realizaron con forma de polígono. Los atributos de región de barra y mosaico tienen el siguiente formato:
"region_attributes":{"censor":"bar"}} OR "region_attributes":{"censor":"mosaic"}}
Aquí hay una muestra (NSFW) de las anotaciones de mi conjunto de datos, junto con el editor vgg.
Querrá el último modelo para una mayor precisión.
Modelo 161 (obsoleto)
Modelo 226
Modelo 236 *Empaquetado con v1.5
(Último) Modelo 268
Simplemente elimine su archivo actualweights.h5 y reemplácelo con el nuevo. Mantenga el modelo denominadoweights.h5
ESRGAN (solo en el código) utiliza el modelo de píxeles fatales de Twittman para un superescalado de 4x. No está en este repositorio porque está protegido por MPL-2.0. Descarga el modelo 340000 aquí desde su repositorio. Coloque este modelo en el directorio principal.
Deberá descargar e instalar DeepCreamPy, que está vinculado en la introducción.
El ejecutable necesitará ffmpeg si desea que el sonido se transfiera a los videos. Coloque ffmpeg.exe en el directorio principal, o en algún lugar definido en su RUTA o en una variable de entorno. Para Linux, clone el repositorio y siga las instrucciones proporcionadas para conocer sus requisitos. Para obtener ffmpeg en Linux o colab, use:
!sudo add-apt-repository ppa:jon-severinsson/ffmpeg
!sudo apt-get update
!sudo apt-get install ffmpeg
(Código fuente en Windows) Recomendaría ejecutarlos en un entorno virtual, con Anaconda3. Python 3.5.2, TensorFlow 1.8, Keras 2.2, tensorflow-gpu 1.9.0, torch 0.4.1 y otros paquetes comunes enumerados en requirements.txt
.
Por ahora, se requiere DCP hasta que pueda crear mi propia alternativa. Este proyecto espera utilizar el directorio DCP. Puedes instalar el ejecutable o el código fuente, cualquiera debería funcionar.
DCP SÓLO es compatible con imágenes .png, y no con jpg. O usa solo png o prueba el convertidor de jpg proporcionado (botón Forzar jpg). Puede utilizar herramientas en línea como jpg2png. Nuevamente, esto debe hacerse antes que cualquier otra cosa.
DCP NO es compatible con tramas, ni con ese efecto de puntos característico de las obras impresas (ver más abajo). Simplemente consulte mi otro proyecto, Screentone Remover, que eliminará por lotes los screentones utilizando técnicas de procesamiento de señales digitales. Ésta es la única forma de censurar las imágenes impresas sin color.
Aquí hay un ejemplo de una imagen con tono de pantalla y cómo se ve cuando la elimina mi aplicación Screentone Remover:
Para una decensura completa del video a través de ESRGAN, deberá descargar el modelo de Twittman aquí y colocarlo dentro de la carpeta ColabESRGAN/models.
Los propietarios de GPU Nvidia deben instalar CUDA 9.0 y cuDNN 7.6.4. Tenga en cuenta que hay problemas con las tarjetas RTX y ESRGAN, por lo que si desea usarlos, le recomiendo nuevamente el cuaderno colab.
Recomiendo ampliamente ejecutar hent-AI en lotes, por ejemplo, un doujin o algunos doujins a la vez. La parte más lenta de hent-AI es la inicialización, por lo que la primera inferencia lleva tiempo pero el resto será más rápido.
El modelo actual no es perfecto. Todavía. Espere algunos problemas con las barras de censura blancas, las barras de censura pequeñas, las barras de censura parcialmente transparentes y las barras de censura que están fusionadas para formar una censura grande. Cualquier cantidad absurda de censura puede causar problemas a la hent-AI.
Este modelo no está capacitado para reconocer la censura total, donde la genetalia no se dibuja en absoluto. Tampoco se admite la censura no estándar.
El modelo admite mosaicos y barras, pero tiene muchos problemas cuando ambos se usan en el mismo lugar. Además, DCP solo puede generar barras o mosaicos, por lo que deberá mantener las obras de censura de mosaicos separadas de las obras censuradas de barras. Si debe decensurar imágenes con ambos, le sugiero decensurar las barras en una ejecución y luego los mosaicos en una segunda ejecución.
Se recomiendan las GPU Nvidia compatibles con CUDA para grandes cantidades de imágenes o vídeos. Si no tiene uno, consulte el cuaderno de colab.
El botón Video Maker crea un video a partir de la salida de DCP en decensored_output. Ejecute esto después de que se complete DCP. Tenga en cuenta que aún necesita seleccionar los directorios para el video de origen y el directorio de instalación de DCP.
No pase clips completos por la detección de vídeo, es una tarea muy lenta. Si puede, edite solo los clips cortos con mosaicos visibles, obtenga la salida sin censura y luego edítelos en el resto del video.
La versión exe compilada no es compatible con ESRGAN. Si desea utilizar esto, consulte el cuaderno de colab.
v1.0.0: Lanzamiento inicial para la demostración de HackIllinois 2020
v1.1.0: Código limpio, eliminadas importaciones de bibliotecas innecesarias, instrucciones de instalación y tutorial agregados. Se agregó detección de errores.
v1.2.0: versión ejecutable basada en la rama de solo detección. Se han eliminado o reubicado las bibliotecas de formación y redundantes. Error por el cual la imagen completa se vuelve verde arreglada. Umbral de detección reducido.
v1.3.0: (exe no lanzado aún) Se eliminó el error no Unicode. Se agregó una ventana emergente de pantalla de carga. Umbral de detección reducido. Cambios menores en la interfaz de usuario.
v1.4.0: Se corrigió el detector de video que nombraba archivos incorrectamente. Se agregó una ventana emergente de carga. Ajustes en la interfaz de usuario. Umbral de detección reducido.
v1.5.0: Se corrigió el error de forma en escala de grises. Se corrigió el error por el cual el video se copiaba a la carpeta DCP. Se agregó soporte para jpg, como una opción para la conversión de jpg a png. Se agregó una mejor captura de excepciones. Pesos actualizados al modelo 236.
v1.5.2: Tensorflow actualizado a 1.8 en preparación para futuras funciones de detección de video. Los errores de imagen ya no detienen el programa ni se omiten. La impresión terminal es más informativa. Ajustes de la interfaz de usuario.
1.6.3: Se agregó ESRGAN para decensurar videos, no se requiere DCP para esto. Mayor soporte para nombres de archivos que no son Unicode.
1.6.5: Se agregó verificación de granularidad de mosaico adaptable a través de GMP por rekaXua. Se agregó un archivo colab para la decensura gratuita de videos ESRGAN basada en la nube.
1.6.7: Se cambiaron los procesos de ESRGAN para que se ejecuten en 2 fases: cambio de tamaño de ESRGAN y luego detección de máscara. Más lento pero más indulgente con la memoria. Se agregó máscara borrosa para reducir las costuras en ESRGAN. Para los que no son ESRGAN, se agregó dilatación personalizada para expandir las máscaras. Opción eliminada para jpg, se usará automáticamente. Limpieza de archivos mejorada.
1.6.8: Los videos ahora tomarán audio del video fuente, usando ffmpeg. La tasa de bits de video variable aún no está disponible, por lo que es posible que los tamaños de archivo no coincidan con la fuente. ESRGAN ahora guardará videos en el mismo directorio que el video fuente, principalmente para ayudar con Colab.
1.6.9: ajustes menores en la interfaz de usuario. Ahora hay un hconfig.ini que guardará los directorios y configuraciones utilizados anteriormente al inicio. Durante el proceso de detección de imágenes y videos, se mostrará el recuento total de imágenes/cuadros.
1.6.9b: Revisión para ESRGAN y vídeo ESRGAN. Se corrigió el error con el .ini. Nota: .exe no se ve afectado, por lo que no es necesaria otra versión.
1.6.9c: Revisión para decensor de imágenes y mosaicos para colab. Nota: .exe no se ve afectado, por lo que no es necesaria otra versión.
Para obtener instrucciones detalladas, siga Install_and_Tutorial.txt
Ejecutable:
Instalar desde los enlaces de arriba
Extraer a alguna carpeta
Siga Install_and _tutorial para obtener más información
Código:
pip install -r requirements.txt
python setup.py install
python main.py
En el directorio principal. Siga las instrucciones de la interfaz de usuario desde allí.
python sampleshentaihentai.py train --dataset=dataset_img/ --weights=path/to/weights
Alternativamente, puedes reanudar el entrenamiento usando --weights=last
Las contribuciones y mejoras a este repositorio son bienvenidas, por lo que recomiendo unirse a Discord.
Inspiración de DeepCreamPy
Implementación de Mask Rcnn de Matterport
Pesos obtenidos del encadenador-DCGAN de Mattya.
Implementación de ESRGAN de este documento, utilizando su arquitectura antigua proporcionada por styler00dollar
Usando el modelo entrenado de Twittman, píxeles fatales.
Conjunto de datos anotado con el anotador VGG
Imágenes de recursos de muestra del artista @ao_beni, 落書き色々まとめ y @paxiti respectivamente. Screentone girl es del artista soranosuzume.
Imágenes de activos actuales de うぱ西まり子 y bibimbub en Pixiv.