Apa cara terbaik untuk mendeteksi gambar porno secara terprogram? [Tutup]


120

Akismet melakukan pekerjaan luar biasa dalam mendeteksi komentar spam. Tetapi komentar bukan satu-satunya bentuk spam hari ini. Bagaimana jika saya menginginkan sesuatu seperti akismet untuk secara otomatis mendeteksi gambar porno di situs jejaring sosial yang memungkinkan pengguna mengunggah foto, avatar, dll?

Sudah ada beberapa mesin pencari berbasis gambar serta hal-hal pengenalan wajah yang tersedia jadi saya berasumsi itu bukan ilmu roket dan itu bisa dilakukan. Namun, saya tidak tahu bagaimana cara kerjanya dan bagaimana saya harus melakukannya jika saya ingin mengembangkannya dari awal.

Bagaimana saya harus memulai?

Apakah ada proyek open source untuk ini?


82
Sebenarnya menurut saya itu terdengar jauh lebih sulit daripada ilmu roket! Kami sudah punya banyak roket, tapi AFAIK tidak ada "detektor porno" :)
GaZ

4
LOL. Ada pengenalan wajah, tapi belum ada teknologi untuk pengenalan alat kelamin dan payudara. Keberuntungan yang sulit.
Jon Limjap

11
Pornografi adalah masalah geografi - selain itu, saya yakin ada banyak gambar yang tidak menunjukkan alat kelamin atau ketelanjangan sama sekali, yang akan dianggap cukup hardcore (sekali lagi - di beberapa tempat). Kedengarannya seperti pekerjaan untuk AI tingkat lanjut, bukan algoritme sederhana.
Noam Gal

2
Saya baru saja menemukan utilitas ini yang membuat saya mengingat utas ini. Ingin tahu apakah itu berhasil? proofpronto.com/porn-detection-stick-by-paraben.html
Martin Smith

1
@ jm666, jika masalahnya seserius itu bagi Anda, dan menurut Anda keadaan seni di bidang ini telah meningkat selama dua tahun terakhir, bagaimana jika memberi hadiah pada korban penipuan? Anda harus mengumpulkan perhatian, dan mungkin beberapa jawaban, dengan cara itu.
Michael Petrotta

Jawaban:


69

Ini ditulis pada tahun 2000, tidak yakin apakah keadaan seni dalam deteksi porno telah maju sama sekali, tapi saya meragukannya.

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

PORNsweeper tampaknya memiliki kemampuan untuk membedakan gambar orang dari gambar hal-hal yang bukan orang, selama gambar tersebut berwarna. Ini kurang berhasil dalam membedakan gambar kotor orang dari yang bersih.

Dengan default, sensitivitas sedang, jika Sumber Daya Manusia mengirimkan gambar orang baru di Akun, Anda memiliki peluang sekitar 50% untuk mendapatkannya. Jika saudara perempuan Anda mengirimi Anda foto anaknya yang berusia enam bulan, kemungkinan besar juga akan ditahan.

Cukup adil untuk menunjukkan kesalahan yang lucu, seperti menyebut Mona Lisa porno, jika itu mewakili perilaku perangkat lunak. Jika pembuatnya mengakui bahwa pengenal gambar algoritmik mereka akan menjatuhkan bola 15% dari waktu, maka mengolok-oloknya ketika itu benar-benar konyol.

Tetapi PORNsweeper tampaknya hanya memenuhi spesifikasi yang dinyatakan di satu departemen - deteksi pornografi yang sebenarnya. Ini setengah cara untuk mendeteksi pornografi, tapi buruk dalam mendeteksi gambar yang bersih. Dan saya tidak akan terkejut jika tidak ada lompatan besar yang dilakukan di area ini dalam waktu dekat.


Deteksi penyebab pornografi telah berkembang sejak saat itu. Ada banyak pemikiran istirahat dalam pengenalan objek / klasifikasi gambar / visi komputer. 2000 terasa seperti zaman batu bagi saya.
Maarten

