Comparaison des meilleures API pour filtrer le contenu obscène

Test complet de plusieurs API pour filtrer les images de différentes catégories, telles que la nudité, la pornographie et la dissection.



Une personne comprend immédiatement qu'une certaine image est inappropriée, c'est-à-dire NSFW (Not Safe For Work). Mais pour l'intelligence artificielle, tout n'est pas si clair. De nombreuses entreprises tentent désormais de développer des outils efficaces pour filtrer automatiquement ce contenu.

Je voulais comprendre quel est l'état actuel du marché. Comparez l'efficacité des API de filtrage d'images existantes dans les catégories suivantes:

  • Nudité pure et simple
  • Nudité suggestive (c'est-à-dire, suggérant une nudité pure et simple - environ Per.)
  • Pornographie / rapports sexuels
  • Imitation / porno animé
  • Démembrement (sanglant) / violence

Tl; DR: Si vous voulez simplement découvrir la meilleure API, vous pouvez immédiatement aller à la comparaison à la fin de l'article.

Conditions d'expérimentation


Jeu de données . Pour évaluation, j'ai collecté mon jeu de données NSFW avec un nombre égal d'images dans chaque sous-catégorie NSFW. L'ensemble de données se compose de 120 images avec 20 images NSFW positives pour chacune des cinq catégories mentionnées et 20 images SFW. J'ai décidé de ne pas utiliser le YACVID 180 accessible au public, car il est principalement basé sur l'utilisation de la nudité comme mesure du contenu NSFW.

La collecte d'images NSFW est fastidieuse; c'est une tâche très longue et complètement pénible, ce qui explique le petit nombre d'images.

Le jeu de données est disponible en téléchargement ici . [Avertissement: contient un contenu explicite]

Voici un tableau avec des résultats bruts pour chaque API et chaque image dans l'ensemble de données.

Mesures


Chacun des classificateurs est évalué selon des mesures généralement acceptées:

Vraiment positif: TP


Si le classificateur appelle quelque chose NSFW et c'est en fait NSFW.

Vrai négatif: TN


Si le classificateur appelle quelque chose SFW, et c'est en fait SFW.

Faux positif: FP


Si le classificateur s'appelle quelque chose NSFW, et c'est en fait SFW.

Faux négatif: FN


Si le classificateur appelle quelque chose SFW, mais c'était en fait NSFW.



Précision


Si le modèle fait une prévision, peut-on lui faire confiance?

Précision


Si le modèle indique que l'image est NSFW, à quelle fréquence les prévisions sont-elles correctes?

Rappel


Si tous les échantillons sont NSFW, combien identifie-t-il?

Score F1


C'est un mélange d'erreur et de rappel, souvent similaire à la précision.



Les API suivantes pour la modération du contenu ont été évaluées:


Performance par catégorie


Tout d'abord, j'ai évalué chaque API dans toutes les catégories NSFW.

Pornographie / sexe


Les API Google et Sightengine sont vraiment bonnes ici. Ils étaient les seuls à reconnaître correctement toutes les images pornographiques. Nanonets et Algorithmia sont légèrement en retrait avec un score de 90%. Microsoft et Imagga ont affiché les pires performances dans cette catégorie.





Les images faciles à identifier sont clairement pornographiques. Toutes les API ont correctement reconnu les images ci-dessus. La plupart d'entre eux ont prédit NSFW avec une très grande confiance.



Les images difficiles à identifier contiennent des objets partiellement fermés ou flous, ce qui rend leur travail difficile. Dans le pire des cas, 11 des 12 systèmes ont fait une erreur avec l'image. L'efficacité de la reconnaissance de la pornographie est très différente selon l'intensité du porno et la visibilité du contenu.

Nudité pure et simple


La plupart des API ont étonnamment bien fonctionné avec de nombreuses images de cette catégorie, affichant un taux de détection de 100%. Même les API les moins performantes (Clarifai et Algorithmia) ont montré 90%. La définition de la nudité a toujours fait l'objet de débats. Comme le montrent les résultats, les systèmes échouent généralement dans les cas douteux lorsqu'il est probable que l'image est encore SFW.





Dans les images simples, la nudité explicite est clairement visible. N'importe qui les appellera NSFW sans question. Pas une seule API n'a fait d'erreur, et le score moyen était de 0,99.



Sur les images controversées, les API étaient erronées. Peut-être que la raison en est que chacun d'eux a des paramètres de sensibilité.

Nudité suggestive


Google a de nouveau gagné avec un taux de détection de 100%. Sightengine et Nanonets ont obtenu de meilleurs résultats que les autres avec 95% et 90%, respectivement. Les systèmes automatisés reconnaissent la nudité suggestive presque aussi facilement qu'explicitement. Ils font une erreur dans les images qui ressemblent généralement à SFW, avec seulement quelques signes de nudité.





Encore une fois, aucune API ne s'est trompée sur les images NSFW explicites.



Dans la nudité suggestive, les API divergeaient. Comme dans la pure nudité, ils avaient différents seuils de tolérance. Je ne sais pas moi-même si je dois reconnaître ces images SFW ou non.

Imitation / porno animé


Toutes les API ont performé exceptionnellement bien ici et ont trouvé des exemples à 100% d'imitation du porno. La seule exception était Imagga, qui manquait une image. Je me demande pourquoi les API fonctionnent si bien dans cette tâche? Apparemment, il est plus facile pour les algorithmes d'identifier les images créées artificiellement que les images naturelles.





Toutes les API ont montré d'excellents résultats et une cote de confiance élevée.



La seule image sur laquelle Imagga s'est trompé, peut être interprétée comme non pornographique, si vous ne la regardez pas longtemps.

Dissection


C'est l'une des catégories les plus difficiles, car l'efficacité de détection moyenne via l'API était inférieure à 50%. Clarifai et Sightengine ont surpassé la concurrence en détectant correctement 100% des images de cette catégorie.





Les API traitaient mieux les images médicales, mais même 4 des 12 systèmes ont fait l'erreur sur les plus légers d'entre eux.



Les images difficiles n'ont rien en commun. Cependant, les gens qualifieront très facilement ces images de sanglantes. Cela signifie probablement que la raison de la faible efficacité est le manque de données disponibles pour la formation.

Images sûres


Les images qui ne peuvent pas être identifiées comme NSFW sont considérées comme sûres. La collecte de données en soi est difficile, car ces images doivent être proches de NSFW pour apprécier l'API. On peut se demander si toutes ces images sont SFW ou non. Ici, Sightengine et Google ont montré le pire résultat, ce qui explique leurs excellentes performances dans d'autres catégories. Ils appellent simplement toutes les images NSFW douteuses. D'un autre côté, Imagga a fait du bon travail ici car il ne nomme rien NSFW. X-Moderator s'est également très bien comporté.




Liens vers les images originales: SFW15 , SFW12 , SFW6 , SFW4

Seules de petites parcelles de peau apparaissent sur les images faciles à identifier et les utilisateurs peuvent facilement les identifier comme SFW. Un ou deux systèmes seulement les ont incorrectement reconnus.


Liens vers les images originales: SFW17 , SFW18 , SFW10 , SFW3

Toutes les images SFW qui sont difficiles à identifier montrent de plus grandes zones de la peau ou de l'anime (les systèmes ont tendance à considérer la pornographie animée). La plupart des API comptaient les images de grande surface comme SFW. La question est, est-ce SFW?

Comparaison générale


En regardant l'efficacité de l'API dans toutes les catégories NSFW, ainsi que leur efficacité à reconnaître correctement SFW, nous pouvons conclure que le meilleur résultat F1 et la meilleure précision moyenne du système Nanonets: il fonctionne de manière stable dans toutes les catégories. Le système Google montre un résultat exceptionnellement bon dans les catégories NSFW, mais marque trop souvent des images sûres comme NSFW, il a donc reçu une amende sur la métrique F1.







Par les développeurs


J'ai comparé les 5 meilleurs systèmes pour la précision et le score F1 pour évaluer les différences de performances. Plus la zone du diagramme des pétales est grande, mieux c'est.

1. Nanonets


Le système Nanonets n'a pris la première place dans aucune catégorie. Cependant, c'est la solution la plus équilibrée. Le point le plus faible sur lequel vous pouvez encore travailler est la précision de reconnaissance de SFW. Il est trop sensible à toute zone exposée du corps.



2. Google


Google est le meilleur dans la plupart des catégories NSFW, mais le pire dans la détection SFW. Je veux noter que j'ai pris l'échantillon pour le tester avec Google, c'est-à-dire qu'elle "devrait connaître" ces images. Cela peut être la raison de très bonnes performances dans la plupart des catégories.



3. Clarifai


Clarifai brille vraiment dans la détermination du démembrement, devant la plupart des autres API, le système est également bien équilibré et fonctionne bien dans la plupart des catégories. Mais elle manque de précision pour identifier la nudité suggestive et la pornographie.



4. X-Moderator


X-Moderator est une autre API bien équilibrée. En plus de la dissection, il identifie clairement la plupart des autres types de NSFW. 100% de précision dans la détermination de SFW, ce qui distingue ce système de ses concurrents.



5. Sightengine


Comme Google, le système Sightengine a montré un résultat presque parfait pour identifier NSFW. Cependant, elle n'a pas reconnu une seule image de la dissection.



Les prix


Un autre critère dans le choix d'une API est le prix. Les prix de toutes les entreprises sont comparés ci-dessous. La plupart des API offrent un essai gratuit avec une utilisation limitée. Yahoo est la seule API entièrement gratuite, mais elle doit être hébergée seule, cette API n'est pas incluse dans ce tableau.



Amazon, Microsoft, Nanonets et DeepAI offrent le prix le plus bas de 1000 $ par mois pour un million d'appels API.

Quelle est la meilleure API de modération de contenu?


La nature subjective du contenu NSFW rend difficile la détermination du gagnant.

Pour les médias sociaux d'un sujet général, plus axé sur la distribution de contenu et nécessitant un classificateur équilibré, je préférerais l'API Nanonets avec la note la plus élevée de F1 pour le classificateur.

Si l'application s'adresse aux enfants, je serais en sécurité et choisirais l'API Google pour son efficacité exemplaire dans toutes les catégories de NSFW, même avec la perte de certains contenus normaux.





Qu'est-ce que NSFW vraiment?




Ayant passé beaucoup de temps sur ce problème, j'ai réalisé une chose clé: en fait, la définition de NSFW est très vague. Chaque personne aura sa propre définition. Ce qui est considéré comme acceptable - dépend en grande partie de ce que propose votre service. La nudité partielle est acceptable dans une application de rencontres, mais pas dans un berceau. Et dans un journal médical, au contraire. Une zone vraiment grise est la nudité suggestive, où il est impossible d'obtenir la bonne réponse.

Source: https://habr.com/ru/post/fr431628/


All Articles