Каков наилучший способ программного обнаружения порно изображений? [закрытый]


Akismet делает удивительную работу по обнаружению спам-комментариев. Но комментарии-не единственная форма спама в наши дни. Что, если я хотел что-то подобное как Akismet автоматически обнаруживать порно изображений на сайт социальной сети, которая позволяет пользователям загружать свои фотографии, аватары и т. д.?

уже есть несколько поисковых систем на основе изображений, а также распознавание лиц, поэтому я предполагаю, что это не будет ракетостроение, и это можно сделать. Однако я понятия не имею о том, что как это работает и как я должен это делать, если я хочу развивать его с нуля.

Как я должен начать?

есть ли проект с открытым исходным кодом для этого?

25 120

25 ответов:

Это было написано в 2000 году, не уверен, что состояние искусства в обнаружении порно продвинулось вообще, но я сомневаюсь в этом.

http://www.dansdata.com/pornsweeper.htm

PORNsweeper, кажется, имеет некоторую способность отличать фотографии людей от фотографий вещей, которые не являются людьми, пока фотографии находятся в цвете. Он менее успешно различает грязные фотографии людей от чистых.

с по умолчанию, средняя чувствительность, если отдел кадров отправляет изображение нового парня в аккаунты, у вас есть около 50% шансов получить его. Если ваша сестра пришлет вам фотографию своего шестимесячного ребенка, он также может быть задержан.

справедливо отметить забавные ошибки, такие как вызов порно Моны Лизы, если они представляют поведение программного обеспечения. Если создатели признают, что их алгоритмический распознаватель изображений будет падать мяч 15% времени, то высмеивать его, когда он делает именно это, глупо.

но PORNsweeper только кажется, что живет до своих заявленных спецификаций в одном отделе - обнаружение фактического порно. это на полпути прилично при обнаружении порно, но это плохо при обнаружении чистых фотографий. И я не удивлюсь, если в ближайшее время в этой области не будет сделано никаких серьезных скачков.

Это на самом деле достаточно легко. Вы можете программно определить оттенки кожи - и порно изображения, как правило, имеют много кожи. Это создаст ложные срабатывания, но если это проблема, вы можете передать изображения, обнаруженные таким образом, через фактическую модерацию. Это не только значительно сокращает работу модераторов, но и дает вам много бесплатного порно. Это беспроигрышно.

#!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% "порно" и 4 из 20 чистых изображений. Это довольно высокий уровень ложных срабатываний, но сценарий стремится быть довольно осторожным и может быть дополнительно настроен. Он работает на светлых, темных и азиатских тонах кожи.

его основные недостатки с ложными срабатываниями-это коричневые объекты, такие как песок и дерево, и, конечно же, он не знает разницы между "непослушной" и "хорошей" плотью (например, снимки лица).

слабость с ложноотрицательными были бы изображения без большой открытой плоти (например, кожаное рабство), окрашенная или татуированная кожа, изображения B&W и т. д.

исходный код и примеры изображений

Я бы предпочел, чтобы пользователи сообщали о плохих изображениях. Развитие распознавания изображений может занять слишком много усилий и времени и не будет таким же точным, как человеческие глаза. Это гораздо дешевле, чтобы аутсорсинг этой работы модерации.

взгляните на: Amazon Mechanical Turk

" The Amazon Mechanical Turk (MTurk) является одним из набора Amazon Web Services, краудсорсинг рынка, который позволяет компьютерным программам координировать использование человеческого интеллекта для выполнения задач, которые компьютеры не в состоянии сделать."

бум! Вот это техническое описание содержащий алгоритм.

кто-нибудь знает, где получить исходный код для реализации java (или любого языка)?

Это будет рок.

один алгоритм под названием WISE имеет 98% - ную точность, но 14% - ную ложноположительную скорость. Итак, что вы делаете, вы позволяете пользователям отмечать 2% ложных негативов, в идеале с автоматическим удалением, если определенное количество пользователей помечает его, и модераторы просматривают 14% ложных позитивы.

ню.js на основе техническое описание Риган АП-апид из Университета Де Ла Саль.

есть программное обеспечение, которое определяет вероятность порно, но это не точная наука, так как компьютеры не могут распознать, что на самом деле на картинках (картинки-это только большой набор значений на сетке без смысла). Вы можете просто научить компьютер, что такое порно, а что нет, приводя примеры. Это имеет тот недостаток, что он будет распознавать только эти или подобные изображения.

учитывая повторяющийся характер порно у вас есть хороший шанс, если вы тренируете систему с несколькими ложными позитивы. Например, если вы тренируете систему с обнаженными людьми, она может помечать фотографии пляжа с" почти " голыми людьми как порно тоже.

аналогичное программное обеспечение-это программное обеспечение facebook, которое недавно вышло. Он просто специализируется на лицах. Главный принцип тот же.

