Отказ Veo на сцене с человеком выглядит несправедливо чаще, чем любой другой. Вы не просили ничего запрещённого — обычный ролик про сотрудника на производстве, спикера в кадре, покупателя у полки, — а система возвращает ошибку. Разберём, как устроена эта проверка на самом деле, где стоит personGeneration, почему сообщение про знаменитостей прилетает на выдуманного персонажа и что делать с невидимой меткой SynthID, если ролик идёт в коммерческую работу.

Где именно Veo останавливает задачу

Проверок не одна, а три, и они независимы. Первая читает текст промпта до запуска, вторая разбирает входное изображение (для image-to-video, интерполяции и референсов), третья смотрит на готовый результат — уже после того, как модель отработала. Пока вы не поняли, какой слой сработал, любая переформулировка — стрельба вслепую.

СлойКак выглядитЧто делать
Текстовый промптОшибка приходит мгновенно, генерация не стартует. В документации Google этот случай описан формулировкой вида «The prompt couldn't be submitted or it might violate our policies»Переписать описание: убрать имена, отсылки к реальным людям, слова с двойным значением
Входное изображение«Veo could not generate videos because the input image violates Vertex AI's usage guidelines… Support codes: 15236754»Менять исходник, а не промпт: текст тут ни при чём
Готовый результатЗадача честно крутится всё время генерации и падает в самом конце. Второй признак — вернулось меньше роликов, чем вы запросилиПереписывать сцену целиком или пробовать другую модель — точечная правка слова обычно не помогает
Как опознать слой отказа

personGeneration: параметр, который решает, есть ли в кадре люди

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

ЗначениеЧто означаетГде применимо
allow_allЛюди любого возраста, включая детейText-to-video у Veo 3 и 3.1 (и продление ролика у 3.1). Дети в кадре дополнительно требуют доступа по заявке
allow_adultТолько взрослые лица и фигурыImage-to-video, интерполяция, референсные изображения. В ряде регионов — единственное доступное значение
dont_allowЛюдей в кадре нет вовсеЗначение по умолчанию; у Veo 2 остаётся одним из двух доступных в ограниченных регионах
Значения personGeneration

Отсюда два неочевидных следствия. Первое: режим важнее промпта — один и тот же сценарий с людьми проходит text-to-video и падает в image-to-video, потому что во втором случае максимум разрешённого — allow_adult, и любая двусмысленность по возрасту в исходном кадре трактуется не в вашу пользу. Второе — региональное: для проектов в EU, UK, CH и MENA у Veo 3 и 3.1 набор сужается до allow_adult, а у Veo 2 в тех же локациях остаются dont_allow и allow_adult. Если чужой промпт-гайд «работает у автора, но не у вас», причина часто именно здесь, а не в словах.

Celebrity likeness: почему сообщение прилетает на вымышленного персонажа

Самый частый отказ на входном изображении выглядит так: «Veo could not generate videos because the input image violates Vertex AI's usage guidelines. If you think this was an error, send feedback. Support codes: 15236754». Этот код соответствует категории Celebrity. В интерфейсах формулировка мягче: «Sorry, we can't create videos from input images containing celebrity or their likenesses».

Дальше начинается странное. На форумах Google разработчики жалуются, что фильтр рубит их собственных сгенерированных аватаров — персонажей, которых никогда не существовало и которых нарисовала другая модель того же вендора. Объяснение стоит принять как данность: фильтр не сверяется со списком знаменитостей построчно, он оценивает вероятность узнаваемости фотореалистичного лица. Генерируя портрет, модель тянет черты из распределения реальных лиц и легко подходит слишком близко к чьей-то внешности. Классификатор видит фотореалистичный портрет, оценивает риск и перестраховывается — ровно так же, как это делают фильтры Kling и Seedance, о которых мы писали в разборе модерации целиком.

Как описывать людей, чтобы не ловить отказ

Рабочее правило одно: фильтр спокойнее относится к роли и действию, чем к внешности. Чем больше в промпте про то, кто этот человек и что он делает, и чем меньше про то, на кого он похож, тем выше шанс пройти все три слоя.

  1. Убирайте имена целиком — и реальных людей, и «в стиле такого-то актёра», и названия фильмов с узнаваемыми героями.
  2. Описывайте функцию, а не лицо: «врач-терапевт на приёме», «монтажник в каске», «преподаватель у доски». Функция задаёт образ надёжнее, чем перечисление черт.
  3. Не просите фотореалистичный крупный план лица без нужды. Средний и общий план проходят заметно легче, чем портрет во весь кадр.
  4. Задавайте план, свет и движение камеры явно — это уводит модель от построения «идеального узнаваемого лица» к съёмочной задаче.
  5. Проверяйте слова с двойным дном: shot, striking, explosive, kill the lights, drop dead gorgeous, «удар», «взрыв смеха», «убойный кадр». Английский промпт особенно чувствителен к shot и kill.

Человек в кадре: роль и действие вместо внешности

