Qual è il modo migliore per rilevare in modo programmatico le immagini porno? [chiuso]


120

Akismet fa un lavoro straordinario nel rilevare i commenti spam. Ma i commenti non sono l'unica forma di spam in questi giorni. E se volessi qualcosa come akismet per rilevare automaticamente le immagini porno su un sito di social network che consente agli utenti di caricare le loro foto, avatar, ecc.?

Sono già disponibili alcuni motori di ricerca basati su immagini e materiale per il riconoscimento facciale, quindi presumo che non sarebbe scienza missilistica e potrebbe essere fatto. Tuttavia, non ho idea di come funzioni e come dovrei farlo se voglio svilupparlo da zero.

Come dovrei iniziare?

C'è qualche progetto open source per questo in corso?


82
In realtà direi che suona molto più difficile della scienza missilistica! Abbiamo già molti razzi, ma AFAIK nessun "rilevatore di pornografia" :)
GaZ

4
LOL. C'è il riconoscimento facciale, ma non esiste ancora una tecnologia per il riconoscimento dei genitali e del seno. Fortuna.
Jon Limjap

11
La pornografia è una questione di geografia - inoltre, sono sicuro che ci sono molte immagini che non mostrano affatto i genitali o la nudità, il che sarebbe considerato piuttosto hardcore (di nuovo - in alcuni luoghi). Sembra un lavoro per un'IA avanzata, non un semplice algoritmo.
Noam Gal,

2
Mi sono appena imbattuto in questa utility che mi ha fatto ricordare questo thread. Mi chiedo se funziona? proofpronto.com/porn-detection-stick-by-paraben.html
Martin Smith

1
@ jm666, se il problema è così grave per te e pensi che lo stato dell'arte in questo settore sia migliorato negli ultimi due anni, che ne dici di mettere una taglia sul duplicato di riferimento? In questo modo dovresti raccogliere un po 'di attenzione e forse alcune risposte.
Michael Petrotta

Risposte:


69

Questo è stato scritto nel 2000, non sono sicuro che lo stato dell'arte nel rilevamento del porno sia avanzato affatto, ma ne dubito.

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

PORNsweeper sembra avere una certa capacità di distinguere le immagini di persone dalle immagini di cose che non sono persone, purché le immagini siano a colori. Ha meno successo nel distinguere le immagini sporche di persone da quelle pulite.

Con l'impostazione predefinita, sensibilità media, se le risorse umane inviano un'immagine del nuovo tipo in Account, hai circa il 50% di possibilità di ottenerla. Se tua sorella ti manda una foto di suo figlio di sei mesi, è altrettanto probabile che venga arrestata.

È giusto sottolineare errori divertenti, come chiamare il porno della Gioconda, se sono rappresentativi del comportamento del software. Se i produttori ammettono che il loro riconoscitore di immagini algoritmico lascerà cadere la palla il 15% delle volte, allora prenderlo in giro quando lo fa esattamente è sciocco.

Ma PORNsweeper sembra essere all'altezza delle sue specifiche dichiarate in un solo reparto: rilevamento del porno reale. È a metà decente nel rilevare il porno, ma è pessimo nel rilevare immagini pulite. E non sarei sorpreso se non si facessero grandi passi avanti in questo settore nel prossimo futuro.


Di certo il rilevamento del porno è avanzato da allora. Ci sono stati molti pensieri di rottura nel riconoscimento degli oggetti / nella classificazione delle immagini / nella visione artificiale. Il 2000 mi sembra l'età della pietra.
Maarten

89

Questo è in realtà ragionevolmente facile. Puoi rilevare programmaticamente i toni della pelle e le immagini porno tendono ad avere molta pelle. Ciò creerà falsi positivi, ma se questo è un problema puoi passare le immagini così rilevate attraverso la moderazione effettiva. Questo non solo riduce notevolmente il lavoro dei moderatori, ma ti offre anche un sacco di porno gratis. È vantaggioso per tutti.

#!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)

