Quelle est la meilleure façon de détecter par programmation des images porno?

Akismet fait un travail incroyable pour détecter les commentaires de spam. Mais les commentaires ne sont pas la seule forme de spam de nos jours. Que faire si je voulais quelque chose comme akismet pour détecter automatiquement les images porno sur un site de réseau social qui permet aux utilisateurs de télécharger leurs photos, avatars, etc.?

Il y a déjà quelques moteurs de recherche basés sur l’image, ainsi que des outils de reconnaissance de visage, donc je suppose que ce ne serait pas sorcier et que cela pourrait être fait. Cependant, je ne sais pas comment cela fonctionne et comment je devrais le faire si je veux le développer à partir de zéro.

Comment devrais-je commencer?

Y a-t-il un projet open source pour cela?

Cela a été écrit en 2000, je ne suis pas certain que l’état de la technique en matière de détection du porno ait progressé, mais j’en doute.

http://www.dansdata.com/pornsweeper.htm

PORNsweeper semble avoir la capacité de distinguer les images de personnes des images de choses qui ne sont pas des personnes, du moment que les images sont en couleur. Il est moins efficace de distinguer les images sales de personnes de celles qui sont propres.

Par défaut, avec une sensibilité moyenne, si les ressources humaines envoient une image du nouveau type dans les comptes, vous avez environ 50% de chances de l’obtenir. Si votre soeur vous envoie une photo de son enfant de six mois, il est également probable qu’elle soit détenue.

Il est juste de signaler des erreurs amusantes, comme appeler le porno Mona Lisa, si elles sont représentatives du comportement du logiciel. Si les fabricants admettent que leur système de reconnaissance d’image algorithmique laissera tomber la balle 15% du temps, alors se moquer de lui quand c’est le cas exactement, c’est idiot.

Mais PORNsweeper ne semble être à la hauteur de ses spécifications que dans un seul département: détecter le porno réel. C’est à moitié décent de détecter le porno, mais c’est mauvais pour détecter les images propres. Et je ne serais pas surpris si aucune avancée majeure n’était faite dans ce domaine dans un avenir proche.

C’est en fait raisonnablement facile. Vous pouvez détecter par programme les tons de peau – et les images porno ont tendance à avoir beaucoup de peau. Cela créera des faux positifs, mais s’il s’agit d’un problème, vous pouvez transmettre des images ainsi détectées via une modération réelle. Cela non seulement réduit considérablement le travail des modérateurs, mais vous donne également beaucoup de porno gratuit. C’est gagnant-gagnant.

#!python import os, glob from PIL import Image def get_skin_ratio(im): im = im.crop((int(im.size[0]*0.2), int(im.size[1]*0.2), im.size[0]-int(im.size[0]*0.2), im.size[1]-int(im.size[1]*0.2))) skin = sum([count for count, rgb in im.getcolors(im.size[0]*im.size[1]) if rgb[0]>60 and rgb[1]< (rgb[0]*0.85) and rgb[2]<(rgb[0]*0.7) and rgb[1]>(rgb[0]*0.4) and rgb[2]>(rgb[0]*0.2)]) return float(skin)/float(im.size[0]*im.size[1]) for image_dir in ('porn','clean'): for image_file in glob.glob(os.path.join(image_dir,"*.jpg")): skin_percent = get_skin_ratio(Image.open(image_file)) * 100 if skin_percent>30: print "PORN {0} has {1:.0f}% skin".format(image_file, skin_percent) else: print "CLEAN {0} has {1:.0f}% skin".format(image_file, skin_percent) 

Ce code mesure les tons de peau au centre de l’image. J’ai testé 20 images pornos relativement apprivoisées et 20 images complètement innocentes. Il marque 100% du “porno” et 4 des 20 des images nettes. C’est un taux de faux positifs assez élevé, mais le script se veut plutôt prudent et pourrait être amélioré. Il fonctionne sur les tons de peau clairs, foncés et asiatiques.

Ses principaux points faibles avec les faux positifs sont les objects bruns comme le sable et le bois et, bien sûr, il ne fait pas la différence entre la chair “coquine” et la chair “gentille” (comme les coups de visage).

La faiblesse avec les faux négatifs serait des images sans chair bien exposée (comme la servitude du cuir), la peau peinte ou tatouée, les images N & B, etc.

