Comparando as melhores APIs para filtrar conteúdo obsceno

Teste completo de várias APIs para filtrar imagens de várias categorias, como nudez, pornografia e dissecção.



Uma pessoa imediatamente entende que uma determinada imagem é inadequada, ou seja, NSFW (não é seguro para o trabalho). Mas para a inteligência artificial, nem tudo é tão claro. Muitas empresas agora estão tentando desenvolver ferramentas eficazes para filtrar automaticamente esse conteúdo.

Eu queria entender qual é o estado atual do mercado. Compare a eficácia das APIs de filtragem de imagem existentes nas seguintes categorias:

  • Nudez direta
  • Nudez sugestiva (ou seja, sugestiva de nudez direta - aprox. Por.)
  • Pornografia / relação sexual
  • Imitação / pornô animado
  • Desmembramento (violência) / violência

Tl; DR: Se você apenas deseja descobrir a melhor API, pode ir imediatamente para a comparação no final do artigo.

Condições da Experiência


Conjunto de dados . Para avaliação, coletei meu conjunto de dados NSFW com um número igual de fotos em cada subcategoria NSFW. O conjunto de dados consiste em 120 imagens com 20 imagens NSFW positivas para cada uma das cinco categorias mencionadas e 20 imagens SFW. Decidi não usar o YACVID 180 disponível ao público, pois ele se baseia principalmente no uso de nudez como uma medida do conteúdo do NSFW.

A coleta de imagens NSFW é tediosa; é uma tarefa muito longa e completamente dolorosa, o que explica o pequeno número de imagens.

O conjunto de dados está disponível para download aqui . [Aviso: contém conteúdo explícito]

Aqui está uma tabela com resultados brutos para cada API e cada imagem no conjunto de dados.

Métricas


Cada um dos classificadores é avaliado de acordo com as métricas geralmente aceitas:

Verdadeiramente positivo: TP


Se o classificador chama algo NSFW e é realmente NSFW.

Verdadeiro Negativo: TN


Se o classificador chamar algo SFW, e na verdade é SFW.

Falso positivo: FP


Se o classificador é chamado de algo NSFW, e na verdade é SFW.

Falso Negativo: FN


Se o classificador chamar algo SFW, mas na verdade era NSFW.



Precisão


Se o modelo faz uma previsão, pode ser confiável?

Precisão


Se o modelo diz que a imagem é NSFW, com que frequência a previsão está correta?

Recordar


Se todas as amostras são NSFW, quanto ele identifica?

Pontuação F1


É uma mistura de erro e recordação, geralmente semelhante à precisão.



As seguintes APIs para moderação de conteúdo foram avaliadas:


Desempenho por Categoria


Primeiro, classifiquei cada API em todas as categorias NSFW.

Pornografia / Sexo


As APIs do Google e do Sightengine são realmente boas aqui. Eles foram os únicos que reconheceram corretamente todas as imagens pornográficas. Nanonets e Algoritmia estão um pouco atrasados, com uma pontuação de 90%. Microsoft e Imagga mostraram o pior desempenho nesta categoria.





Imagens fáceis de identificar são claramente pornográficas. Todas as APIs reconheceram corretamente as imagens acima. A maioria deles previu o NSFW com muita confiança.



As imagens difíceis de identificar contêm objetos parcialmente fechados ou embaçados, o que dificulta o trabalho. Na pior das hipóteses, 11 dos 12 sistemas cometeram um erro com a imagem. A eficácia no reconhecimento da pornografia é muito diferente, dependendo da intensidade da pornografia e de quão bem o conteúdo é visível.

Nudez direta


A maioria das APIs teve um desempenho surpreendentemente bom com muitas das imagens nesta categoria, mostrando uma taxa de detecção de 100%. Mesmo as APIs com desempenho mais baixo (Clarifai e Algoritmia) apresentaram 90%. A definição de nudez sempre foi objeto de debate. Como pode ser visto nos resultados, os sistemas geralmente falham em casos duvidosos quando é provável que a imagem ainda seja SFW.





Em imagens simples, a nudez explícita é claramente visível. Qualquer pessoa os chamará de NSFW sem questionar. Nem uma única API cometeu um erro, e a pontuação média foi de 0,99.



Em imagens controversas, as APIs estavam erradas. Talvez o motivo seja que cada um deles tenha configurações de sensibilidade.

Nudez sugestiva


O Google venceu novamente com uma taxa de detecção de 100%. Sightengine e Nanonets tiveram melhor desempenho do que outros com 95% e 90%, respectivamente. Os sistemas automatizados reconhecem a nudez sugestiva quase tão facilmente quanto explícita. Eles cometem um erro nas fotos que geralmente se parecem com SFW, com apenas alguns sinais de nudez.





Novamente, nenhuma API foi confundida com imagens NSFW explícitas.



Na nudez sugestiva, as APIs divergiram. Como na nudez pura, eles tinham diferentes limites de tolerância. Eu mesmo não tenho certeza se reconheço essas imagens do SFW ou não.

Imitação / pornô animado


Todas as APIs tiveram um desempenho excepcional aqui e encontraram 100% de exemplos de imitação de pornografia. A única exceção foi a Imagga, que perdeu uma imagem. Gostaria de saber por que as APIs funcionam tão bem nessa tarefa? Aparentemente, é mais fácil para os algoritmos identificar imagens criadas artificialmente do que imagens naturais.





