이것은 실제로 합리적으로 쉽습니다. 프로그래밍 방식으로 피부 톤을 감지 할 수 있으며 포르노 이미지에는 피부가 많은 경향이 있습니다. 이것은 오탐을 생성하지만 이것이 문제라면 실제 조정을 통해 감지 된 이미지를 전달할 수 있습니다. 이것은 중재자의 작업을 크게 줄일뿐만 아니라 많은 무료 포르노를 제공합니다. 윈윈입니다.
#!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 개를 표시합니다. 그것은 상당히 높은 오 탐지율이지만 스크립트는 상당히 신중하고 더 조정될 수있는 것을 목표로합니다. 밝고 어둡고 아시아 피부 톤에서 작동합니다.
오 탐지의 주요 약점은 모래와 나무와 같은 갈색 물체이며 물론 "웃음"과 "좋은"육체 (얼굴 샷처럼)의 차이를 알지 못합니다.
허위 네거티브의 약점은 살이 많이 노출되지 않은 이미지 (가죽 본디지), 페인트 칠하거나 문신을 한 피부, 흑백 이미지 등입니다.
소스 코드 및 샘플 이미지