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


120

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

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

С чего мне начать?

Есть ли для этого какой-нибудь проект с открытым исходным кодом?


82
На самом деле я бы сказал, что это звучит намного сложнее, чем ракетостроение! У нас уже есть много ракет, но AFAIK нет такой «порно детектор» :)
Gaz

4
РЖУНИМАГУ. Есть распознавание лиц, но пока нет технологий для распознавания гениталий и груди. Вот незадача.
Джон Лимджап,

11
Порнография это вопрос географии - кроме того, я уверен , что есть много фотографий , которые не показывают гениталии или nudety вообще, которые будут рассматриваться довольно хардкор (опять же - в некоторых местах). Похоже на работу для продвинутого ИИ, а не на простой алгоритм.
Ноам Гал

2
Я только что наткнулся на эту утилиту, которая заставила меня вспомнить эту ветку. Интересно, работает ли это? proofpronto.com/porn-detection-stick-by-paraben.html
Мартин Смит

1
@ jm666, если проблема настолько серьезна для вас, и вы думаете, что состояние дел в этой области улучшилось за последние два года, как насчет того, чтобы назначить награду за упомянутый обманщик? Таким образом вы должны привлечь внимание и, возможно, несколько ответов.
Майкл Петротта

Ответы:


69

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

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

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

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

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

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


Из причин обнаружения порно продвинулась с тех пор. Было много прорывов в распознавании объектов / классификации изображений / компьютерном зрении. 2000 год кажется мне каменным веком.
Maarten

89

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

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

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

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

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


Хотите опубликовать свое доказательство концепции Python из 20 строк? (-1)
bobobobo 02

Неплохо, +1. Интересно, что изображения обычных поверхностей (например, ковра или поверхности холодильника) выглядят как имеющие большое количество кожи.
bobobobo

6
Спойлер: В образцах изображений нет реальной наготы.
Люк

Это также будет рассматривать дерево как кожу. Потому что у него точно такой же цвет, но разная текстура. Не говоря уже о портретах.
Maarten

45

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

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

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


4
Вероятно, есть рынок для веб-сайта в стиле Amazon Mechanical Turk, но тот, который специализируется на этой тематике .... :)
Rich

6
Amazon Mechanical Turk, вероятно, стоит денег. Учитывая предмет, вы можете подумать, что есть умная бизнес-модель, в которой вы можете сделать это бесплатно.
Анкур

1
Я считаю, что это довольно неэтичный подход.
Noon Silk,

2
@Ankur LOL! Отличная идея. Переходим на nic.com, чтобы проверить, доступен ли еще PornOrNot.com.
Pekka

9
@Noon Silk, почему ты считаешь, что это неэтичный подход?
Mazatec

22

15

БУМ! Вот технический документ, содержащий алгоритм.

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

Это было бы здорово.

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


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


8

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

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

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

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

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


1
Почему люди голосуют за этот ответ?
Патрик Корнелиссен

потому что он не содержит ничего похожего на алгоритм, рецепт или ссылку.
Ян

7
Так что это неправильный ответ, чтобы объяснить пользователю, задающему вопрос, что на самом деле невозможно то, чего он пытается достичь? Чувак, ты мог бы быть немного более расслабленным ...
Патрик Корнелиссен

Это также ложное заявление, «поскольку компьютеры не могут распознать то, что на самом деле изображено на фотографиях»
Daveth3Cat

Потому что они не могут. Вы можете научиться обнаруживать только определенные изображения, и чем больше у вас db положительных и отрицательных случаев, тем лучше, но в целом вы никогда не получите решения, которое было бы таким же точным, как у человека, поэтому вы получите огромное количество ложные срабатывания и негативы.
Патрик Корнелиссен

5

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

При этом вы могли бы просто добавить «наступление»? ссылка рядом с созданным пользователем заявлением и модом для перекрестной проверки входящих жалоб.

редактировать:

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


5

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


4

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

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


3
вопрос : «Что является лучшим способом для обнаружения порно программно изображения?», ... программно
Agusti-N

5
Я знаю , что этот вопрос, но , как я сказал , что нет 100% точным порно блокатор , потому что порно является субъективным. Субъективное не может быть связано с кодом. 1 думает , просто обнаженное тело, другой думает , что его порно. Лучшее решение - иметь кнопку «Сообщить об изображении». Та же идея, что и у Koistya Navin .NET
RvdK

1
«Карлики и т. Д.»? Holy non-sequitur, Бэтмен.
Дуг МакКлин

Существует такая вещь , как карлик порно.
Крис Шерлок,

4

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

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


8
Я сомневаюсь в этом. Существует так много порно там (и более тонн , порожденное день) , что ваши шансы увидеть ту же картину дважды в (ИМХО) достаточно близко к нулю.
Vilx-

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

3
если только он не был обрезан, изменен размер или просто открыт и сохранен снова перед
загрузкой

Да, я думал об этом :( а, это была мысль.
rfusca

1
Лучше, чем md5, лицензионная idée's TinEye.
Tobu,

2

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

Один из способов сделать это: 1) написать алгоритм обнаружения изображения, чтобы определить, является ли объект человеком или нет. Это можно сделать, применив растровую маску к изображению, чтобы получить его «контуры» и посмотреть, подходят ли контуры к человеческому контуру.

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

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

Надеюсь, тебе весело! :-)


2

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


1

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

Думаю, главный трюк - это обнаружить "слишком много кожи на картинке :)


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

-1, это дает комментарий, но не дает существенного решения.
Брэд Кох,

1

Детектирование порно изображения еще определенная AI задача, которая является очень теоретическим еще.

Добейтесь коллективной власти и человеческого интеллекта, добавив кнопку / ссылку «Сообщить о спаме / злоупотреблении». Или наймите для этой работы нескольких модераторов.

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

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


1

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

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

1

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


1

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


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

1

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


0

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

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


0

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

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



0

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

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



-1

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

@SO Troll: Верно.


-1, это дает комментарий, но не дает существенного решения.
Брэд Кох,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.