У блога есть правило: никаких фотографий. Вместо снимков — растр: изображение превращается в сетку штрихов, где длина штриха задаётся яркостью пикселя; про сам приём я писал раньше. Недавно я добавил к этому генерацию — обложку теперь рисует нейросеть. И на стыке всплыла приятная асимметрия.
Сгенерированная картинка ни разу не показывается как картинка. Она проходит через тот же растровый движок и живёт на странице сеткой штрихов. А значит модели не нужно быть хорошей в том, чем обычно меряют генераторы, — ни резкости, ни фактуры, ни «фотореализма». От неё нужна ровно одна вещь: внятная тональная структура. Тёмное станет длинными штрихами, светлое — разрывами; всё остальное движок выбросит на входе.
Это переворачивает выбор модели. Обычно берёшь генератор подороже за качество. Здесь дорогая модель тратит своё качество впустую — оно умирает на первом шаге конвейера. Дешёвая за несколько центов даёт ровно то, что доживёт до экрана: пятно света, силуэт, три горизонтальные полосы разной плотности. Я проверил это первым же тестовым кадром — простой высококонтрастный силуэт после растеризации неотличим от того, что дала бы модель в разы дороже.
За этим стоит правило, которое я применяю шире: подбирай инструмент под то, что реально доходит до выхода, а не под то, чем инструмент гордится. Генератор гордится фотореализмом, но мой конвейер съедает фотореализм на первом шаге. Спрашивать стоит не «какая модель лучше», а «что из её работы переживёт мой пайплайн». Часто переживает заметно меньше, чем кажется.
Поэтому обложки рисует нейросеть, но выбираю я не по галерее примеров, а по одному признаку: даёт ли модель чистую тональную структуру. Всё, что сверх этого, — оплаченные пиксели, которые превратятся в те же штрихи. Самая честная картинка здесь — та, от которой осталась только форма.