Questo codice misura i toni della pelle al centro dell'immagine. Ho testato 20 immagini "porno" relativamente docili e 20 immagini completamente innocenti. Contrassegna il 100% del "porno" e 4 delle 20 immagini pulite. Si tratta di un tasso di falsi positivi piuttosto alto, ma lo script mira ad essere abbastanza cauto e potrebbe essere ulteriormente modificato. Funziona su tonalità della pelle chiare, scure e asiatiche.

I suoi principali punti deboli con i falsi positivi sono gli oggetti marroni come la sabbia e il legno e, naturalmente, non conosce la differenza tra carne "cattiva" e "bella" (come i colpi di faccia).

La debolezza con falsi negativi sarebbe immagini senza molta carne esposta (come il bondage in pelle), pelle dipinta o tatuata, immagini in bianco e nero, ecc.

codice sorgente e immagini di esempio


Vuoi pubblicare la tua prova di concetto in Python di 20 righe? (-1)
bobobobo

Non male, +1. È interessante notare che le immagini di superfici regolari (come la moquette o la superficie del frigorifero) mostrano un'elevata quantità di pelle.
bobobobo

6
Spoiler: nessuna nudità reale nei campioni di immagine.
Luc

Questo considererà anche il legno come pelle. Perché ha esattamente lo stesso colore, ma una consistenza diversa. Per non parlare dei ritratti.
Maarten

45

Preferirei consentire agli utenti di segnalare cattive immagini. Lo sviluppo del riconoscimento delle immagini può richiedere troppi sforzi e tempo e non sarà accurato quanto gli occhi umani. È molto più economico esternalizzare quel lavoro di moderazione.

Dai un'occhiata a: Amazon Mechanical Turk

" Amazon Mechanical Turk (MTurk) è una delle suite di Amazon Web Services, un marketplace di crowdsourcing che consente ai programmi per computer di coordinare l'uso dell'intelligenza umana per eseguire attività che i computer non sono in grado di svolgere".


4
Probabilmente c'è un mercato per un sito Web in stile Amazon Mechanical Turk, ma uno specializzato in questo tipo di argomenti .... :)
Rich

6
Amazon Mechanical Turk probabilmente costa denaro. Dato l'argomento, penseresti che esista un modello di business intelligente in cui puoi farlo gratuitamente.
Ankur

1
Penso che questo sia un approccio piuttosto non etico.
Noon Silk,

2
@Ankur LOL! Grande idea. Andando su nic.com per verificare se PornOrNot.com è ancora disponibile.
Pekka

9
@Noon Silk, perché ritieni che questo sia un approccio non etico?
Mazatec


15

BOOM! Ecco il white paper contenente l'algoritmo.

Qualcuno sa dove trovare il codice sorgente per un'implementazione java (o qualsiasi linguaggio)?

Sarebbe fantastico.

Un algoritmo chiamato WISE ha un tasso di accuratezza del 98% ma un tasso di falsi positivi del 14%. Quindi quello che fai è lasciare che gli utenti segnalino il 2% di falsi negativi, idealmente con la rimozione automatica se un certo numero di utenti lo contrassegna, e fare in modo che i moderatori visualizzino il 14% di falsi positivi.


Hai trovato l'algoritmo. È dannatamente buono. Il codice sorgente viene spesso lasciato come esercizio. Dopo tutto, non stiamo specificando alcun particolare linguaggio di programmazione, vero?
Ian


8

Esiste un software che rileva la probabilità del porno, ma questa non è una scienza esatta, poiché i computer non sono in grado di riconoscere ciò che è effettivamente contenuto nelle immagini (le immagini sono solo un grande insieme di valori su una griglia senza significato). Puoi semplicemente insegnare al computer cos'è il porno e cosa no fornendo esempi. Questo ha lo svantaggio che riconoscerà solo queste o immagini simili.

Data la natura ripetitiva del porno, hai buone possibilità se addestri il sistema con pochi falsi positivi. Ad esempio, se alleni il sistema con persone nude, anche le immagini di una spiaggia con persone "quasi" nude potrebbero essere contrassegnate come porno.

Un software simile è il software Facebook che è uscito di recente. È specializzato solo sui volti. Il principio fondamentale è lo stesso.

Tecnicamente implementeresti un qualche tipo di rilevatore di funzionalità che utilizza un filtro bayes. Il rilevatore di funzionalità può cercare caratteristiche come la percentuale di pixel color carne se si tratta di un semplice rilevatore o calcola semplicemente la somiglianza dell'immagine corrente con una serie di immagini porno salvate.