89

Ini sebenarnya cukup mudah. Anda dapat secara terprogram mendeteksi warna kulit - dan gambar porno cenderung memiliki banyak warna. Ini akan membuat positif palsu tetapi jika ini adalah masalah Anda dapat mengirimkan gambar sehingga terdeteksi melalui moderasi yang sebenarnya. Ini tidak hanya sangat mengurangi pekerjaan moderator tetapi juga memberi Anda banyak pornografi gratis. Ini sama-sama untung.

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

Kode ini mengukur warna kulit di tengah gambar. Saya telah menguji 20 gambar "porno" yang relatif jinak dan 20 gambar yang sama sekali tidak bersalah. Ini menandai 100% "porno" dan 4 dari 20 gambar bersih. Itu tingkat positif palsu yang cukup tinggi tetapi skrip bertujuan untuk berhati-hati dan dapat disetel lebih lanjut. Ini bekerja pada warna kulit terang, gelap dan Asia.

Kelemahan utama dari false positive adalah objek berwarna coklat seperti pasir dan kayu dan tentu saja tidak mengetahui perbedaan antara daging yang "nakal" dan "baik" (seperti bidikan wajah).

Kelemahan dengan negatif palsu adalah gambar tanpa banyak daging yang terbuka (seperti perbudakan kulit), kulit yang dicat atau bertato, gambar B&W, dll.

kode sumber dan gambar contoh


Mau memposting bukti konsep Python 20 baris Anda? (-1)
bobobobo

Lumayan, +1. Menariknya, gambar permukaan biasa (seperti karpet atau permukaan lemari es) terlihat memiliki jumlah kulit yang tinggi.
bobobobo

6
Spoiler: Tidak ada ketelanjangan aktual dalam sampel gambar.
Luc

Ini juga akan menganggap kayu sebagai kulit. Karena memiliki warna yang sama persis, tetapi teksturnya berbeda. Belum lagi potret.
Maarten

45

Saya lebih suka mengizinkan pengguna melaporkan gambar yang buruk. Pengembangan pengenalan gambar membutuhkan terlalu banyak upaya dan waktu dan tidak akan seakurat mata manusia. Jauh lebih murah untuk melakukan outsourcing pekerjaan moderasi itu.

Lihat di: Amazon Mechanical Turk

" Amazon Mechanical Turk (MTurk) adalah salah satu rangkaian Amazon Web Services, pasar crowdsourcing yang memungkinkan program komputer mengoordinasikan penggunaan kecerdasan manusia untuk melakukan tugas yang tidak dapat dilakukan komputer."


4
Mungkin ada pasar untuk situs web gaya Amazon Mechanical Turk, tetapi yang mengkhususkan diri pada materi pelajaran semacam ini .... :)
Rich

6
Amazon Mechanical Turk mungkin membutuhkan uang. Mengingat pokok bahasannya, Anda akan berpikir ada model bisnis yang cerdas di mana Anda dapat menyelesaikannya secara gratis.
Ankur

1
Saya pikir ini adalah pendekatan yang sangat tidak etis.
Noon Silk

2
@Anur LOL! Ide yang hebat. Menuju ke nic.com untuk memeriksa apakah PornOrNot.com masih tersedia.
Pekka

9
@Noon Silk mengapa Anda merasa ini adalah pendekatan yang tidak etis?
Mazatec


15

LEDAKAN! Berikut adalah whitepaper yang berisi algoritme.

Apakah ada yang tahu di mana mendapatkan kode sumber untuk implementasi java (atau bahasa apapun)?

Itu akan mengguncang.

Satu algoritma yang disebut WISE memiliki tingkat akurasi 98% tetapi tingkat positif palsu 14%. Jadi yang Anda lakukan adalah membiarkan pengguna menandai 2% negatif palsu, idealnya dengan penghapusan otomatis jika sejumlah pengguna menandainya, dan meminta moderator melihat 14% positif palsu.