Todas as APIs apresentaram excelentes resultados e altos índices de confiança.



A única imagem em que a Imagga estava enganada pode ser interpretada como não pornô, se você não a observar por um longo tempo.

Dissecação


Essa é uma das categorias mais difíceis, pois a eficiência média de detecção por meio da API foi inferior a 50%. Clarifai e Sightengine superaram a concorrência detectando corretamente 100% das imagens nesta categoria.





As APIs lidaram melhor com as imagens médicas, mas até 4 dos 12 sistemas cometeram o erro dos mais leves.



Imagens difíceis não têm nada em comum. No entanto, as pessoas chamam muito facilmente essas fotos de sangrentas. Provavelmente, isso significa que o motivo da baixa eficiência é a falta de dados disponíveis para treinamento.

Imagens seguras


Imagens que não podem ser identificadas como NSFW são consideradas seguras. A coleta de dados em si é difícil, porque essas imagens devem estar próximas ao NSFW para apreciar a API. Pode-se argumentar se todas essas imagens são SFW ou não. Aqui, Sightengine e Google mostraram o pior resultado, o que explica seu excelente desempenho em outras categorias. Eles simplesmente chamam todas as imagens duvidosas da NSFW. Por outro lado, a Imagga fez um bom trabalho aqui porque não nomeia nada NSFW. O X-Moderator também teve um desempenho muito bom.




Links para imagens originais: SFW15 , SFW12 , SFW6 , SFW4

Somente pequenas manchas de pele são mostradas em imagens fáceis de identificar e as pessoas podem identificá-las facilmente como SFW. Somente um ou dois sistemas os reconheceram incorretamente.


Links para imagens originais: SFW17 , SFW18 , SFW10 , SFW3

Todas as imagens SFW difíceis de identificar mostram áreas maiores da pele ou do anime (os sistemas tendem a considerar a pornografia do anime). A maioria das APIs contava imagens de grandes áreas como SFW. A questão é: isso é SFW?

Comparação geral


Analisando a eficácia da API em todas as categorias de NSFW, bem como sua eficácia no reconhecimento correto de SFW, podemos concluir que o melhor resultado de F1 e a melhor precisão média do sistema Nanonets: funciona de maneira estável em todas as categorias. O sistema do Google mostra um resultado excepcionalmente bom nas categorias NSFW, mas muitas vezes marca imagens seguras como NSFW; portanto, recebeu uma multa na métrica F1.







Por desenvolvedores


Comparei os 5 principais sistemas de precisão e pontuação F1 para avaliar diferenças em seu desempenho. Quanto maior a área do diagrama de pétalas, melhor.

1. Nanonets


O sistema Nanonets não ficou em primeiro lugar em nenhuma categoria. No entanto, esta é a solução mais equilibrada. O ponto mais fraco em que você ainda pode trabalhar é a precisão do reconhecimento do SFW. Ele é sensível demais a qualquer área exposta do corpo.



2. Google


O Google é o melhor na maioria das categorias NSFW, mas o pior na detecção de SFW. Quero observar que tirei a amostra para testes com o Google, ou seja, ela "deveria saber" essas imagens. Esse pode ser o motivo do desempenho realmente bom na maioria das categorias.



3. Clarifai


O Clarifai realmente brilha na determinação do desmembramento. À frente da maioria das outras APIs, o sistema também é bem equilibrado e funciona bem na maioria das categorias. Mas ela não tem precisão na identificação de nudez e pornografia sugestivas.



4. X-Moderador


O X-Moderator é outra API bem equilibrada. Além da dissecção, ele identifica claramente a maioria dos outros tipos de NSFW. 100% de precisão na determinação do SFW, que distingue esse sistema dos concorrentes.



5. Mecanismo de visão


Como o Google, o sistema Sightengine mostrou um resultado quase perfeito na identificação do NSFW. No entanto, ela não reconheceu uma única imagem da dissecção.



Preços


Outro critério na escolha de uma API é o preço. Os preços de todas as empresas são comparados abaixo. A maioria das APIs oferece uma avaliação gratuita com uso limitado. O Yahoo é a única API totalmente gratuita, mas precisa ser hospedada por conta própria; essa API não está incluída nesta tabela.



Amazon, Microsoft, Nanonets e DeepAI oferecem o menor preço de US $ 1.000 por mês para um milhão de chamadas de API.

Qual é a melhor API de moderação de conteúdo?


A natureza subjetiva do conteúdo da NSFW dificulta a determinação do vencedor.

Para mídias sociais de uso geral, mais focadas na distribuição de conteúdo e que precisam de um classificador equilibrado, eu preferiria a API Nanonets com a classificação mais alta de F1 para o classificador.

Se o aplicativo for direcionado a crianças, eu estaria seguro e escolheria a API do Google por sua eficácia exemplar em todas as categorias de NSFW, mesmo com a perda de algum conteúdo normal.





O que é realmente NSFW?




Tendo passado muito tempo com esse problema, percebi uma coisa importante: na verdade, a definição de NSFW é muito vaga. Cada pessoa terá sua própria definição. O que é considerado aceitável - depende em grande parte do que o seu serviço fornece. Nudez parcial é aceitável em um aplicativo de namoro, mas não em um berço. E em uma revista médica, pelo contrário. Uma área realmente cinzenta é uma nudez sugestiva, onde é impossível obter a resposta certa.

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


All Articles