Questo ovviamente non è limitato al porno, in realtà è più un caso d'angolo. Penso che più comuni siano i sistemi che cercano di trovare altre cose nelle immagini ;-)


1
Perché le persone votano per difetto questa risposta?
Patrick Cornelissen

perché non contiene nulla come un algoritmo, una ricetta o un riferimento.
Ian

7
Quindi non è una risposta valida per spiegare all'utente che pone la domanda che non è davvero possibile ciò che cerca di ottenere? Amico, potresti essere un po 'più rilassato ...
Patrick Cornelissen

Sta anche facendo una dichiarazione falsa "poiché i computer non possono riconoscere ciò che è effettivamente sulle immagini"
Daveth3Cat

Perché non possono. Puoi solo imparare a rilevare determinate immagini e più grande è il tuo db di casi positivi e negativi, meglio è, ma in generale non otterrai mai una soluzione accurata come un essere umano, quindi ti ritroverai con un numero enorme di falsi positivi e negativi.
Patrick Cornelissen

5

La risposta è davvero semplice: è abbastanza sicuro dire che non sarà possibile nei prossimi due decenni. Prima di allora probabilmente avremo buoni strumenti di traduzione. L'ultima volta che ho controllato, i ragazzi dell'IA stavano lottando per identificare la stessa macchina su due fotografie scattate da un'angolazione leggermente modificata. Dai un'occhiata a quanto tempo ci è voluto per ottenere insieme un riconoscimento vocale o un riconoscimento vocale sufficientemente buono. Si tratta di problemi di riconoscimento che possono trarre grandi vantaggi dai dizionari e sono ancora lontani dall'avere soluzioni completamente affidabili nonostante i milioni di mesi uomo lanciati contro di loro.

Detto questo potresti semplicemente aggiungere un "offensivo?" link accanto alla contesa generata dall'utente e fai un controllo incrociato mod dei reclami in arrivo.

modificare:

Ho dimenticato una cosa: SE hai intenzione di implementare un qualche tipo di filtro, ti servirà uno affidabile. Se la tua soluzione fosse corretta al 50%, 2000 utenti su 4000 con immagini decenti verranno bloccati. Aspettati uno sdegno.


5

Uno studente laureato della National Cheng Kung University di Taiwan ha svolto una ricerca su questo argomento nel 2004. È stato in grado di raggiungere una percentuale di successo dell'89,79% nel rilevare immagini di nudo scaricate da Internet. Ecco il link alla sua tesi: The Study on Naked People Image Detection Based on Skin Color
È in cinese quindi potresti aver bisogno di un traduttore nel caso in cui non riesci a leggerlo.


4

risposta breve: usa un moderatore;)

Risposta lunga: non penso che ci sia un progetto per questo perché cos'è il porno? Solo gambe, nudità completa, nani ecc. È soggettivo.


3
la domanda è "Qual è il modo migliore per rilevare programmaticamente immagini porno?", programmaticamente ...
Agusti-N

5
Conosco la domanda, ma come ho detto non esiste un blocco porno accurato al 100% perché il porno è soggettivo. Soggettivo non può essere correlato al codice. Uno pensa che sia solo nudo, l'altro pensa che sia porno. La soluzione migliore è avere un pulsante "Segnala immagine". Stessa idea di Koistya Navin .NET
RvdK

1
"Nani ecc."? Santo non sequitur, Batman.
Doug McClean

C'è una cosa come il porno nano.
Chris Sherlock

4

Aggiungi un link offensivo e archivia l'MD5 (o un altro hash) dell'immagine offensiva in modo che possa automaticamente taggare in futuro.

Non sarebbe bello se qualcuno avesse un grande database pubblico di immagini md5 insieme a tag descrittivi in ​​esecuzione come servizio web? Gran parte del porno non è un lavoro originale (in quanto la persona che ce l'ha ora, probabilmente non ce l'ha fatta) e le immagini popolari tendono a fluttuare in luoghi diversi, quindi questo potrebbe davvero fare la differenza.