Anda menemukan algoritme. Itu sangat bagus. Kode sumber sering kali dibiarkan sebagai latihan. Lagipula, kami tidak menentukan bahasa pemrograman tertentu, bukan?
Ian


8

Ada perangkat lunak yang mendeteksi kemungkinan adanya pornografi, tetapi ini bukan ilmu pasti, karena komputer tidak dapat mengenali apa yang sebenarnya ada pada gambar (gambar hanyalah sekumpulan nilai besar pada petak tanpa makna). Anda bisa mengajari komputer apa itu porno dan apa yang tidak dengan memberikan contoh. Ini memiliki kelemahan karena hanya akan mengenali gambar ini atau yang serupa.

Mengingat sifat pornografi yang berulang-ulang, Anda memiliki peluang bagus jika melatih sistem dengan sedikit positif palsu. Misalnya, jika Anda melatih sistem dengan orang-orang telanjang, ini mungkin menandai gambar pantai dengan orang-orang yang "hampir" telanjang sebagai pornografi juga.

Software yang mirip adalah software facebook yang baru saja keluar. Itu hanya khusus pada wajah. Prinsip utamanya sama.

Secara teknis Anda akan menerapkan beberapa jenis pendeteksi fitur yang menggunakan pemfilteran bayes. Detektor fitur dapat mencari fitur seperti persentase piksel berwarna daging jika itu adalah detektor sederhana atau hanya menghitung kesamaan gambar saat ini dengan sekumpulan gambar porno yang disimpan.

Ini tentu saja tidak terbatas pada pornografi, ini sebenarnya lebih merupakan kasus sudut. Saya pikir yang lebih umum adalah sistem yang mencoba menemukan hal lain dalam gambar ;-)


1
Mengapa orang-orang meremehkan jawaban ini?
Patrick Cornelissen

karena tidak berisi apa pun seperti algoritme, resep, atau referensi.
Ian

7
Jadi, ini bukan jawaban yang valid untuk menjelaskan pengguna yang mengajukan pertanyaan bahwa tidak mungkin apa yang dia coba capai? Kawan, kamu mungkin sedikit lebih bebas ...
Patrick Cornelissen

Itu juga membuat pernyataan yang salah "karena komputer tidak dapat mengenali apa yang sebenarnya ada di gambar"
Daveth3Cat

Karena mereka tidak bisa. Anda hanya bisa belajar mendeteksi gambar tertentu dan semakin besar db kasus positif dan negatif Anda, semakin baik, tetapi secara umum Anda tidak akan pernah mendapatkan solusi yang seakurat manusia, jadi Anda akan mendapatkan sejumlah besar positif dan negatif palsu.
Patrick Cornelissen

5

Jawabannya sangat mudah: Cukup aman untuk mengatakan bahwa itu tidak akan mungkin terjadi dalam dua dekade mendatang. Sebelumnya kami mungkin akan mendapatkan alat terjemahan yang bagus. Terakhir kali saya memeriksanya, orang-orang AI berjuang untuk mengidentifikasi mobil yang sama pada dua foto yang diambil dari sudut yang sedikit diubah. Lihat berapa lama mereka mendapatkan OCR atau pengenalan ucapan yang cukup baik. Itu adalah masalah pengenalan yang bisa mendapatkan keuntungan besar dari kamus dan masih jauh dari solusi yang benar-benar andal meskipun telah dilemparkan ke jutaan orang berbulan-bulan.

Yang sedang berkata Anda hanya bisa menambahkan "ofensif?" link di sebelah yang dibuat pengguna bersaing dan minta mod untuk memeriksa ulang keluhan yang masuk.

edit:

Saya lupa sesuatu: JIKA Anda akan menerapkan beberapa jenis filter, Anda memerlukan yang dapat diandalkan. Jika solusi Anda 50% benar, 2000 dari 4000 pengguna dengan gambar yang layak akan diblokir. Harapkan kemarahan.