code source et exemples d’images

Je préférerais permettre aux utilisateurs de signaler des images erronées. Le développement de la reconnaissance d’images peut demander beaucoup d’efforts et de temps et ne sera pas aussi précis que des yeux humains. Il est beaucoup moins coûteux d’externaliser ce travail de modération.

Jetez un oeil à: Amazon Mechanical Turk

« Amazon Mechanical Turk (MTurk) fait partie de la suite d’Amazon Web Services, un marché de crowdsourcing qui permet aux programmes informatiques de coordonner l’utilisation de l’intelligence humaine pour exécuter des tâches que les ordinateurs sont incapables de faire».

  • Modèles de sacs de mots visuels pour la classi fi cation et le filtrage d’images adultes
  • Quelle est la meilleure façon de détecter par programmation des images porno?
  • Un bref aperçu du logiciel de détection et de suppression de porno
  • Détection d’images numériques pornographiques (2011!)

BOOM! Voici le livre blanc contenant l’algorithme.

Est-ce que quelqu’un sait où obtenir le code source pour une implémentation java (ou tout autre langage)?

Ça va bercer.

Un algorithme appelé WISE a un taux de précision de 98% mais un taux de faux positif de 14%. Ainsi, vous laissez les utilisateurs signaler les faux négatifs de 2%, idéalement avec une suppression automatique si un certain nombre d’utilisateurs le signale, et les modérateurs voient les 14% de faux positifs.

Nude.js basé sur le livre blanc de Rigan Ap-apid de l’Université De La Salle.

Il existe un logiciel qui détecte la probabilité pour le porno, mais ce n’est pas une science exacte, car les ordinateurs ne peuvent pas reconnaître ce qui se trouve réellement sur les images (les images ne sont qu’un grand ensemble de valeurs sur une grid sans signification). Vous pouvez simplement enseigner à l’ordinateur ce qu’est le porno et ce qu’il ne faut pas en donnant des exemples. Cela présente l’inconvénient de ne reconnaître que ces images ou des images similaires.

Compte tenu de la nature répétitive du porno, vous avez de bonnes chances de former le système avec peu de faux positifs. Par exemple, si vous entraînez le système avec des personnes nues, il peut également signaler les photos d’une plage avec des personnes «presque» nues comme du porno.

Un logiciel similaire est le logiciel facebook récemment sorti. C’est juste spécialisé sur les visages. Le principe principal est le même.

Techniquement, vous implémenteriez une sorte de détecteur de fonctionnalités qui utilise un filtrage bayes. Le détecteur de caractéristiques peut rechercher des caractéristiques telles que le pourcentage de pixels de couleur chair s’il s’agit d’un simple détecteur ou simplement calculer la similarité de l’image actuelle avec un ensemble d’images pornographiques enregistrées.

Ce n’est bien sûr pas limité au porno, c’est en fait plus une affaire de coin. Je pense que les systèmes qui essaient de trouver d’autres choses dans les images sont plus communs 😉

La réponse est vraiment facile: il est assez prudent de dire que ce ne sera pas possible dans les deux prochaines décennies. Avant cela, nous aurons probablement de bons outils de traduction. La dernière fois que j’ai vérifié, les gars de l’IA avaient du mal à identifier la même voiture sur deux photos sockets sous un angle légèrement modifié. Jetez un coup d’œil sur le temps qu’il leur a fallu pour obtenir une reconnaissance OCR ou une reconnaissance vocale suffisante. Ce sont des problèmes de reconnaissance qui peuvent grandement bénéficier des dictionnaires et qui sont loin d’avoir des solutions totalement fiables malgré les millions d’heures de travail qui leur sont consacrées.

Cela étant dit, vous pouvez simplement append une “offensive”. lien à côté de l’utilisateur généré contend et avoir un mod cross vérifier les plaintes entrantes.

modifier:

J’ai oublié quelque chose: SI vous allez implémenter une sorte de filtre, vous aurez besoin d’un filtre fiable. Si votre solution est correcte à 50%, 2000 utilisateurs sur 4000 avec des images correctes seront bloqués. Attendez-vous à un outrage.

