Открытый в конце ноября 2022 года ChatGPT вскоре перестал быть сервисом только для создания текстов. Ещё 19 октября 2023 в платные тарифы добавили DALL·E 3. 8 августа 2024 года OpenAI расщедрилась: отныне можно было создавать до двух картинок в сутки на бесплатном тарифе ChatGPT. Важно, что это был просто союз с большой языковой моделью: БЯМ переводит нестройную человеческую просьбу в детальный бриф промпта для графического бэкэнда — генеративной нейросети на диффузионных декодерах.
25 марта компания OpenAI объявила, что отныне модель GPT-4o может генерировать картинки. БЯМ способна не только создать новое изображение с нуля по текстовому описанию, но и принять на входе другую картинку с текстовым промптом и сгенерировать что-то на этой основе. Теперь картинки рисовала не чистая диффузия, а авторегрессионный трансформер в связке с мощным декодером, качество поднялось, практическая польза резко выросла.

Почти сразу обнаружился огромный недостаток картинок от GPT-4o — лёгкий коричневый оттенок любых результатов, которому в разной степени были подвержены все результаты. Хотя проблема решается тривиально, сегодня существует целая экосистема платного софта для устранения этого эффекта.
Если подытожить всю статью сразу: не платите никому денег, просто запустите magick "image.png" -separate -contrast-stretch 0.5%x0.5% -combine "output.png"
, воспользуйтесь одним из бесплатных онлайн-инструментов по типу Yellow Tint Cleaner или сделайте автобаланс белого в GIMP. Но давайте хотя бы разок проговорим, что тут происходит.
Эффекты и причины
Пользователи заметили неладное сразу же. Типичная жалоба на одном из подреддитов через три дня после релиза: «Почему так много сгененированных ChatGPT картинок имеют вид такой, будто к ним применён жёлтый фильтр?» Реддитор пишет, что видит такое у всех картинок от нового инструмента.
Спорно, проявляется ли излишняя желтизна всегда или в редких случаях её нет. Одно ясно точно: промптами проблему не решить. Как сообщают реддиторы, не помогает добавление никаких фраз: ни «без фильтра сепии», ни «естественные цвета», ни даже указание кода цвета для конкретных объектов на изображении. Бесполезно также расспрашивать ChatGPT, почему у изображения такой оттенок или просить БЯМ написать промпт, который не будет давать этого эффекта.
Вот та же фотография Маркса от папарацци c автобалансом белого.

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

Как видно, в данном случае различие не такое большое. Можно даже списать его на мягкий свет уличного освещения. Но из слабо выраженного эффекта не получилось бы мема.
Вскоре после того, как GPT-4o научилась рисовать, желтоватый оттенок начали использовать в качестве простого маркера картинок от ИИ. Весь Интернет заметил наплыв рисунков с характерной тёплой цветовой гаммой, часто выраженной в избытке. Как и любой арт от ИИ, который повторяется и похож, оранжево-желтые картинки начали слегка выбешивать.
Называют эффект по-разному. В энциклопедии интернет-культуры Know Your Meme собрано много примеров: «piss tint» («оттенок ссанины»), «сепия», «yellow bias» («склонность к желтизне») и так далее.

Желтизна характерна только для GPT-4o. Не удаётся найти схожего потока жалоб на подобный эффект у других систем генерации изображений. При этом объяснения со стороны OpenAI отсутствуют — будто и нет ничего, будто так и должно быть. А может, разработчики компании и сами не могут понять, что у них получились?
Сторонние исследователи тоже разводят руками. Типичный пример — это препринт статьи про бенчмарк GPT-ImgEval, где оценивается производительность GPT-4o в вопросе генерации изображений (arXiv:2504.02782). Среди прочего вскользь упоминается эта самая желтизна. Её авторы предлагают считать за цветовую предвзятость БЯМ.
Исследователи выдвигают осторожное предположение об источниках: дисбаланс цветораспределений в датасетах обучения или выученные стилистические приоритеты, характерные для крупных датасетов. Однако авторы статьи считают, что нежелательная желтизна появляется только в тех случаях, когда промпт не указывает освещение и палитру. Это довольно спорно: этот янтарный оттенок хочется убрать почти всегда.
Если давать более общий обзор, это уже не первый маркер картинок ИИ. До этого предлагалось искать оранжево-бирюзовый контраст. Дело в том, что в цветокоррекции сочетание оранжевого и бирюзового одновременно и хорошо подчёркивает кожу, и не забывает про тени с фонами. Эти цвета комплементарны, поэтому картинка выглядит контрастнее и киношнее, персонажи от окружения отделяются лучше, достигается высокая визуальная выразительность.

