यह वास्तव में काफी आसान है। आप प्रोग्राम को स्किन टोन का पता लगा सकते हैं - और पोर्न इमेज में बहुत सारी स्किन होती है। यह झूठी सकारात्मकता पैदा करेगा, लेकिन अगर यह एक समस्या है तो आप वास्तविक मॉडरेशन के माध्यम से ज्ञात छवियों को पारित कर सकते हैं। यह न केवल मध्यस्थों के लिए काम को बहुत कम करता है, बल्कि आपको बहुत सारे मुफ्त पोर्न भी देता है। यह जीत है।
#!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)
यह कोड छवि के केंद्र में त्वचा के टोन को मापता है। मैंने 20 अपेक्षाकृत टैम "पोर्न" छवियों और 20 पूरी तरह से निर्दोष छवियों पर परीक्षण किया है। यह "पोर्न" के 100% और स्वच्छ छवियों के 20 में से 4 को झंडे देता है। यह एक बहुत ही उच्च झूठी सकारात्मक दर है, लेकिन स्क्रिप्ट का उद्देश्य काफी सतर्क रहना है और इसे आगे बढ़ाया जा सकता है। यह हल्के, काले और एशियाई त्वचा टोन पर काम करता है।
यह झूठी सकारात्मकता के साथ मुख्य कमजोरियां हैं, रेत और लकड़ी जैसी भूरे रंग की वस्तुएं हैं और निश्चित रूप से यह "शरारती" और "अच्छा" मांस (चेहरे के शॉट्स की तरह) के बीच अंतर नहीं जानता है।
झूठी नकारात्मक के साथ कमजोरी बहुत उजागर मांस (जैसे चमड़े का बंधन) के बिना चित्र होगी, चित्रित या टैटू वाली त्वचा, B & चित्र, आदि।
स्रोत कोड और नमूना छवियों