Pruebas completas de varias API para filtrar imágenes de varias categorías, como desnudos, pornografía y disección.

Una persona comprende de inmediato que una determinada imagen es inapropiada, es decir, NSFW (No es seguro para el trabajo). Pero para la inteligencia artificial, no todo está tan claro. Muchas compañías ahora están tratando de desarrollar herramientas efectivas para filtrar automáticamente dicho contenido.
Quería entender cuál es el estado actual del mercado. Compare la efectividad de las API de filtrado de imágenes existentes en las siguientes categorías:
- Desnudez absoluta
- Desnudez sugestiva (es decir, sugestiva de desnudez absoluta - aprox. Por.)
- Pornografía / relaciones sexuales
- Imitación / porno animado
- Desmembramiento (gore) / violencia
Tl; DR: Si solo quieres encontrar la mejor API, puedes ir inmediatamente a la comparación al final del artículo.
Condiciones del experimento
Conjunto de datos Para la evaluación, recopilé mi conjunto de datos NSFW con el mismo número de imágenes en cada subcategoría NSFW. El conjunto de datos consta de 120 imágenes con 20 imágenes NSFW positivas para cada una de las cinco categorías mencionadas, y 20 imágenes SFW. Decidí no usar el YACVID 180 disponible al público, ya que se basa principalmente en el uso de la desnudez como una medida del contenido NSFW.
Recopilar imágenes NSFW es tedioso; es una tarea muy larga y completamente dolorosa, lo que explica la pequeña cantidad de imágenes.
El conjunto de datos está disponible para descargar aquí . [Advertencia: contiene contenido explícito]
Aquí hay una tabla con resultados en bruto para cada API y cada imagen en el conjunto de datos.Métricas
Cada uno de los clasificadores se evalúa según las métricas generalmente aceptadas:
Realmente positivo: TP
Si el clasificador llama a algo NSFW y en realidad es NSFW.
Verdadero negativo: TN
Si el clasificador llama a algo SFW, y en realidad es SFW.
Falso positivo: FP
Si el clasificador se llama algo NSFW, y esto es realmente SFW.
Falso negativo: FN
Si el clasificador llama a algo SFW, pero en realidad era NSFW.

Precisión
Si el modelo hace un pronóstico, ¿se puede confiar?
Precisión
Si el modelo dice que la imagen es NSFW, ¿con qué frecuencia es el pronóstico correcto?
Recordar
Si todas las muestras son NSFW, ¿cuánto identifica?
Puntaje F1
Es una mezcla de error y recuperación, a menudo similar a la precisión.
Se evaluaron las siguientes API para moderación de contenido:
Rendimiento por categoría
Primero, califiqué cada API en todas las categorías NSFW.
Pornografía / Sexo
Las API de Google y Sightengine son realmente buenas aquí. Ellos fueron los únicos que reconocieron correctamente todas las imágenes pornográficas. Nanonets y Algorithmia están ligeramente por detrás con una puntuación del 90%. Microsoft e Imagga han mostrado el peor desempeño en esta categoría.

Las imágenes que son fáciles de identificar son claramente pornográficas. Todas las API reconocieron correctamente las imágenes de arriba. La mayoría de ellos predijo NSFW con gran confianza.

Las imágenes difíciles de identificar contienen objetos parcialmente cerrados o borrosos, lo que dificulta el trabajo. En el peor de los casos, 11 de los 12 sistemas cometieron un error con la imagen. La efectividad en el reconocimiento de la pornografía es muy diferente dependiendo de la intensidad del porno y de qué tan bien sea visible el contenido.
Desnudez absoluta
La mayoría de las API se desempeñaron sorprendentemente bien con muchas de las imágenes en esta categoría, mostrando una tasa de detección del 100%. Incluso las API de menor rendimiento (Clarifai y Algoritmia) mostraron 90%. La definición de desnudez siempre ha sido objeto de debate. Como se puede ver en los resultados, los sistemas generalmente fallan en casos dudosos cuando es probable que la imagen siga siendo SFW.

En imágenes simples, la desnudez explícita es claramente visible. Cualquiera los llamará NSFW sin duda. Ni una sola API cometió un error, y el puntaje promedio fue de 0.99.

En imágenes controvertidas, las API estaban equivocadas. Quizás la razón es que cada uno de ellos tiene configuraciones de sensibilidad.
Desnudez sugestiva
Google ganó nuevamente con una tasa de detección del 100%. Sightengine y Nanonets se desempeñaron mejor que otros con 95% y 90%, respectivamente. Los sistemas automatizados reconocen la desnudez sugerente casi tan fácilmente como lo explícito. Cometen un error en las imágenes que generalmente se ven como SFW, con solo unos pocos signos de desnudez.

Nuevamente, ninguna API se confundió con imágenes NSFW explícitas.

En sugestiva desnudez, las API divergieron. Como en pura desnudez, tenían diferentes umbrales de tolerancia. Yo mismo no estoy seguro de si reconocer estas fotos SFW o no.
Imitación / porno animado
Todas las API funcionaron excepcionalmente bien aquí y encontraron ejemplos 100% de imitación de pornografía. La única excepción fue Imagga, que perdió una imagen. Me pregunto por qué las API funcionan tan bien en esta tarea. Aparentemente, es más fácil para los algoritmos identificar imágenes creadas artificialmente que las naturales.