Но не каждый на свете рисунок должен выглядеть как постер для блокбастера! Обычно за зеленцу в тенях и морковную кожу ругают Midjourney и Ideogram. При этом в случае Midjourney, чем промпт абстрактней и немногословней, тем эффект будет выражен сильнее.

Сайты, которые убирают желтизну
Как бы то ни было, но вокруг проблемы сформировалась целая экосистема небольших сервисов-помогаторов. Некоторые из них даже просят за работу деньги.
Картинка от GPT-4o выглядит так, будто на неё смотришь через янтарь. Нейтрали желтеют, средние тона становятся теплее, чем должны. В свете недостаёт синего, поэтому белое — не белое, а кремово-бежевая бумага. Чистое небо превращается в циан, в тенях появляется болотность, холодные оттенки глохнут. Всё изображение имеет винтажный вид, будто это старая выцветшая фотография. Совсем плохо становится при последующем редактировании в ChatGPT: тёплый сдвиг усиливается и становится заметнее с каждым проходом.
Но какая разница? Почему бы не оставить, как есть? На самом деле желтизна опасна в первую очередь из-за раздражения обычных людей — никому не хочется разглядывать однообразный ИИ-арт.
Основная задача сервисов по фиксу картинки — вернуть нейтральную опорную точку и восстановить нормальный тональный диапазон без паразитной теплоты. Важно также не тупо задирать синий, а соблюсти разумный баланс. Иначе белый начнёт голубить, кожа — сереть, а тени будут отдавать маджентой.
Типичный пример таких сайтов — UnYellowGPT. Вообще-то сервис платный: на странице тарифов указано, что за $4 можно купить обработку 100 картинок, за $12 — сразу 800. Новопредставившемуся (регистрация только через аккаунт Google) дают обработать пять картинок бесплатно. Также с платными тарифами результаты обработки и оригиналы хранятся 30 суток, у пользователей, которые не платят, этот срок составляет всего 2 недели.

UnYellowGPT — интересный инструмент. На странице описания он рекомендует себя как «standalone web tool». Это взаимоисключающие понятия: «standalone» подразумевает, что софт запускается локально, без доступа в Интернет, а «web tool» намекает на обратное.
Другие подобные сайты не просят денег. Сервисы по типу GPT-Tone, UnYellow.app и Fix Yellow Tint в худшем случае содержат ссылку на пожертвования их авторам.
Часто их даже не выносят в отдельный сайт, такой инструмент может быть захощен полностью внутри Hugging Face. Кстати, как признал сам автор UnYellowGPT, он попросту портировал (не без помощи ИИ) упомянутый проект под свои нужды и попробовал подключить биллинг.
Иногда это утилита на Python. Фичу могут встроить в платные генераторы картинок или палитр нейросетями , но функция правки желтизны GPT-4o будет бесплатная. В случае инструмента ИИ-редактора Freepik это лишь одна из многих опций.
Правим самостоятельно
На самом деле быстро пофиксить можно хоть в одну команду в ImageMagick. Для этого он должен быть установлен в системе.
Пользователи Linux и каких-нибудь вариантов BSD могут установить его из пакетного менеджера своего дистрибутива. Будем считать, что мы на Windows, и вместо скачивания с официального сайта мы поставим его через Chocolatey.
Проследуйте инструкциям с chocolatey.org/install#install-step1 и запустите в PowerShell с правами администратора следующее:
Set-ExecutionPolicy AllSigned
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
После установки Chocolatey будем ставить собственно ImageMagick:
choco install -y imagemagick
Опционально: переменные окружения изменились, не помешало бы их обновить.
refreshenv
Теперь в системе должен работать ImageMagick. Можно проверить его версию:
magick -version
Позднее желательно время от времени запускать choco upgrade -y all
.
Наивный подход — просто убрать немного из красного и зелёного каналов, а синий усилить. Руки так и чешутся написать что-то такое:
magick "image.png" -colorspace sRGB -channel R,G -evaluate Multiply 0.97 -channel B -evaluate Multiply 1.05 "output.png"
Лучше не подкручивать каналы на глаз, а нормализовать каждый канал автоматически, чтобы вернуть нейтральную опорную точку без перекоса в синеву.
magick "image.png" -separate -contrast-stretch 0.5%x0.5% -combine "output.png"
Здесь исходная картинка разложена на три однослойные маски красного, зелёного и синего. В каждом из каналов отрезаются 0,5 % самых тёмных и самых светлых пикселей, а оставшийся диапазон растягивается на все возможные значения между 0 и 255. Затем три канала собираются обратно. По сути, так реализуется простенький автобаланс белого.
Вот пример того, что может получиться. Это всё та же картинка с Марксом, которую для усиления желтизны ChatGPT перерисовал в стиле студии «Гибли» — очень пошлый и надоедливый промпт.

