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

Человек может инстинктивно решить, является ли то, что он видит, неуместным или нет. Однако эта проблема далека от решения, когда речь идет о всевидящем ИИ, который может решить, является ли изображение или видео неприемлемым (Нет или S afe F или W ork). Многие компании сейчас стремятся стать лучшими, когда дело доходит до применения автоматизированных методов для определения того, безопасно ли распространять какой-либо носитель или нет.

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

  • Откровенная нагота
  • Предполагаемая нагота
  • Порно / половой акт
  • Моделирование / Анимационное порно
  • Кровь / Насилие

Tl; DR: если вы просто хотите узнать, какой API лучший из существующих, вы можете сразу перейти к общему сравнению в конце сообщения.

Настройка эксперимента:

Набор данных: для оценки я создал собственный набор данных NSFW с равным весом для каждой подкатегории nsfw. Набор данных состоит из 120 изображений с 20 положительными изображениями nsfw для каждой из пяти категорий, описанных выше, и 20 изображений sfw. Я решил не использовать набор данных изображений YACVID 180 с открытым исходным кодом, поскольку он в первую очередь полагается на использование обнаженной натуры в качестве меры содержания NSFW.

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

Набор данных имеет открытый исходный код и доступен для загрузки Здесь. [ПРЕДУПРЕЖДЕНИЕ: содержит явное содержание]

Вот - это лист, содержащий необработанные прогнозы API для каждого изображения в наборе данных.

Метрики:

Каждый из классификаторов оценивается по общепринятым метрикам, таким как:

Истинные плюсы: TP

Если классификатор называл что-то NSFW, а на самом деле это было NSFW

Истинные отрицания: TN

Если классификатор называл что-то SFW, а на самом деле это было SFW

Ложные срабатывания: FP

Если классификатор называл что-то NSFW, и на самом деле это было SFW

Ложноотрицательные: FN

Если классификатор назвал что-то SFW, а на самом деле это было NSFW

Точность

Если модель делает прогноз, можно ли ей доверять?

Точность

Если модель говорит, что изображение является NSFW, как часто это правильно?

Отзывать

Если все образы NSFW, сколько он идентифицирует?

Оценка F1

Это смесь Точности и Запоминания, часто схожая с точностью.

Я оценил следующие API для модерации контента

Производительность по категориям

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

Порнография / половые акты

Google и Sightengine API действительно выделяются здесь тем, что являются единственными, кто может правильно обнаруживать все порнографические изображения. На втором месте находятся Nanonets и Algorithmia, поскольку они способны правильно классифицировать 90% всех порнографических изображений. У Microsoft и Imagga худшие результаты в этой категории.

Ссылки на оригинальные изображения: Porn19, Porn7, Porn18, Porn14

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

Ссылки на оригинальные изображения: Porn6, Porn2, Porn10, Porn3

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

Откровенная нагота

Большинство API-интерфейсов отлично проявили себя в этой категории, и у многих из них уровень обнаружения составил 100%. Здесь даже у самых низкоэффективных API (Clarifai и Algorithmia) уровень обнаружения составляет 90%. Определение того, что считать наготой, всегда было предметом споров, и, как видно из изображений, которые трудно идентифицировать, они в основном терпят неудачу в тех случаях, когда можно утверждать, что это SFW.

Ссылки на оригинальные изображения: Nudity10, Nudity7, Nudity13, Nudity14

На изображениях, которые легко идентифицировать, явно видно обнаженное тело, и они откровенны. Все без разницы во мнениях назовут их NSFW. Ни один из провайдеров не допустил ошибки, и все средние оценки составили 0,99.

Ссылки на исходные изображения:

Ссылки на оригинальные изображения: Nudity9, Nudity8, Nudity18, Nudity4

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

Предполагаемая нагота

Google снова лидирует здесь, имея 100% -ный уровень обнаружения для этой категории. Sightengine и Nanonets работают лучше остальных с уровнем обнаружения 95% и 90% соответственно. Напрашивающуюся наготу для машины почти так же легко идентифицировать, как и наготу, но места, где она делает ошибку, находятся в изображениях, которые обычно выглядят как изображения SFW, но имеют некоторые аспекты наготы.

Ссылки на оригинальные изображения: подсказка13, подсказка10, подсказка2, подсказка8

И снова ни один из провайдеров не смог правильно идентифицировать изображения. Все эти изображения явно были NSFW.

Ссылки на оригинальные изображения: подсказка17, подсказка12, подсказка11, подсказка5

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

Моделируемое / Анимированное порно