Todas las API mostraron excelentes resultados y altas calificaciones de confianza.
La única imagen en la que se equivocó Imagga puede interpretarse como no pornográfica, si no la miras durante mucho tiempo.
Disección
Esta es una de las categorías más difíciles, ya que la eficiencia de detección promedio a través de la API fue inferior al 50%. Clarifai y Sightengine superaron a la competencia al detectar correctamente el 100% de las imágenes en esta categoría.

Las API manejan mejor las imágenes médicas, pero incluso 4 de los 12 sistemas cometieron el error en el más ligero de ellos.

Las imágenes difíciles no tienen nada en común. Sin embargo, la gente fácilmente llamará sangrienta a estas imágenes. Esto probablemente significa que la razón de la baja eficiencia es la falta de datos disponibles para la capacitación.
Imágenes seguras
Las imágenes que no pueden identificarse como NSFW se consideran seguras. La recopilación de datos en sí misma es difícil, porque estas imágenes deben estar cerca de NSFW para poder apreciar la API. Uno puede discutir si todas estas imágenes son SFW o no. Aquí Sightengine y Google mostraron el peor resultado, lo que explica su excelente desempeño en otras categorías. Simplemente llaman a todas las dudosas imágenes NSFW. Por otro lado, Imagga hizo un buen trabajo aquí porque no nombra nada NSFW. X-Moderator también funcionó muy bien.
Enlaces a imágenes originales: SFW15 , SFW12 , SFW6 , SFW4Solo se muestran pequeños parches de piel en las imágenes que son fáciles de identificar, y las personas pueden identificarlas fácilmente como SFW. Solo uno o dos sistemas los reconocieron incorrectamente.
Enlaces a imágenes originales: SFW17 , SFW18 , SFW10 , SFW3Todas las imágenes SFW que son difíciles de identificar muestran áreas más grandes de la piel o el anime (los sistemas tienden a considerar la pornografía de anime). La mayoría de las API contaban las imágenes de área grande como SFW. La pregunta es, ¿es esto SFW?
Comparación general
Si observamos la efectividad de la API en todas las categorías de NSFW, así como su efectividad para reconocer correctamente el SFW, podemos concluir que el mejor resultado de F1 y la mejor precisión promedio del sistema Nanonets: funciona de manera estable en todas las categorías. El sistema de Google muestra un resultado excepcionalmente bueno en las categorías NSFW, pero con demasiada frecuencia marca imágenes seguras como NSFW, por lo tanto, recibió una multa en la métrica F1.
Por desarrolladores
Comparé los 5 mejores sistemas de precisión y puntaje F1 para evaluar las diferencias en su rendimiento. Cuanto mayor sea el área del diagrama de pétalos, mejor.
1. Nanonets
El sistema Nanonets no ocupó el primer lugar en ninguna categoría. Sin embargo, esta es la solución más equilibrada. El punto más débil en el que aún puede trabajar es la precisión de reconocimiento de SFW. Es demasiado sensible a cualquier área expuesta del cuerpo.
2. Google
Google es el mejor en la mayoría de las categorías NSFW, pero el peor en la detección de SFW. Quiero señalar que tomé la muestra para probar con Google, es decir, "debería saber" estas imágenes. Esta puede ser la razón del buen desempeño en la mayoría de las categorías.
3. Clarifai
Clarifai realmente brilla en la determinación del desmembramiento, por delante de la mayoría de las otras API, el sistema también está bien equilibrado y funciona bien en la mayoría de las categorías. Pero carece de precisión para identificar desnudos sugestivos y pornografía.
4. X-Moderator
X-Moderator es otra API bien equilibrada. Además de la disección, identifica claramente la mayoría de los otros tipos de NSFW. 100% de precisión en la determinación de SFW, lo que distingue a este sistema de los competidores.
5. Sightengine
Al igual que Google, el sistema Sightengine mostró un resultado casi perfecto en la identificación de NSFW. Sin embargo, ella no reconoció una sola imagen de la disección.
Precios
Otro criterio para elegir una API es el precio. Los precios de todas las empresas se comparan a continuación. La mayoría de las API ofrecen una prueba gratuita con un uso limitado. Yahoo es la única API completamente gratuita, pero necesita ser alojada por sí sola, esta API no está incluida en esta tabla.
Amazon, Microsoft, Nanonets y DeepAI ofrecen el precio más bajo de $ 1,000 por mes por un millón de llamadas API.¿Cuál es la mejor API de moderación de contenido?
La naturaleza subjetiva del contenido NSFW hace que sea difícil determinar el ganador.
Para las redes sociales de propósito general que se centran más en la distribución de contenido y necesitan un clasificador equilibrado, preferiría la API de Nanonets con la calificación más alta de F1 para el clasificador.Si la aplicación está dirigida a niños, estaría seguro y elegiría la API de Google por su efectividad ejemplar en todas las categorías de NSFW, incluso con la pérdida de algún contenido normal.
¿Qué es realmente NSFW?
Después de pasar mucho tiempo en este problema, me di cuenta de una cosa clave: de hecho, la definición de NSFW es muy vaga. Cada persona tendrá su propia definición. Lo que se considera aceptable, depende en gran medida de lo que brinde su servicio. La desnudez parcial es aceptable en una aplicación de citas, pero no en una cuna. Y en una revista médica, por el contrario. Un área realmente gris es la desnudez sugestiva, donde es imposible obtener la respuesta correcta.