5

Seorang mahasiswa pascasarjana dari National Cheng Kung University di Taiwan melakukan penelitian tentang subjek ini pada tahun 2004. Ia mampu mencapai tingkat keberhasilan 89,79% dalam mendeteksi gambar telanjang yang diunduh dari Internet. Ini link ke tesisnya: Studi tentang Deteksi Gambar Orang Telanjang Berdasarkan Warna Kulit
Ada dalam bahasa Mandarin, oleh karena itu Anda mungkin memerlukan penerjemah jika Anda tidak dapat membacanya.


4

jawaban singkat: gunakan moderator;)

Jawaban panjang: Saya tidak berpikir ada proyek untuk tujuan ini apa itu pornografi? Hanya kaki, ketelanjangan penuh, cebol, dll. Sifatnya subjektif.


3
pertanyaannya adalah "Apa cara terbaik untuk mendeteksi gambar porno secara terprogram?", secara terprogram ...
Agusti-N

5
Saya tahu pertanyaannya, tapi seperti yang saya katakan tidak ada pemblokir porno yang 100% akurat karena porno itu subjektif. Subyektif tidak boleh terkait dengan kode. Menurut saya hanya ketelanjangan, yang lain menganggapnya porno. Solusi yang lebih baik adalah memiliki tombol 'report image'. Ide yang sama dengan Koistya Navin .NET
RvdK

1
"Cebol dll"? Holy non-sequitur, Batman.
Doug McClean

Ada yang namanya pornografi cebol.
Chris Sherlock

4

Tambahkan tautan yang menyinggung dan simpan md5 (atau hash lainnya) dari gambar yang menyinggung sehingga dapat diberi tag secara otomatis di masa mendatang.

Seberapa keren jika seseorang memiliki database publik besar dari image md5 bersama dengan tag deskriptif yang dijalankan sebagai webservice? Banyak pornografi bukanlah karya orisinal (karena orang yang memilikinya sekarang, mungkin tidak membuatnya) dan gambar-gambar populer cenderung beredar di berbagai tempat, jadi ini benar-benar dapat membuat perbedaan.


8
Aku meragukan itu. Ada BEGITU banyak pornografi di luar sana (dan banyak lagi yang dihasilkan dari hari ke hari) sehingga peluang Anda untuk melihat gambar yang sama dua kali (IMHO) agak mendekati nol.
Vilx-

Pikirkan tentang seberapa sering gadis bak mandi muncul di mana-mana untuk sementara waktu. Itu akan ditandai sekali dan kemudian semua orang bisa menghindarinya.
rfusca

3
kecuali itu dipotong, diubah ukurannya, atau hanya dibuka dan disimpan lagi sebelum diunggah ..
Blorgbeard keluar

Ya, saya berpikir tentang itu :( eh, itu adalah pemikiran.
rfusca

1
Lebih baik dari md5, lisensinya TinEye milik idée.
Tobu

2

Jika Anda benar-benar punya waktu dan uang:

Salah satu cara untuk melakukannya adalah dengan 1) Menulis algoritma pendeteksi citra untuk mengetahui apakah suatu objek itu manusia atau bukan. Hal ini dapat dilakukan dengan bitmasking gambar untuk mengambil "kontur" dan melihat apakah kontur sesuai dengan kontur manusia.

2) Data mining banyak gambar porno dan gunakan teknik data mining seperti algoritma C4 atau Particle Swarm Optimization untuk belajar mendeteksi pola yang cocok dengan gambar porno.

Ini akan mengharuskan Anda untuk mengidentifikasi bagaimana kontur tubuh manusia pria / wanita telanjang harus terlihat dalam format digital (ini dapat dicapai dengan cara yang sama dengan algoritma pengenalan gambar OCR).

Semoga kamu bersenang-senang! :-)


2