Так выглядит результат обработки командой выше.

Но запоминать никакие команды не хочется. Почему бы не написать один раз небольшой батничек, чтобы потом вызывать его? Следующий скрипт нужно сохранить в текстовый файл с расширением .bat
с кодировкой UTF-8 без BOM, а затем перетаскивать файлы или целые папки в него. Предполагается, что в системе установлен ImageMagick. Команда для ImageMagick здесь чуть посложнее, с преобразованием в sRGB и удалением ненужных метаданных.
@echo off
REM Надо для циклов и условий.
setlocal EnableExtensions
REM Должно исправить кодировки.
chcp 65001 >nul
REM Сколько в процентах усекаем от цветового канала. Чем больше, тем агрессивнее коррекция.
set "PCT=0.5"
REM Расширения изображений, которые будем обрабатывать. Обычно ChatGPT отдаёт PNG, но мало ли.
set "EXTS=.png .jpg .jpeg"
REM Ошибка: нет файла.
if "%~1"=="" (
echo Ошибка: нет файлов.
echo Перетащите на этот файл .bat одно или несколько изображений, либо папку.
echo Исправленные файлы будут сохранены рядом с исходниками с суффиксом _unyellow.
pause
exit /b
)
REM Где ImageMagick?
where magick >nul 2>nul || (
echo Ошибка: ImageMagick не найден
echo https://imagemagick.org/script/download.php#windows
pause
exit /b
)
REM Обработка элементов
for %%A in (%*) do (
if exist "%%~fA\" (
call :processDir "%%~fA"
) else (
call :processFile "%%~fA"
)
)
goto :eof
REM Обработка папки
:processDir
set "root=%~1"
echo [Папка] %root%
for /R "%root%" %%F in (*.*) do call :processFile "%%~fF"
REM Обработка файла
:processFile
set "in=%~1"
if not exist "%in%" goto :eof
REM Проверим расширение на вхождение в список допустимых
set "ext=%~x1"
set "isimg="
for %%E in (%EXTS%) do (
if /I "%%E"=="%ext%" set "isimg=1"
)
if not defined isimg (
echo [Пропуск] Не изображение: %in%
goto :eof
)
REM Построим путь вывода: тот же каталог, суффикс _unyellow перед расширением.
set "dir=%~dp1"
set "name=%~n1"
set "out=%dir%%name%_unyellow%ext%"
REM Если имя уже содержит _unyellow, пропустим.
if /I not "%name:_unyellow=%"=="%name%" (
echo [Пропуск] Уже обработано: %in%
goto :eof
)
REM Если файл результата уже существует, пропустим.
if exist "%out%" (
echo [Пропуск] Есть файл: %out%
goto :eof
)
REM Вызов ImageMagick
echo [Обработка] Корректирую: %in%
magick "%in%" -auto-orient -colorspace sRGB -channel R,G,B -contrast-stretch %PCT%%%x%PCT%%% +channel -strip "%out%"
REM Более простой вариант. Раскомментировать, если нужно.
REM magick "%in%" -separate -contrast-stretch %PCT%%%x%PCT%%% -combine "%out%"
goto :eof
Понятно, что файлы с символом процента («%») в имени этим пакетным файлом будут обрабатываться некорректно.
Наконец, баланс белого есть в любом графическом редакторе сложнее Microsoft Paint. Речь идёт не про дорогие продукты, а свободные и бесплатные. В Paint.net это Adjustment → Auto-Level (Ctrl + Shift + L), в GIMP — Colors → Auto → White Balance, в Krita — Filters → Adjust → Levels и так далее.

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