технически вы бы реализовали какой-то детектор функций, который использует фильтрацию Байеса. Детектор объектов может искать такие функции, как процент пикселей телесного цвета, если это простой детектор или просто вычисляет сходство изображения с набором сохраненных порно картинки.

Это, конечно, не ограничивается порно, это на самом деле больше угол случае. Я думаю, что более распространенными являются системы, которые пытаются найти другие вещи в фотографии ;-)

ответ очень прост: можно с уверенностью сказать, что в ближайшие два десятилетия это будет невозможно. До этого мы, вероятно, получим хорошие инструменты перевода. В последний раз, когда я проверял, ребята из ИИ пытались идентифицировать одну и ту же машину на двух фотографиях, снятых с немного измененным углом. Посмотрите, сколько времени им потребовалось, чтобы получить достаточно хорошее распознавание речи или распознавание речи вместе. Это проблемы распознавания, которые могут значительно выиграть от словарей и все еще далеки от того, чтобы иметь полностью надежные решения, несмотря на многомиллионные человеко-месяцы, брошенные на них.

Это, как говорится, вы могли бы просто добавить "оскорбительным?"ссылка рядом с созданным пользователем contend и иметь мод перекрестной проверки входящих жалоб.

edit:

Я что-то забыл: если вы собираетесь реализовать какой-то фильтр, вам понадобится надежный. Если ваше решение будет на 50% правильным, 2000 из 4000 пользователей с приличными изображениями будут заблокированы. Ожидать безобразие.

аспирант из Национального университета Чэн Кунг на Тайване провел исследование по этому вопросу в 2004 году. Он смог добиться успеха 89,79% в обнаружении обнаженных фотографий, загруженных из интернета. Вот ссылка на его тезис: исследование по обнаружению изображений голых людей на основе цвета кожи
Это по-китайски, поэтому вам может понадобиться переводчик, в случае, если вы не можете прочитать его.

короткий ответ: используйте модератора;)

длинный ответ: я не думаю, что есть проект для этой причины, что такое порно? Только ноги, полной наготы, лилипутов и т. д. Это субъективно.

добавьте оскорбительную ссылку и сохраните md5 (или другой хэш) оскорбительного изображения, чтобы он мог автоматически помечаться в будущем.

Как здорово было бы, если бы у кого-то была большая публичная база данных изображений md5 вместе с описательными тегами, работающими как веб-сервис? Много порно не оригинальная работа (в том, что человек, который имеет его сейчас, вероятно, не сделал это) и популярные изображения, как правило, плавают вокруг разных мест, так что это действительно может иметь значение.

Если у вас действительно есть время и деньги:

один из способов сделать это-1) написать алгоритм обнаружения изображения, чтобы найти, является ли объект человеком или нет. Это можно сделать с помощью битовой маски изображения, чтобы получить его "контуры" и посмотреть, соответствуют ли контуры контуру человека.

2) Данные добывают много порно изображений и используют методы интеллектуального анализа данных, такие как алгоритмы C4 или оптимизация роя частиц, чтобы научиться обнаруживать шаблон, который соответствует порно изображения.

Это потребует, чтобы вы определили, как контуры обнаженного мужчины/женщины человеческого тела должны выглядеть в оцифрованном формате (это может быть достигнуто таким же образом, как работают алгоритмы распознавания изображений OCR).

Надеюсь, вам понравится! : -)

Мне кажется, что основным препятствием является определение "порно картинки". Если вы можете определить его легко, вы, вероятно, могли бы написать что-то, что будет работать. Но даже люди не могут договориться о том, что это порно. Как приложение будет знать? Модерация пользователей, вероятно, ваш лучший выбор.

Я видел приложение веб-фильтрации, которое делает фильтрацию порно изображений, извините, я не могу вспомнить имя. Он был очень склонен к ложным срабатываниям, однако большую часть времени он работал.

Я думаю, что главный трюк заключается в обнаружении " слишком много кожи на картинке :)

обнаружение порно изображений по-прежнему является определенной задачей ИИ, которая пока очень теоретична.

соберите коллективную власть и человеческий интеллект, добавив кнопку/ссылку "сообщить о спаме/злоупотреблении". Или нанять несколько модераторов для выполнения этой работы.

P.S. действительно удивлен, как много людей задают вопросы, предполагая, что программное обеспечение и алгоритмы всемогущи, даже не думая, может ли быть сделано то, что они хотят. Являются ли они представителями той новой породы программистов, у которых нет понимание аппаратного обеспечения, низкоуровневого программирования и всего этого "волшебства"?