Menurut saya, kendala utama dalam mendefinisikan "gambar porno". Jika Anda dapat mendefinisikannya dengan mudah, Anda mungkin dapat menulis sesuatu yang akan berhasil. Tetapi bahkan manusia tidak dapat menyetujui apa itu pornografi. Bagaimana aplikasi tahu? Moderasi pengguna mungkin adalah pilihan terbaik Anda.


1

Saya telah melihat aplikasi pemfilteran web yang melakukan pemfilteran gambar porno, maaf saya tidak dapat mengingat namanya. Itu cukup rentan terhadap positif palsu tetapi sebagian besar waktu itu berhasil.

Saya pikir trik utamanya adalah mendeteksi "terlalu banyak kulit pada gambar :)


1
Saya juga tidak dapat mengingat penelitiannya - tetapi penelitian itu melakukan deteksi tepi dan cocok dengan apa yang tampak seperti pola vulva yang diputar atau dikaburkan. Cukup menarik dari segi pengolahan gambar.
jim

-1, Ini memberikan komentar tetapi tidak memberikan solusi yang substansial.
Brad Koch

1

Mendeteksi gambar porno masih merupakan tugas AI pasti yang masih sangat teoritis.

Ambil kekuatan kolektif dan kecerdasan manusia dengan menambahkan tombol / tautan "Laporkan spam / penyalahgunaan". Atau pekerjakan beberapa moderator untuk melakukan pekerjaan ini.

PS Benar-benar terkejut betapa banyak orang yang mengajukan pertanyaan dengan asumsi perangkat lunak dan algoritme sangat kuat bahkan tanpa berpikir apakah yang mereka inginkan dapat dilakukan. Apakah mereka mewakili generasi baru programmer yang tidak memiliki pemahaman tentang perangkat keras, pemrograman tingkat rendah, dan semua "keajaiban di balik" itu?

PS # 2. Saya juga ingat bahwa secara berkala terjadi situasi di mana orang sendiri tidak dapat memutuskan apakah sebuah gambar porno atau seni dibawa ke pengadilan. Bahkan setelah keputusan pengadilan, kemungkinan setengah dari orang-orang akan menganggap keputusan itu salah. Situasi bodoh terakhir semacam itu baru-baru ini ketika halaman Wikipedia dilarang di Inggris karena gambar sampul CD yang menampilkan ketelanjangan.


1

Dua opsi yang dapat saya pikirkan (meskipun tidak satu pun dari mereka yang mendeteksi pornografi secara terprogram):

  1. Blokir semua gambar yang diunggah sampai salah satu administrator Anda melihatnya. Tidak ada alasan mengapa ini membutuhkan waktu lama: Anda dapat menulis beberapa perangkat lunak yang menampilkan 10 gambar per detik, hampir seperti film - bahkan dengan kecepatan ini, mudah bagi manusia untuk melihat gambar yang berpotensi pornografi. Kemudian Anda memutar ulang perangkat lunak ini dan melihat lebih dekat.
  2. Tambahkan opsi biasa "tandai gambar ini sebagai tidak pantas".

1

The Brightcloud layanan web API sempurna untuk ini. Ini adalah REST API untuk melakukan pencarian situs web seperti ini. Ini berisi DB penyaringan web yang sangat besar dan sangat akurat dan salah satu kategorinya, Dewasa, memiliki lebih dari 10 juta situs porno yang teridentifikasi!


1

Saya pernah mendengar tentang alat yang menggunakan algoritme yang sangat sederhana, tetapi cukup efektif. Algoritme menghitung jumlah relatif piksel dengan nilai warna mendekati beberapa warna "kulit" yang telah ditentukan sebelumnya. Jika jumlah tersebut lebih tinggi dari nilai yang telah ditentukan, maka gambar dianggap mengandung konten erotis / pornografi. Tentu saja algoritma tersebut akan memberikan hasil false positive untuk foto wajah close up dan banyak hal lainnya.
Karena Anda menulis tentang jejaring sosial, akan ada banyak foto "normal" dengan warna kulit yang tinggi, jadi sebaiknya Anda tidak menggunakan algoritme ini untuk menolak semua gambar dengan hasil positif. Tetapi Anda dapat menggunakannya untuk memberikan bantuan untuk moderator, misalnya menandai gambar-gambar ini dengan prioritas lebih tinggi,