8
Ne dubito. C'è così tanto porno là fuori (e tonnellate di più generate ogni giorno) che le tue probabilità di vedere la stessa immagine due volte sono (IMHO) piuttosto vicine allo zero.
Vilx

Pensa a quante volte la ragazza della vasca si è presentata per un po '. Sarebbe stato segnalato una volta e poi tutti gli altri avrebbero potuto evitarlo.
rfusca

3
a meno che non sia stato ritagliato, ridimensionato o semplicemente aperto e salvato di nuovo prima di essere caricato ..
Blorgbeard è uscito il

Sì, ci ho pensato :( eh, era un pensiero.
rfusca

1
Meglio di md5, licenza TinEye di idée.
Tobu

2

Se hai davvero tempo e denaro:

Un modo per farlo è 1) scrivere un algoritmo di rilevamento delle immagini per scoprire se un oggetto è umano o meno. Questo può essere fatto mascherando un'immagine per recuperare i suoi "contorni" e vedere se i contorni si adattano a un contorno umano.

2) I dati estraggono molte immagini pornografiche e utilizzano tecniche di data mining come gli algoritmi C4 o l'ottimizzazione dello sciame di particelle per imparare a rilevare il modello che corrisponde alle immagini porno.

Ciò richiederà l'identificazione di come devono apparire i contorni di un corpo umano nudo di un uomo / una donna in formato digitalizzato (ciò può essere ottenuto nello stesso modo in cui funzionano gli algoritmi di riconoscimento delle immagini OCR).

Spero tu ti diverta! :-)


2

Mi sembra che l'ostacolo principale sia definire una "immagine porno". Se puoi definirlo facilmente, potresti probabilmente scrivere qualcosa che funzioni. Ma anche gli umani non possono essere d'accordo su cosa sia il porno. Come lo saprà l'applicazione? La moderazione degli utenti è probabilmente la soluzione migliore.


1

Ho visto un'applicazione di filtro web che filtra le immagini porno, mi dispiace non ricordo il nome. Era piuttosto incline a falsi positivi, tuttavia la maggior parte delle volte funzionava.

Penso che il trucco principale sia rilevare "troppa pelle sulla foto :)


1
Non ricordo nemmeno lo studio, ma ha rilevato i bordi e ha confrontato quelli che sembravano essere modelli di vulve ruotate o oscurate. Piuttosto interessante da un aspetto di elaborazione delle immagini.
jim

-1, fornisce commenti ma non fornisce una soluzione sostanziale.
Brad Koch

1

Il rilevamento di immagini pornografiche è ancora un compito AI definito che è ancora molto teorico.

Raccogli il potere collettivo e l'intelligenza umana aggiungendo un pulsante / collegamento "Segnala spam / abuso". Oppure assumi diversi moderatori per svolgere questo lavoro.

PS Sono davvero sorpreso di quante persone fanno domande assumendo che software e algoritmi siano onnipotenti senza nemmeno pensare se quello che vogliono potrebbe essere fatto. Sono rappresentanti di quella nuova generazione di programmatori che non hanno alcuna comprensione dell'hardware, della programmazione di basso livello e di tutta quella "magia dietro"?

PS # 2. Ricordo anche che periodicamente capita che alcune situazioni in cui le persone stesse non riescano a decidere se una foto è porno o arte viene portata in tribunale. Anche dopo che il tribunale ha deciso, è probabile che metà delle persone considererà la decisione sbagliata. L'ultima stupida situazione del genere è stata di recente quando una pagina di Wikipedia è stata bandita nel Regno Unito a causa di un'immagine di copertina di un CD che presenta alcune nudità.


1

Due opzioni a cui riesco a pensare (sebbene nessuna delle due stia rilevando programmaticamente il porno):

  1. Blocca tutte le immagini caricate finché uno dei tuoi amministratori non le ha guardate. Non c'è motivo per cui questo dovrebbe richiedere molto tempo: potresti scrivere un software che mostra 10 immagini al secondo, quasi come un film - anche a questa velocità, è facile per un essere umano individuare un'immagine potenzialmente pornografica. Quindi riavvolgi questo software e dai un'occhiata più da vicino.
  2. Aggiungi la consueta opzione "contrassegna questa immagine come inappropriata".