С. П. #2. Я также помню, что периодически бывает так, что в суд выносится какая-то ситуация, когда люди сами не могут решить, является ли картина порно или искусством. Даже после решения суда, скорее всего, половина людей будет считать решение неправильным. Последняя глупая ситуация такого рода была совсем недавно, когда страница Википедии была запрещена в Великобритании из-за изображения обложки компакт-диска, в котором есть некоторые нагота.

два варианта, которые я могу придумать (хотя ни один из них не программно обнаруживает порно):

  1. блокировать все загруженные изображения, пока один из ваших администраторов и посмотрел на них. Нет никаких причин, почему это должно занять много времени: вы можете написать какое - то программное обеспечение, которое показывает 10 изображений в секунду, почти как фильм-даже на этой скорости человеку легко обнаружить потенциально порнографическое изображение. Затем вы перематываете в этом программном обеспечении и имеете ближе смотреть.
  2. добавьте обычную опцию "пометить это изображение как неуместное".

The BrightCloud Web service API идеально подходит для этого. Это REST API для выполнения поиска веб-сайтов так же, как это. Он содержит очень большую и очень точную веб-фильтрацию БД, а одна из категорий, Adult, имеет более 10M порносайтов!

Я слышал об инструментах, которые использовали очень простой, но довольно эффективный алгоритм. Алгоритм рассчитал относительное количество пикселей со значением цвета, близким к некоторым предопределенным цветам "кожи". Если эта сумма превышает некоторое предопределенное значение, то изображение считается эротическим / порнографическим содержанием. Конечно, этот алгоритм даст ложноположительные результаты для фотографий лица крупным планом и многих других вещей.
Так как вы пишете о социальных сетях там будет много "нормальные" фотографии с большим количеством цвет кожи, так что вы не должны использовать этот алгоритм, чтобы отрицать все фотографии с положительным результатом. Но вы можете использовать его, чтобы помочь модераторам, например, пометить эти фотографии с более высоким приоритетом, поэтому, если модератор хочет проверить некоторые новые фотографии на порнографический контент, он может начать с этих фотографий.

Это выглядит многообещающе. В основном они обнаруживают скин (с калибровкой путем распознавания лиц) и определяют "пути скина" (т. е. измерение доли пикселей скина против пикселей кожи лица / пикселей кожи). Это имеет достойную производительность. http://www.prip.tuwien.ac.at/people/julian/skin-detection

посмотрите на имя файла и атрибуты. Там нет почти достаточно информации, чтобы обнаружить даже 20% непослушных изображений, но простой черный список ключевых слов будет по крайней мере обнаруживать изображения с описательными метками или метаданными. 20 минут кодирования для 20% успеха-это не плохая сделка, особенно в качестве предварительного экрана, который может, по крайней мере, поймать некоторые простые, прежде чем вы передадите остальное модератору для оценки.

другой полезный трюк является противоположным, конечно, поддерживать белый список источники изображения, чтобы позволить без модерации или проверки. Если большинство ваших изображений поступают из известных безопасных загрузчиков или источников, вы можете просто принять их bindly.

Я не буду сегодня дальше пытаться определение видов материала я поймите, чтобы быть охвачены в этом стенографическое описание ["hard-core порнография"]; и, возможно, я мог бы никогда не удается внятно делать так. Но я знаю это, когда вижу, и кинофильм участвует в этом дело не в этом.

-Судья Верховного Суда США Поттер Стюарт, 1964

вы можете найти много техническая документация в сети по этому вопросу.

Это не ракетостроение. Больше нет. Это очень похоже на распознавание. Я думаю, что самый простой способ справиться с этим-использовать машинное обучение. И поскольку мы имеем дело с изображениями, я могу указать на нейронные сети, потому что они, по-видимому, предпочтительны для изображений. Вам понадобятся данные обучения. И вы можете найти тонны обучающих данных в интернете, но вам нужно обрезать изображения до определенной части, которую вы хотите, чтобы алгоритм обнаружил. Конечно, вам придется сломать проблема в разных частях тела, которые вы хотите обнаружить и создать тренировочные данные для каждого, и именно здесь все становится забавным.

Как кто-то выше сказал, это не может быть сделано на 100%. Будут случаи, когда такие алгоритмы терпят неудачу. Фактическая точность будет определяться вашими тренировочными данными, структурой ваших нейронных сетей и тем, как вы решите сгруппировать тренировочные данные (пенисы, влагалища, груди и т. д. и их комбинации). В любом случае я очень уверен, что это может быть достигнуто с высокой точностью для откровенные порно снимки.

Это детектор наготы. Я еще не пробовал. Это единственная ОСС, которую я смог найти.

https://code.google.com/p/nudetech

вы не можете сделать это на 100% (я бы сказал, что, возможно, 1-5% будет правдоподобно) с сегодняшними знаниями. Вы получите гораздо лучший результат (чем те 1-5%), просто проверяя изображения-имена для связанных с сексом слов :).

@SO Troll: так верно.