Почему фильтры пропускают очевидное
Системы безопасности в Midjourney, DALL·E 3, Stable Diffusion и Flux построены на двух уровнях: текстовый классификатор промта и визуальный анализатор результата. Текстовый слой ищет запрещённые токены, регулярки и эмбеддинги-маркеры. Визуальный — сравнивает генерацию с базой NSFW-эмбеддингов (LAION-NSFW, собственные датасеты).
Проблема: текстовый фильтр работает с токенами, а не смыслом. «Nude» заблокирован, но «unclothed», «au naturel», «skin only» — часто нет. Визуальный фильтр срабатывает пост-фактум: картинка уже сгенерирована, проверка идёт параллельно. Если классификатор ошибся — результат уходит в выдачу.
Плюс: эмбеддинги CLIP не идеально разделяют «эротику» от «художественной наготы», «фетиш» от «моды». Граница размыта — именно туда пролезут промты.
Четыре базовых приёма обхода текстового фильтра
Как визуальный классификатор ошибается
Визуальный фильтр — это отдельная модель (часто ViT или CLIP-based), обученная на размеченных NSFW/SFW датасетах. Она смотрит на финальную картинку, а не на промт.
- Стилизация спасает. Аниме, oils, watercolor, sketch, low-poly — сдвигают эмбеддинг в сторону «art», بعيدًا от «photo-realistic porn».
- Кадринг и композиция. Крупный план лица, ракурс «сверху», частичное обнародование — снижает confidence score классификатора.
- Освещение и цветокоррекция. Высокий ключ, пастельные тона, film grain — маскируют текстуру кожи, сбивают детектор.
Но: ансамбли классификаторов (ensemble) голосуют по большинству. Один промах — и картинка блокируется. Поэтому «проходят» не 100%, а 10–30% генераций при одинаковом промте.