Le contenu illustré pour adultes créé au Japon doit être censuré par la loi. Deux types courants de censure concernent les barres de censure et les flous en mosaïque. Pour nous, dégénérés vivant en dehors du Japon, cela signifie que nous sommes également soumis aux barreaux et aux mosaïques. Il existe une solution, DeepCreamPy de deeppomf, qui peut contourner les censeurs, à condition de lui indiquer où se trouvent les censeurs. C'est un processus long et minutieux, j'espère donc automatiser ce processus avec ce projet. Ce projet utilisera l'apprentissage profond et la segmentation d'images, des techniques généralement utilisées dans les véhicules autonomes et les tâches de vision par ordinateur. Nouveau pour la version 1.6.3, nous avons ajouté ESRGAN comme alternative à DeepCreamPy, qui décensera également une image/vidéo mosaïque après la détection.
Ceci est construit sur Mask R-CNN de Matterport et la décensure vidéo utilise ESRGAN.
Voici une vidéo NSFW qui montre mieux ce que fait ce projet, sur l'ancien modèle 161.
Twitter (NSFW).
Vous aimez ce que vous voyez ? Aidez à financer ce projet :
Vous pouvez rejoindre les discussions sur le développement et l'actualité sur la chaîne Discord : https://discord.gg/j4dPZ7W
Exemple de détection de barre sur le modèle 226 :
Exemples de détection de mosaïque sur le modèle 236 :
Pour ces deux exemples, le dernier modèle 161 offre des masques et une détection beaucoup plus précis.
Vous aurez besoin des mêmes exigences que l'implémentation Mask RCNN de Matterport, rien de plus. Notez que j'utilise tensorflow 1.8.0, tensorflow-gpu 1.9.0, torch 0.4.1 et keras 2.2.0. Je n'ai pas entièrement testé la stabilité des combinaisons plus récentes. J'utilise Anaconda3 pour ma ligne de commande.
Seul Windows est pris en charge pour l'exécutable. Vous pouvez extraire ce code pour Linux.
main.py Contient l'interface graphique et toute la gestion des E/S et l'analyse des fichiers, ainsi qu'une détection d'erreurs de base. Instancie la classe du détecteur.
detector.py Contient ma classe de détecteur, qui est responsable de l'apparition du réseau neuronal, du démarrage de la détection d'inférence et de la création d'une superposition à partir du masque pour DCP. N'a plus besoin de hentai.py et peut exécuter des détections seul. Gère également la fonctionnalité ESRGAN.
hentai.py Interfaces entre mon détecteur et le modèle. Basé sur l'implémentation Balloon.py de Mask RCNN. Nécessaire uniquement pour la formation.
inspect_h_model.ipynb Ce carnet est identique au carnet de ballons. Je l'ai modifié pour fonctionner avec ce projet à la place, et il est préférable de l'utiliser pour inspecter un modèle. Pour une journalisation détaillée, utilisez Tensorboard (qui doit être installé si vous disposez de Tensorflow)
inspect_h_data.ipynb Même chose que ci-dessus, sauf que ce notebook est utilisé pour valider l'ensemble de données. Contient également des informations intéressantes montrant certaines des bizarreries et fonctionnalités de MaskRcnn
test_combined_generator.py Script qui automatise la censure et l'annotation des barres, plus expliqué ci-dessous. Ceci est censé être placé dans un dossier séparé et attend des images non censurées dans un dossier appelé "decensored_input" et génère l'image barrée dans "decensored_input_original" et remplit un csv avec les annotations. Vous n'avez pas besoin d'utiliser ce script, sauf si vous souhaitez contribuer à l'expansion de l'ensemble de données. Dans ce cas, rejoignez le discord et contactez-moi.
hent_AI_COLAB_1.ipynb Bloc-notes Google Colab avec instructions pour la décensure vidéo ESRGAN. Cela utilisera gratuitement les GPU de Google sur le cloud et devrait être plus rapide que la plupart, sinon tous les GPU grand public. Mais les sessions seront supprimées après 30 minutes d’inactivité ou 12 heures. Je recommande cette option pour tout type de décensure vidéo, elle est visuellement assez bonne et très rapide.
green_mask_project_mosaic_resolution.py Script de GMP qui estime la granularité d'une mosaïque (taille des boîtes de mosaïque) pour une utilisation dans la décensure ESRGAN.
hconfig.ini Fichier de configuration contenant les informations de répertoire.
L'ensemble de données contient un mélange de quelques annotations faites à la main et principalement d'images annotées faites à la main à l'aide de notre test_combined_generator. Ce script prend en entrée des images non censurées et peut créer un clone de l'image avec une mosaïque et des censeurs à barres aléatoires, à l'aide de NudeNet. Cet ensemble de données n'est pas fourni ici. Vous pouvez me contacter sur Discord si vous êtes intéressé.
Les annotations de l'ensemble de données ont été faites avec la forme du polygone. Les attributs de région Bar et Mosaïque sont formatés comme suit :
"region_attributes":{"censor":"bar"}} OR "region_attributes":{"censor":"mosaic"}}
Voici un échantillon (NSFW) de mes annotations d'ensemble de données, ainsi que l'éditeur vgg.
Vous voudrez le dernier modèle pour une meilleure précision.
Modèle 161 (obsolète)
Modèle 226
Modèle 236 *Emballé avec la v1.5
(Dernier) modèle 268
Supprimez simplement votre fichier poids.h5 actuel et remplacez-le par le nouveau. Veuillez conserver le modèle nommé poids.h5
ESRGAN (sur le code uniquement) utilise le modèle de pixels fatals de Twittman pour une mise à l'échelle 4x. Il ne figure pas sur ce dépôt car il est protégé par MPL-2.0. Téléchargez le modèle 340000 ici depuis son dépôt. Placez ce modèle dans le répertoire principal.
Vous devrez télécharger et installer DeepCreamPy, dont le lien est lié dans l'intro.
L'exécutable aura besoin de ffmpeg si vous souhaitez que le son soit répercuté sur les vidéos. Placez ffmpeg.exe dans le répertoire principal, ou quelque part défini dans votre PATH ou dans une variable d'environnement. Pour Linux, clonez le dépôt et suivez les instructions fournies pour obtenir ses exigences. Pour obtenir ffmpeg sur Linux ou Colab, utilisez :
!sudo add-apt-repository ppa:jon-severinsson/ffmpeg
!sudo apt-get update
!sudo apt-get install ffmpeg
(Code source sous Windows) Je recommanderais de les exécuter sur un environnement virtuel, avec Anaconda3. Python 3.5.2, TensorFlow 1.8, Keras 2.2, tensorflow-gpu 1.9.0, torch 0.4.1 et autres packages courants répertoriés dans requirements.txt
.
Pour l'instant, DCP est requis jusqu'à ce que je puisse créer ma propre alternative. Ce projet prévoit d'utiliser le répertoire DCP. Vous pouvez installer l'exécutable ou le code source, l'un ou l'autre devrait fonctionner.
DCP est UNIQUEMENT compatible avec les images .png, et non jpg. Soit vous utilisez uniquement png, soit essayez le convertisseur jpg fourni (bouton Forcer jpg). Vous pouvez utiliser des outils en ligne comme jpg2png. Encore une fois, cela devrait être fait avant toute autre chose.
DCP n'est PAS compatible avec les screentones, ni avec cet effet pointillé caractéristique des œuvres imprimées (voir ci-dessous). Reportez-vous simplement à mon autre projet, Screentone Remover, qui supprimera par lots les screentones à l'aide de techniques de traitement du signal numérique. C’est le seul moyen de décensurer les images imprimées non colorées.
Voici un exemple d'image screentonée et à quoi elle ressemble une fois supprimée par mon application Screentone Remover :
Pour une décensure vidéo complète via ESRGAN, vous devrez télécharger le modèle de Twittman ici et le placer dans le dossier ColabESRGAN/models.
Les propriétaires de GPU Nvidia doivent installer CUDA 9.0 et cuDNN 7.6.4. Notez qu'il y a des problèmes avec les cartes RTX et ESRGAN, donc si vous souhaitez les utiliser, je recommande à nouveau le notebook Colab à la place.
Je recommande fortement d'exécuter hent-AI sur des lots, par exemple un doujin ou quelques doujins à la fois. La partie la plus lente de hent-AI est l'initialisation, donc la première inférence prend du temps mais le reste sera plus rapide.
Le modèle actuel n'est pas parfait. Encore. Attendez-vous à des problèmes avec les barres de censure blanches, les petites barres de censure, les barres de censure partiellement transparentes et les barres de censure fusionnées pour former une seule grande censure. Toute quantité absurde de censure peut causer des problèmes à hent-AI.
Ce modèle n'est pas formé à la reconnaissance d'une censure totale, où les genetalia ne sont pas du tout dessinées. La censure non standard n'est pas non plus prise en charge.
Le modèle prend en charge les mosaïques et les barres, mais il a vraiment du mal lorsque les deux sont utilisés au même endroit. De plus, DCP ne peut générer que des barres ou des mosaïques, vous devrez donc séparer les œuvres de censure en mosaïque des œuvres censurées en barre. Si vous devez décensurer les images avec les deux, je suggère de décensurer les barres en une seule fois, puis les mosaïques en une seconde.
Les GPU Nvidia compatibles CUDA sont recommandés pour de grandes quantités d'images ou de vidéos. Si vous n'en avez pas, référez-vous au notebook colab.
Le bouton Video Maker crée une vidéo à partir de la sortie de DCP dans decensored_output. Exécutez-le une fois le DCP terminé. Notez que vous devez toujours sélectionner les répertoires de la vidéo source et le répertoire d'installation de DCP.
Ne faites pas passer des clips entiers par la détection vidéo, c'est une tâche très lente. Si vous le pouvez, montez uniquement les courts clips avec des mosaïques visibles, obtenez la sortie décensurée, puis montez-les dans le reste de la vidéo.
La version exe compilée ne prend pas en charge ESRGAN. Si vous souhaitez l'utiliser, reportez-vous au notebook Colab.
v1.0.0 : version initiale pour la démo HackIllinois 2020
v1.1.0 : code nettoyé, suppression des importations de bibliothèque inutiles, ajout d'instructions d'installation et d'un didacticiel. Détection d'erreur ajoutée.
v1.2.0 : version exécutable basée sur la branche de détection uniquement. Les formations et les bibliothèques redondantes ont été supprimées ou déplacées. Bug où l'image entière renvoie du vert corrigé. Seuil de détection abaissé.
v1.3.0 : (exe pas encore publié) Suppression de l'erreur non-unicode. Ajout d'une fenêtre contextuelle sur l'écran de chargement. Seuil de détection abaissé. Modifications mineures de l'interface utilisateur.
v1.4.0 : Correction du détecteur vidéo nommant incorrectement les fichiers. Ajout d'une fenêtre contextuelle de chargement. Modifications de l'interface utilisateur. Seuil de détection abaissé.
v1.5.0 : Correction d'une erreur de forme en niveaux de gris. Correction d'un bug où la vidéo était copiée dans le dossier DCP. Ajout de la prise en charge du jpg, en tant qu'option pour la conversion jpg en png. Ajout d'une meilleure capture d'exceptions. Poids mis à jour vers le modèle 236.
v1.5.2 : Tensorflow mis à niveau vers la version 1.8 en préparation des futures fonctionnalités de détection vidéo. Les erreurs d'image n'arrêtent plus le programme et ne sont plus ignorées. L'impression du terminal est plus informative. Ajustements de l'interface utilisateur.
1.6.3 : Ajout d'ESRGAN pour la décensure vidéo, DCP non requis pour cela. Prise en charge supplémentaire des noms de fichiers non Unicode.
1.6.5 : Ajout de la vérification adaptative de la granularité de la mosaïque via GMP par rekaXua. Ajout du fichier Colab pour la décensure vidéo ESRGAN gratuite basée sur le cloud.
1.6.7 : Modification des processus ESRGAN pour qu'ils s'exécutent en 2 phases : redimensionnement d'ESRGAN, puis détection de masque. Plus lent mais plus indulgent avec la mémoire. Ajout du flou du masque pour moins de coutures sur ESRGAN. Pour les non-ESRGAN, ajout d'une dilatation personnalisée pour étendre les masques. Option supprimée pour jpg, elle sera utilisée automatiquement. Nettoyage des fichiers amélioré.
1.6.8 : Les vidéos prendront désormais l'audio de la vidéo source, en utilisant ffmpeg. Le débit vidéo variable n'est pas encore disponible, la taille des fichiers peut donc ne pas correspondre à la source. ESRGAN enregistrera désormais les vidéos dans le même répertoire que la vidéo source, principalement pour faciliter le Colab.
1.6.9 : Ajustements mineurs de l'interface utilisateur. Il existe maintenant un hconfig.ini qui enregistrera vos précédents répertoires et paramètres utilisés au démarrage. Pendant le processus de détection des images et des vidéos, le nombre total d'images/images sera affiché.
1.6.9b : Correctif pour ESRGAN et vidéo ESRGAN. Correction d'un bug avec le .ini. Remarque : .exe n'est pas affecté, vous n'avez donc pas besoin d'une autre version.
1.6.9c : Hotfix pour la décensure des images et des mosaïques pour Colab. Remarque : .exe n'est pas affecté, vous n'avez donc pas besoin d'une autre version.
Pour des instructions détaillées, suivez Install_and_Tutorial.txt
Exécutable :
Installer à partir des liens ci-dessus
Extraire dans un dossier
Suivez Install_and _tutorial pour en savoir plus
Code:
pip install -r requirements.txt
python setup.py install
python main.py
Dans le répertoire principal. Suivez les instructions de l'interface utilisateur à partir de là.
python sampleshentaihentai.py train --dataset=dataset_img/ --weights=path/to/weights
Alternativement, vous pouvez reprendre l'entraînement en utilisant --weights=last
Les contributions et les améliorations de ce dépôt sont les bienvenues, j'encourage donc à rejoindre le Discord.
Inspiration de DeepCreamPy
Implémentation du masque Rcnn à partir de Matterport
Poids obtenus auprès du chainer de Mattya-DCGAN
Implémentation d'ESRGAN à partir de cet article, en utilisant leur ancienne architecture fournie par styler00dollar
Utilisation des pixels fatals du modèle formé de Twittman.
Ensemble de données annoté avec l'annotateur VGG
Exemples d'images d'actifs de l'artiste @ao_beni, 落書き色々まとめ et @paxiti respectivement. Screentone girl est de l’artiste soranosuzume.
Images d'actifs actuelles de うぱ西まり子 et bibimbub sur Pixiv.