Un étudiant diplômé de la National Cheng Kung University de Taiwan a effectué une recherche sur ce sujet en 2004. Il a réussi à atteindre un taux de réussite de 89,79% en détectant des photos de nus téléchargées sur Internet. Voici le lien vers sa thèse: L’étude sur la détection d’image de personnes nues basée sur la couleur de la peau
C’est en chinois donc vous pourriez avoir besoin d’un traducteur au cas où vous ne le lirez pas.

réponse courte: utilisez un modérateur;)

Réponse longue: Je ne pense pas qu’il y a un projet pour cette cause qu’est-ce que le porno? Seules les jambes, la nudité complète, les nains etc. Son subjectif.

Ajoutez un lien offensant et stockez le md5 (ou un autre hachage) de l’image incriminée afin qu’il puisse être automatiquement étiqueté à l’avenir.

Comment serait-il cool si quelqu’un avait une grande firebase database publique d’image md5 avec des balises descriptives fonctionnant comme un service Web? Beaucoup de porno ne sont pas des œuvres originales (dans la mesure où la personne qui les a maintenant ne l’a probablement pas fait) et les images populaires ont tendance à flotter à différents endroits, ce qui peut vraiment faire la différence.

Si vous avez vraiment du temps et de l’argent:

Une façon de le faire est de 1) écrire un algorithme de détection d’image pour déterminer si un object est humain ou non. Cela peut être fait en masquant une image pour récupérer ses “contours” et voir si les contours correspondent à un contour humain.

2) Les données exploitent beaucoup d’images porno et utilisent des techniques d’exploration de données telles que les algorithmes C4 ou l’optimisation des essaims de particules pour apprendre à détecter les motifs qui correspondent aux images pornographiques.

Cela nécessitera que vous identifiiez comment les contours homme / femme nu d’un corps humain doivent ressembler au format numérisé (ceci peut être réalisé de la même manière que les algorithmes de reconnaissance d’image OCR).

J’espère que tu t’amuses! 🙂

Il me semble que le principal obstacle est de définir une “image porno”. Si vous pouvez le définir facilement, vous pourriez probablement écrire quelque chose qui fonctionnerait. Mais même les humains ne peuvent pas s’entendre sur ce qu’est le porno. Comment l’application va-t-elle savoir? La modération par l’utilisateur est probablement votre meilleur pari.

J’ai vu une application de filtrage Web qui filtre les images porno, désolé je ne me souviens plus du nom. C’était plutôt sujet aux faux positifs mais la plupart du temps ça marchait.

Je pense que le truc principal détecte “trop ​​de peau sur la photo 🙂

Détecter des images pornographiques est toujours une tâche d’IA bien définie qui est encore très théorique.

Récoltez le pouvoir collectif et l’intelligence humaine en ajoutant un bouton / lien “Signaler un spam / abus”. Ou employez plusieurs modérateurs pour faire ce travail.

PS Vraiment surpris de voir combien de personnes posent des questions en supposant que les logiciels et les algorithmes sont puissants sans même se demander si ce qu’ils veulent pourrait être fait. Sont-ils des représentants de cette nouvelle génération de programmeurs qui ne comprennent rien au matériel, à la programmation de bas niveau et à tout ce qui se cache derrière?

PS # 2. Je me souviens aussi que périodiquement, il arrive que certaines personnes ne peuvent pas décider si une photo est de la pornographie ou de l’art. Même après les règles du sortingbunal, il y a des chances que la moitié des personnes considèrent que la décision est erronée. La dernière situation stupide du genre était tout à fait récente quand une page Wikipedia a été bannie au Royaume-Uni en raison d’une image de couverture de CD présentant de la nudité.

Deux options auxquelles je peux penser (bien qu’aucun des deux ne détecte de manière systématique le porno):

  1. Bloquer toutes les images téléchargées jusqu’à ce qu’un de vos administrateurs les ait regardées. Il n’y a aucune raison pour que cela prenne beaucoup de temps: vous pourriez écrire un logiciel qui affiche 10 images par seconde, presque comme un film – même à cette vitesse, il est facile pour un être humain de repérer une image potentiellement pornographique. Ensuite, vous rembobinez dans ce logiciel et regardez de plus près.
  2. Ajouter l’habituel “marquer cette image comme inappropriée” option.

L’ API de service Web BrightCloud est parfaite pour cela. C’est une API REST pour faire des recherches sur le site comme celle-ci. Il contient une très grande et très précise firebase database de filtrage Web et l’une des catégories, Adult, a plus de 10 millions de sites pornographiques identifiés!

