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

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

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

Как мне начать?

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

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

Ответ 5

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

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

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

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

Ответ 7

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

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

Аналогичным программным обеспечением является недавно появившееся программное обеспечение facebook. Он просто специализировался на лицах. Основной принцип тот же.

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

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

Ответ 8

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

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

изменить:

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

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

Ответ 12

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

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

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

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

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

Ответ 13

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

Ответ 14

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

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

Ответ 15

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

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

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

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

Ответ 16

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

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

Ответ 17

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

Ответ 18

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

Ответ 19

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

Ответ 20

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

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

Ответ 21

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

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

Ответ 23

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

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

Ответ 24

Это детектор наготы. Я не пробовал. Это единственный OSS, который я мог найти.

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

Ответ 25

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

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