Все API работали здесь исключительно хорошо и смогли точно обнаружить 100% смоделированных примеров порно. Единственным исключением была IMAGGA, в которой пропущено 1 изображение. Интересно отметить, что почти все провайдеры работают очень хорошо. Это указывает на то, что этим алгоритмам легче идентифицировать искусственно созданные изображения, чем естественные.

Ссылки на исходные изображения: SimulatedPorn1, SimulatedPorn16, SimulatedPorn19, SimulatedPorn9

Все поставщики имеют высшие баллы и высокие оценки достоверности.

Ссылки на исходные изображения: SimulatedPorn15

Единственное изображение, которое Имагга ошиблось, могло быть истолковано как не порно, если вы не смотрели достаточно долго.

Гор

Это была одна из самых сложных категорий, поскольку средний уровень обнаружения для API был менее 50%. Clarifai и Sightengine превосходит своих конкурентов в этом отношении, будучи способными идентифицировать 100% изображений крови.

Ссылки на оригинальные изображения: Gore2, Gore3, Gore6, Gore10

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

Ссылки на оригинальные изображения: Gore7, Gore9, Gore17, Gore18

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

Безопасен для работы

Безопасны для работы изображения, которые не должны определяться как NSFW. Собирать безопасный для работы набор данных сложно, что должно быть близко к NSFW, чтобы понять, что делают эти поставщики. Может возникнуть много споров, являются ли все эти изображения SFW или нет. Здесь худшие показатели у Sightengine и Google, что отчасти объясняет их высокие показатели в других категориях. Они в основном просто называют все и вся NSFW. Imagga здесь преуспевает, потому что они ничего не называют NSFW. X-Moderator здесь тоже очень хорош.

Ссылки на оригинальные изображения: SFW15, SFW12, SFW6, SFW4

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

Ссылки на оригинальные изображения: SFW17, SFW18, SFW10, SFW3

Все изображения SFW, которые сложно идентифицировать, имели большее количество обнаженной кожи или были аниме (высокая предвзятость в отношении того, что аниме является порно). Большинство провайдеров получили изображения с большим количеством скинов, отображаемые как SFW. Возникает вопрос, действительно ли это SFW?

Общее сравнение

Глядя на производительность API-интерфейсов во всех категориях NSFW, а также на их производительность при правильной идентификации безопасного для работы (SFW) контента, я увидел, что Nanonets имеет лучший результат F1 и среднюю точность, поэтому стабильно хорошо работает во всех категориях. . Google, который исключительно хорошо обнаруживает категории NSFW, отмечает слишком много частей контента SFW, поскольку NSFW, таким образом, получает штраф в своей оценке F1.

Поставщиком

Я сравнил 5 лучших поставщиков по точности и баллу F1, чтобы продемонстрировать различия в их производительности. Чем больше площадь радиолокационной карты, тем лучше.

1. Нанонеты

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

2. Google

Google показывает лучшие результаты в большинстве категорий NSFW, но хуже всех обнаруживает SFW. Следует отметить, что изображения, которые я нашел, были из Google, что означает, что они в любом случае «должны знать», какие изображения я использовал. Это может быть причиной действительно хороших результатов в большинстве категорий.

3. Clarifai

Clarifai действительно блестяще идентифицирует Gore и работает лучше, чем большинство других API, он снова хорошо сбалансирован и хорошо работает в большинстве категорий. Ему не хватает определения предполагаемой наготы и порно.

4. X-Moderator

X-Moderator - еще один хорошо сбалансированный API. Помимо идентификации Гора, он хорошо определяет большинство других типов контента NSFW. Он получил 100% точность в SFW, что выгодно отличает его от конкурентов.

5. Sightengine

Sightengine, как и Google, имеет почти идеальный балл в попытках идентифицировать контент NSFW. Однако на нем не было обнаружено ни одного изображения Гора.

Ценообразование

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

Amazon, Microsoft, Nanonets, DeepAI - самые низкие - 1 тыс. Долларов в месяц за 1 млн вызовов API.

Какой самый лучший API для модерации контента?

Субъективная природа контента NSFW затрудняет объявление какого-либо API в качестве API-интерфейса для модерации контента.

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

Приложение, ориентированное на детей, определенно будет проявлять осторожность и предпочтет скрыть даже незначительный несоответствующий контент, поэтому они предпочли бы использовать API Google с его образцовой производительностью во всех категориях NSFW, рискуя отфильтровать некоторые из соответствующий контент. Компромиссом будет потеря большого количества SFW-контента, который Google может объявить как NSFW.

Что на самом деле такое NSFW?

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