Saya sebenarnya telah melihat sistem yang mirip dengan yang digunakan. Ini tidak cukup dapat diandalkan untuk dibiarkan sendiri, tetapi berfungsi dengan sangat baik dalam memberi tahu moderator jika diperlukan. Ini bukan bukti penuh, terutama jika orang tersebut hanya ditutupi dengan satu area kecil yang terbuka. Rasionya tidak cukup andal saat terbalik.
Tim Post


0

Lihat nama file dan atributnya. Hampir tidak ada informasi yang cukup untuk mendeteksi bahkan 20% gambar nakal, tetapi daftar hitam kata kunci sederhana setidaknya akan mendeteksi gambar dengan label deskriptif atau metadata. 20 menit coding untuk tingkat keberhasilan 20% bukanlah kesepakatan yang buruk, terutama sebagai prescreen yang setidaknya dapat menangkap beberapa yang sederhana sebelum Anda menyerahkan sisanya kepada moderator untuk dinilai.

Trik berguna lainnya adalah kebalikannya tentu saja, pertahankan daftar putih sumber gambar agar diizinkan tanpa moderasi atau pemeriksaan. Jika sebagian besar gambar Anda berasal dari pengunggah atau sumber yang diketahui aman, Anda dapat menerimanya begitu saja.


0

Hari ini saya tidak akan mencoba lebih jauh untuk mendefinisikan jenis materi yang saya mengerti untuk dianut dalam deskripsi singkat itu ["pornografi inti"]; dan mungkin saya tidak akan pernah berhasil melakukannya secara cerdas. Tapi saya mengetahuinya ketika saya melihatnya, dan film yang terlibat dalam kasus ini bukanlah itu.

- Hakim Agung Amerika Serikat Potter Stewart, 1964



0

Ini bukan ilmu roket. Tidak lagi. Ini sangat mirip dengan pengenalan wajah. Menurut saya, cara termudah untuk mengatasinya adalah dengan menggunakan pembelajaran mesin. Dan karena kita berurusan dengan gambar, saya dapat menunjuk ke jaringan saraf, karena ini tampaknya lebih disukai untuk gambar. Anda akan membutuhkan data pelatihan. Dan Anda dapat menemukan banyak sekali data pelatihan di internet tetapi Anda harus memotong gambar ke bagian tertentu yang ingin dideteksi oleh algoritme. Tentu saja Anda harus memecah masalah menjadi bagian tubuh yang berbeda yang ingin Anda deteksi dan membuat data pelatihan untuk masing-masing, dan di sinilah hal-hal menjadi lucu.

Seperti yang dikatakan orang di atas, itu tidak bisa dilakukan 100% persen. Akan ada kasus dimana algoritma tersebut gagal. Ketepatan sebenarnya akan ditentukan oleh data pelatihan Anda, struktur jaringan saraf Anda dan bagaimana Anda akan memilih untuk mengelompokkan data pelatihan (penis, vagina, payudara, dll, dan kombinasinya). Bagaimanapun, saya sangat yakin bahwa ini dapat dicapai dengan akurasi tinggi untuk gambar porno eksplisit.



-1

Tidak mungkin Anda bisa melakukan ini 100% (saya akan mengatakan mungkin 1-5% masuk akal) dengan pengetahuan saat ini. Anda akan mendapatkan hasil yang jauh lebih baik (daripada 1-5% itu) hanya dengan memeriksa nama gambar untuk kata-kata yang berhubungan dengan seks :).

@ SO Troll: Benar sekali.


-1, Ini memberikan komentar tetapi tidak memberikan solusi yang substansial.
Brad Koch
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.