Điều này thực sự dễ dàng một cách hợp lý. Bạn có thể lập trình phát hiện tông màu da - và hình ảnh khiêu dâm có xu hướng có nhiều màu da. Điều này sẽ tạo ra các kết quả dương tính giả nhưng nếu đây là vấn đề, bạn có thể chuyển các hình ảnh được phát hiện qua kiểm duyệt thực tế. Điều này không chỉ làm giảm đáng kể công việc cho người kiểm duyệt mà còn cung cấp cho bạn nhiều nội dung khiêu dâm miễn phí. Đó là đôi bên cùng có lợi.
#!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)
Mã này đo tông màu da ở trung tâm của hình ảnh. Tôi đã thử nghiệm trên 20 hình ảnh "khiêu dâm" tương đối thuần hóa và 20 hình ảnh hoàn toàn vô tội. Nó gắn cờ 100% hình ảnh "khiêu dâm" và 4/20 hình ảnh sạch sẽ. Đó là một tỷ lệ dương tính giả khá cao nhưng kịch bản nhằm mục đích khá thận trọng và có thể được điều chỉnh thêm. Nó hoạt động trên các tông màu da sáng, tối và châu Á.
Điểm yếu chính của ảnh giả là các vật thể màu nâu như cát và gỗ và tất nhiên nó không biết sự khác biệt giữa da thịt "xấu" và "đẹp" (như ảnh chụp khuôn mặt).
Điểm yếu của âm bản giả sẽ là hình ảnh không có nhiều da thịt lộ ra ngoài (như da trói), da được sơn hoặc có hình xăm, hình ảnh B&W, v.v.
mã nguồn và hình ảnh mẫu