J’ai entendu parler d’outils utilisant un algorithme très simple mais efficace. L’algorithme a calculé la quantité relative de pixels avec une valeur de couleur proche de certaines couleurs “peau” prédéfinies. Si ce montant est supérieur à une valeur prédéfinie, l’image est considérée comme du contenu érotique / pornographique. Bien sûr, cet algorithme donnera des résultats faussement positifs pour les photos en gros plan et bien d’autres choses.
Comme vous écrivez sur les réseaux sociaux, il y aura beaucoup de photos “normales” avec une grande quantité de couleur de peau, vous ne devriez donc pas utiliser cet algorithme pour refuser toutes les images avec un résultat positif. Mais vous pouvez l’utiliser pour aider les modérateurs, par exemple en atsortingbuant une priorité plus élevée à ces images. Par conséquent, si le modérateur souhaite vérifier certaines nouvelles images à la recherche de contenu pornographique, il peut commencer par ces images.

Celui-ci semble prometteur. Fondamentalement, ils détectent la peau (avec calibrage en reconnaissant les visages) et déterminent les «chemins de peau» (c.-à-d. En mesurant la proportion de pixels de la peau par rapport aux pixels / pixels de la peau). Cela a des performances décentes. http://www.prip.tuwien.ac.at/people/julian/skin-detection

Regardez le nom du fichier et tous les atsortingbuts. Il n’y a pas assez d’informations pour détecter même 20% des images malveillantes, mais une simple liste noire de mots-clés permettrait au moins de détecter les images avec des étiquettes descriptives ou des métadonnées. 20 minutes de codage pour un taux de réussite de 20% ne sont pas une mauvaise affaire, en particulier en tant que pré-écran qui peut au moins capturer quelques simples avant de passer le rest au modérateur pour le juger.

L’autre astuce utile est l’inverse bien sûr, maintenir une liste blanche de sources d’images à autoriser sans modération ni vérification. Si la plupart de vos images proviennent de sources ou d’uploaders sécurisés connus, vous pouvez simplement les accepter de manière sécurisée.

Je ne tenterai pas plus tard de définir les types de documents que je crois comprendre être compris dans cette description abrégée [“pornographie hard-core”]; et peut-être que je ne pourrais jamais réussir à le faire de manière intelligible. Mais je le sais quand je le vois, et le film impliqué dans cette affaire n’est pas ça.

– Le juge Potter Stewart de la Cour suprême des États-Unis, 1964

Vous pouvez trouver de nombreux livres blancs sur le net traitant de ce sujet.

Ce n’est pas sorcier. Plus maintenant. C’est très similaire à la reconnaissance de visage. Je pense que la manière la plus simple d’y faire face est d’utiliser l’apprentissage automatique. Et comme nous avons affaire à des images, je peux pointer vers des réseaux neuronaux, car ceux-ci semblent préférables pour les images. Vous aurez besoin de données de formation. Et vous pouvez trouver des tonnes de données d’entraînement sur Internet, mais vous devez rogner les images à la partie spécifique que l’algorithme doit détecter. Bien sûr, vous devrez diviser le problème en différentes parties du corps que vous souhaitez détecter et créer des données d’entraînement pour chacun, et c’est là que les choses deviennent amusantes.

Comme quelqu’un l’a dit plus haut, cela ne peut pas être fait à 100%. Il y aura des cas où de tels algorithmes échouent. La précision réelle dépendra de vos données d’entraînement, de la structure de vos réseaux neuronaux et de la manière dont vous choisirez de regrouper les données d’entraînement (pénis, vagins, seins, etc., et leurs combinaisons). En tout cas, je suis convaincu que cela peut être réalisé avec une grande précision pour les images pornographiques explicites.

C’est un détecteur de nudité. Je n’ai pas essayé. C’est le seul logiciel libre que j’ai pu trouver.

https://code.google.com/p/nudetech

Il n’y a aucun moyen de faire cela à 100% (je dirais que peut-être 1 à 5% serait plausible) avec les connaissances actuelles. Vous obtiendriez de meilleurs résultats (que ceux de 1 à 5%) en vérifiant simplement les noms des images pour les mots liés au sexe :).

@SO Troll: C’est vrai.