これは実際にはかなり簡単です。プログラムで肌の色を検出できます。ポルノ画像には肌がたくさんある傾向があります。これにより誤検知が発生しますが、これが問題である場合は、実際のモデレートによって検出された画像を渡すことができます。これにより、モデレーターの作業が大幅に削減されるだけでなく、無料のポルノがたくさん提供されます。それはwin-winです。
#!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個にフラグを立てます。これはかなり高い偽陽性率ですが、スクリプトはかなり慎重になることを目的としており、さらに調整することができます。明るい、暗い、アジアの肌の色調で機能します。
誤検知の主な弱点は、砂や木のような茶色のオブジェクトであり、もちろん、「いたずら」と「素敵な」肉の違いを認識していません(フェイスショットなど)。
偽陰性の弱点は、肉が露出していない画像(革のボンデージなど)、塗装または入れ墨された皮膚、白黒画像などです。
ソースコードとサンプル画像