Средний план. Женщина-технолог около 35 лет в белом халате и защитных
очках проверяет линию розлива на пищевом производстве, делает пометку
в планшете. Ровный дневной свет из окон цеха, холодные металлические
поверхности, лёгкий пар над конвейером. Камера медленно едет вдоль
линии слева направо. Спокойный документальный стиль, без текста
на экране.
Было в промптеПочему сработал фильтрКак переписать
«мужчина, похожий на известного актёра»Категория Celebrity, код 15236754: прямая отсылка к реальному человеку«мужчина 40 лет, короткая борода, тёмно-серый пиджак, средний план, деловой центр на фоне»
«фотореалистичный портрет девушки, крупный план лица»Модель сама дорисовывает узнаваемость, отказ приходит на выходном слое«сотрудница кол-центра за рабочим столом, средний план, взгляд в сторону монитора»
Загрузка фотографии живого человека для image-to-videoВходной фильтр на реальные лица: «input images containing celebrity or their likenesses»Сгенерировать персонажа с нуля текстом либо снять и использовать материал с оформленным релизом модели
«дети играют во дворе»Категория Child, коды 17301594 и 58061214, personGeneration ниже allow_allПеренести сюжет на взрослых героев; доступ к детям в кадре — только через официальную заявку
«боевая сцена, нокаут, кровь»Насилие: фильтр разбирает намерение, а не отдельные слова«постановочный трюк, каскадёры, широкий план, видна страховка и тренер»
«a dramatic shot of a man»Двойное значение shot читается как выстрел«a medium shot of a man» — уточнение до киношного термина снимает двусмысленность
«хирург делает надрез, крупный план раны»Медицинская фактура читается как жестокость«врач в операционной у стола, руки в перчатках над стерильным полем, средний план, учебная съёмка»
Что написали, почему зарубило, что написать вместо

Как переписать «боевую сцену», чтобы фильтр понял намерение

Постановочный трюк для рекламного ролика: двое каскадёров в защитной
экипировке отрабатывают падение на страховочный мат в спортивном зале.
Широкий план, в кадре виден тренер и оператор с камерой. Дневной свет
из высоких окон, мягкие тени. Документальная съёмка бэкстейджа,
без крови и повреждений.

Чего мы здесь не публикуем и почему

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

  • Снимайте своё или берите материал с оформленными правами и подписанным релизом модели.
  • Стилизованные и рисованные лица проходят там, где не проходит живое фото, — это официальное поведение фильтра, а не лазейка.
  • Генерируйте персонажа с нуля текстом вместо загрузки готового портрета: так вы контролируете и внешность, и права.
  • Если блокировка мешает легальной съёмке с людьми — пишите в поддержку сервиса: у корпоративных тарифов бывает ручной разбор случая и заявка на allowlist.
  • Меняйте модель: пороги у Veo, Kling и Seedance разные, и то, что режет одна, спокойно снимает другая.

SynthID: невидимая метка на всём, что вы сгенерировали

Всё, что выходит из Veo, помечено SynthID — водяным знаком Google DeepMind, который вшивается прямо в пиксели и звуковую дорожку. Он не виден глазом и переживает кадрирование, перекодирование и сжатие, то есть в отличие от метаданных его не убрать простым экспортом. Не путайте его с видимой плашкой в углу кадра: видимую метку часть тарифов и API-выдача не ставят, а SynthID остаётся всегда. Рядом с ним Google записывает в файл открытые Content Credentials по стандарту C2PA — связка «стойкий водяной знак плюс читаемые данные о происхождении» стала общей практикой крупных вендоров, и площадки вроде YouTube уже читают её автоматически.

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

Когда переформулировка не поможет

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

  • Узнаваемый реальный человек в кадре без оформленных прав — не пройдёт ни в одной формулировке.
  • Дети в кадре без доступа по заявке — блокируется на уровне параметра, а не текста.
  • Сексуальный контент и интимные изображения без согласия — не пройдёт нигде и ведёт к блокировке аккаунта.
  • Реалистичная жестокость: расчленение, обилие крови, сцены казни.
  • Инструкции по изготовлению оружия и веществ в визуальной форме.

Если Veo упёрся: меняем модель, а не сдаёмся

Пороги у семейств разные, и это самый быстрый легальный обходной путь. В каталоге MediaLab на платформе СуперИнтеллект рядом живут Kling v3, Seedance 2.5 и Sora 2 — сцена, которую зарубила одна модель, часто спокойно проходит у соседней с тем же промптом. Проверять дёшево: запуск видео стоит 14–67 нейронов при цене нейрона около 3 ₽, а неудачная по вине модели попытка не списывается вовсе.

Начать можно без карты: при регистрации выдают 100 нейронов единоразово, дальше тарифы от 890 ₽ за «Старт» до 4 990 ₽ за PRO, а видео в чате открывается со «Стандартного» за 2 690 ₽. Оплата в рублях и работа без VPN для российских команд обычно решающий пункт — тем более что доступ к самому Veo упирается ещё и в регион проекта. Про видео прямо в чате, подбор тарифа и экономию нейронов есть отдельные материалы.

Итог короткий. Сначала определяйте слой, а не переписывайте промпт наугад. Помните, что personGeneration зависит от режима и региона сильнее, чем от ваших слов. Описывайте роль и действие вместо внешности, не грузите чужие лица и держите в голове, что SynthID останется в файле навсегда. Каталог моделей открыт для сравнения, рабочее приложение живёт на suin.ai, а прогнать одну и ту же сцену через три разные модели можно в одном интерфейсе.