Bu aslında oldukça kolaydır. Cilt tonlarını programlı olarak tespit edebilirsiniz - ve porno görüntüler çok fazla cilde sahip olma eğilimindedir. Bu, yanlış pozitifler yaratacaktır, ancak bu bir sorunsa, gerçek denetim yoluyla tespit edilen görüntüleri geçirebilirsiniz. Bu sadece moderatörlerin işini büyük ölçüde azaltmakla kalmaz, aynı zamanda size bol miktarda bedava porno verir. Kazan-kazan.
#!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)
Bu kod, görüntünün merkezindeki cilt tonlarını ölçer. 20 nispeten uysal "porno" görüntü ve 20 tamamen masum görüntü üzerinde test ettim. "Porno" nun% 100'ünü ve temiz görüntülerin 20'sinden 4'ünü işaretler. Bu oldukça yüksek bir yanlış pozitif oranı ancak senaryo oldukça temkinli olmayı hedefliyor ve daha fazla ayarlanabilir. Açık, koyu ve Asya cilt tonlarında çalışır.
Yanlış pozitiflerin ana zayıf yönleri kum ve tahta gibi kahverengi nesnelerdir ve tabii ki "yaramaz" ve "güzel" et (yüz çekimleri gibi) arasındaki farkı bilmiyor.
Sahte negatiflerin zayıflığı, çok fazla maruz kalan et (deri bağları gibi), boyanmış veya dövmeli cilt, siyah beyaz resimler vb.
kaynak kodu ve örnek görüntüler