1

L' API del servizio web BrightCloud è perfetta per questo. È un'API REST per eseguire ricerche di siti Web proprio come questa. Contiene un DB di filtraggio web molto ampio e molto accurato e una delle categorie, Adulto, ha oltre 10 milioni di siti porno identificati!


1

Ho sentito parlare di strumenti che utilizzavano algoritmi molto semplici ma abbastanza efficaci. L'algoritmo ha calcolato la quantità relativa di pixel con un valore di colore vicino ad alcuni colori "pelle" predefiniti. Se tale importo è superiore a un valore predefinito, l'immagine è considerata di contenuto erotico / pornografico. Ovviamente quell'algoritmo darà risultati falsi positivi per foto di volti ravvicinati e molte altre cose.
Dato che stai scrivendo di social network, ci saranno molte foto "normali" con un'elevata quantità di colore della pelle, quindi non dovresti usare questo algoritmo per negare tutte le immagini con risultato positivo. Ma puoi usarlo per fornire aiuto ai moderatori, ad esempio contrassegnare queste immagini con priorità più alta,


Ho effettivamente visto un sistema simile a quello in uso. Non è abbastanza affidabile per essere lasciato da solo, ma fa un ottimo lavoro nell'allertare un moderatore quando appropriato. Non è una prova completa, soprattutto se la persona è coperta solo da una piccola area esposta. Il rapporto non funziona in modo altrettanto affidabile al contrario.
Tim Post

1

Questo sembra promettente. Fondamentalmente rilevano la pelle (con la calibrazione mediante riconoscimento dei volti) e determinano i "percorsi della pelle" (cioè misurano la proporzione di pixel della pelle rispetto ai pixel della pelle del viso / pixel della pelle). Questo ha prestazioni decenti. http://www.prip.tuwien.ac.at/people/julian/skin-detection


0

Guarda il nome del file e gli eventuali attributi. Non ci sono quasi abbastanza informazioni per rilevare anche il 20% delle immagini cattive, ma una semplice lista nera di parole chiave rileverebbe almeno le immagini con etichette descrittive o metadati. 20 minuti di programmazione per una percentuale di successo del 20% non sono un cattivo affare, soprattutto come preselezione che può almeno catturarne alcuni semplici prima di passare il resto a un moderatore per la valutazione.

L'altro trucco utile è ovviamente l'opposto, mantenere una whitelist di fonti di immagini da consentire senza moderazione o controllo. Se la maggior parte delle tue immagini proviene da caricatori o fonti sicuri noti, puoi semplicemente accettarle in modo vincolante.




0

Non è scienza missilistica. Non più. È molto simile al riconoscimento facciale. Penso che il modo più semplice per affrontarlo sia utilizzare l'apprendimento automatico. E poiché abbiamo a che fare con immagini, posso indicare le reti neuronali, perché queste sembrano essere preferite per le immagini. Avrai bisogno dei dati di addestramento. E puoi trovare tonnellate di dati di allenamento su Internet, ma devi ritagliare le immagini nella parte specifica che desideri venga rilevata dall'algoritmo. Ovviamente dovrai suddividere il problema in diverse parti del corpo che desideri rilevare e creare dati di allenamento per ciascuna, ed è qui che le cose diventano divertenti.

Come qualcuno ha detto sopra, non può essere fatto al 100% per cento. Ci saranno casi in cui tali algoritmi falliscono. La precisione effettiva sarà determinata dai tuoi dati di allenamento, dalla struttura delle tue reti neuronali e da come sceglierai di raggruppare i dati di allenamento (peni, vagine, seni, ecc. E combinazioni di tali). In ogni caso, sono molto fiducioso che ciò possa essere ottenuto con elevata precisione per immagini porno esplicite.



-1

Non c'è modo che tu possa farlo al 100% (direi che forse 1-5% sarebbe plausibile) con la conoscenza di oggi. Otterresti risultati molto migliori (rispetto a quelli 1-5%) semplicemente controllando i nomi delle immagini per le parole relative al sesso :).

@SO Troll: Così vero.


-1, fornisce commenti ma non fornisce una soluzione sostanziale.
Brad Koch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.