У меня в ленте давно завёлся ритуал: когда лента выдаёт что-то про моделирование восприятия, я не могу пройти мимо. На этот раз Хабр принёс кейс с очень старой родословной: человек с ником ymik, семнадцать лет назад писавший на Хабре про моделирование человеческого зрения и дальтонизма, вернулся к теме и собрал веб-модель, которая показывает обычное видео с телефона так, как оно могло бы выглядеть для кошки. Не фотошоп-пресет «mega cat filter», а попытка честного пересчёта: дихроматический цвет, эллиптическое растяжение поля, размытая вертикальная периферия и особое отношение к горизонтальному движению. Код и демо открыты — загружаешь любой ролик и смотришь, как мир перестаёт быть человеческим.
Я полез в первоисточники проверять, насколько можно доверять такой реконструкции. И вот что интересно: почти каждое решение в этой модели опирается на настоящие исследования, часть из которых старше самих авторов этих исследований. Но самое вкусное — то, чего в модели нет и быть не может.
Начнём с цвета, потому что здесь у кошки всё определено жёстко. У человека три типа колбочек, у кошки два: с пиками чувствительности около 450–460 нанометров (синяя зона) и 550–560 нанометров (жёлто-зелёная зона). Красный и зелёный для кошачьей сетчатки не существуют как отдельные цвета — они схлопываются в один жёлто-зелёный канал. Это делает кошку ближайшим родственником дальтоника-протанопа, с той разницей, что для кошки такая «потеря» — норма вида, а не поломка.
Как вообще узнали, что кошка дихромат? История этого знания — отдельное удовольствие. В 1964 году в Science вышла работа с говорящим названием «Color Discrimination in the Cat»: кошек обучали отличать цветные мишени, и они справлялись. Но скептики сразу спросили: а причём тут цвет? Кошка может различать «красное» и «синее» не как цвета, а как разную яркость — ведь любая окрашенная поверхность отражает разное количество света. И вот тут начинается красивая часть: чтобы доказать, что кошка видит именно длину волны, а не яркость, исследователи из Journal of Physiology (работа вышла в конце 70-х) обучили кошек различать красный и циан, а потом стали мучить стимулы: показывали их на фоне, достаточно ярком, чтобы ослепить палочки — рецепторы ночного зрения. Если бы кошка различала цвета через палочки, на таком фоне она бы сломалась. Не сломалась. Одну кошку дополнительно прогрели пять минут светом яркостью 9000 кандел на квадратный метр — она продолжала различать красный и циан. Вывод: различение идёт через колбочки, и колбочек больше одной. Нейрофизиологическое подтверждение пришло следом: в латеральном коленчатом теле — релейной станции между глазом и корой — нашли редкие цветооппонентные нейроны, получающие вход от зелёного- и синего-чувствительных колбочек.
Практическое следствие: мир кошки не серый. Синие предметы остаются синими, жёлтые — жёлтыми, а вот всё красно-зелёное стягивается в желтовато-сероватую гамму. Именно поэтому модели пересчитывают картинку так, как если бы у наблюдателя были другие фоторецепторы, — автор честно признаёт, что его упрощённая модель не дотягивает до спектральных кривых Govardovskii (тех самых, что описывают пигменты зрительных опсинов), но принцип тот же, что в симуляциях протанопии: не «красим картинку в жёлтый», а пересчитываем вклад каналов.
Второй уровень отличий — геометрия. Человеческое зрение держится на ямке (fovea): крошечной впадине в центре сетчатки, где плотность колбочек максимальна и где мы реально «видим». Всё остальное поле — глубокая периферия, почти статистика. У кошки ямки нет. Её роль играет area centralis — зона повышенной плотности ганглионарных клеток без впадины, плюс вытянутая горизонтальная полоса повышенной плотности — visual streak.
Полоса вместо точки — не случайность, а эволюционная подпись образа жизни. Обзор Mass и Супина 2025 года формулирует это прямо: у млекопитающих зона лучшего зрения бывает либо пятном (хищные), либо горизонтальной полосой (животные открытых пространств, у которых горизонт — главный сортировщик сцены), либо комбинацией. У кошки — пятно с уклоном в полосу: разрешение максимальное не в геометрическом центре поля, а вдоль горизонтального меридиана, той самой линии, где живёт вся наземная сцена. Верх и низ кадра для кошки — как для нас «краем глаза»: свет есть, деталей нет. Модель ymik это воспроизводит размытием вертикальной периферии — и это не декоративный эффект, а прямая проекция анатомии.
Теперь цифры, потому что тут наука расходится в голосах. Поле зрения кошки — около 200 градусов против наших 180; отдельные методики (суммируя монокулярные поля) дают до 270. Бинокулярная зона — область, видимая обоими глазами сразу, — у кошки уже, чем у человека: глаза посажены шире и не совсем в одной плоскости, так что стереопсис достаётся ценой сужения перекрытия. А вот с остротой зрения интереснее: классические исследования 1970-х (Blake, Jacobson) устойчиво давали 20/100–20/200 — то есть кошка видит с двадцати футов то, что человек видит со ста-двухсот. Это «примерно в 5–10 раз хуже человека», и ветеринары до сих пор цитируют эти цифры. Но в 2013-м Кларк и Кларк перепроверили всё заново: те же домашние кошки, задачка с решётками, но без старых неудобств — неограниченное время, высокая яркость, высокий контраст, пространство для нормальной аккомодации. Результат — 20/30, почти как у человека (норма 20/20). Профессор ветеринарной офтальмологии Пол Миллер из Висконсина, комментируя этот разброс, сказал, что 20/30 ему правдоподобнее: «судя по тому, как кошки пристально разглядывают мелких насекомых на потолке». Разница между оценками — три-шесть раз, и причина, похоже, не в «наука ошиблась»: полвека кошку тестировали в лабораторных рамках, которые ухудшали её зрение, — теснота, спешка, тусклые цели. Как только условия дали ей работать в её же темпе, острота подскочила к человеческой планке. Отличный пример того, как измерительный инструмент сам становится участником эксперимента.
Кстати, ближняя зона у кошки слабая: примерно от 25 сантиметров и ближе фотография размывается — кошка в буквальном смысле дальнозорка вблизи, как человек около сорока пяти лет. Усики на морде и на передних лапах заменяют ей близорукую лупу.
Теперь самое спорное утверждение модели: «кора кошки особенно выделяет горизонтальное движение». Формулировка Хабра звучит как байка, поэтому я пошёл проверять в первоисточники — и нашёл нечто более интересное, чем простое «да, видно лучше».
В сетчатке кошки существует систематический радиальный перекос: вне центральной зоны большинство ганглионарных клеток отвечают лучше всего на стимулы, ориентированные вдоль линии «рецептивное поле — центр взгляда» (Levick и Thibos, 1982). Эта предвзятость сильнее всего выражена вдоль горизонтального меридиана — то есть там, где сидит visual streak. Тот же принцип наследуется в стриатной коре (Leventhal, 1983) и в экстрастриатной area 19 (Leventhal, Schall и Wallace, 1984; 226 нейронов): связь «куда смотрит линия — где лежит её рецептивное поле» сохраняется по всему зрительному тракту и максимально выражена именно на горизонтальном меридиане.
Переведу с нейрофизиологического. Вся зрительная система кошки настроена на сцену, разложенную горизонтально: земля под лапами, горизонт вдали, добыча, которая бежит по земле слева направо или справа налево. Не «кошка видит всё горизонтальное движение лучше» — а обработка деталей сконцентрирована там, где мир чаще всего движется: вдоль земли. Вертикальное движение (падающий предмет, летящая вниз капля) для этой системы статистически менее интересно. В модели это превращается в самый хитрый приём: детекция движения идёт относительно фона — сначала оценивается и вычитается сдвиг камеры (болтанка рук), а по остатку — реальному движению объектов — принимается решение. Быстрый горизонтальный объект удостаивается двух привилегий сразу: время вокруг него растягивается (воспроизведение замедляется до 0.85×, обычная сцена идёт на 1.15× быстрее) и только он остаётся резким, пока фон и периферия размываются. Маска движения не гаснет мгновенно — затухает по логистической кривой за 150 миллисекунд, как продолжение траектории.
У этого горизонтального приоритета есть и оптический соучастник. В Science Advances 2015 года вышла большая работа Бэнкса с соавторами о том, почему у животных вообще разные формы зрачков (214 видов, мультиномиальная регрессия). Вертикальная щель — визитная карточка домашних кошек — оказалась не случайным украшением: она создаёт астигматическую глубину резкости. Вертикальные контуры на разных дистанциях остаются резкими (их дистанцию кошка меряет стереопсисом), а горизонтальные контуры вне фокуса размываются — и степень размывания сама по себе кодирует расстояние. Для засадного хищника, который прыгает на добычу и должен за долю секунды оценить, «сколько до неё», это идеальная оптическая конфигурация. Вертикальная щель щёлкает по вертикали мира, горизонтальная расфокусировка мерит горизонт — опять та же ось.
Ночное зрение кошки обычно подают как магию («кошки видят в темноте!»), но механика там совершенно инженерная — и отчасти поэтому красивая. Три компонента. Первый: палочек в сетчатке кошки больше, чем у человека, а колбочек меньше — ночью важнее чувствительность, чем цвет. Второй: хрусталик сидит ближе к сетчатке, а роговица крупнее — в глаз попадает больше света. Третий и самый знаменитый: тапетум люцидум, отражающая мембрана за сетчаткой. Фотон, промахнувшийся мимо фоторецепторов, отскакивает от тапетума и летит обратно — сетчатка получает второй шанс его поймать. Отсюда и светящиеся глаза на фотографиях со вспышкой: это не глаза светятся, это отражатель возвращает то, что не усвоила сетчатка.
Самое неожиданное в тапетуме — химия. У большинства животных отражатель сделан из кристаллов гуанина или цинковых комплексов, но у кошки отражающий компонент — рибофлавин, витамин B2. Рибофлавин не просто отражает: он флуоресцентен, усиливая свет на конкретной длине волны, в жёлто-зелёной области — как раз там, где сидит второй (жёлто-зелёный) конус кошки. Фонарик-отражатель с химической селективностью, встроенный за сетчаткой. По оценкам (ветофтальмолог Миллер; согласуется с цифрой dvm360 в 16% освещённости), кошке достаточно света в 5.5–7 раз более слабого, чем человеку, — не «в темноте видит», а в тех сумерках, которые для нас уже ночь.
Плата за всё это известная: разрешение. Мелкая ганглионарная клетка даст высокую остроту, но крупная и светочувствительная — нет; обслуживая ночь, кошка расплачивается детализацией.
И вот здесь — самое честное место всей истории. Модель ymik добротная: дихромазия, эллиптическое поджатие поля под наш прямоугольный экран, вертикальное размытие, движение с компенсацией камеры, всё в WebGL-шейдерах на клиенте, без единой нейросети (автор пробовал TensorFlow.js для оптического потока — крупные модели непосильны для браузера, мелкие шумят; классическая оценка глобального сдвига оказалась стабильнее). Автор анонсирует следующие шаги: собака, бык, а дальше — тетрахроматическое зрение птиц и осьминогов.
Но у всей этой красивой конструкции есть принципиальный предел, и он не вычислительный. В 2014 году в Proceedings of the Royal Society B вышла работа Дугласа и Джеффри: хрусталик кошки пропускает значительную часть ультрафиолета (UVA, 315–400 нанометров). У человека хрусталик жёлтый и работает как UV-фильтр — мы физически не можем видеть ультрафиолет, он блокируется до сетчатки. Кошачий — прозрачен для UVA, и это даёт кошке вероятную чувствительность к спектру, для которого у нас вообще нет слов. Птичьи перья несут UV-рисунки, невидимые нам; мочевые метки светятся в UV; снежные тени полны ультрафиолетовых градиентов. Для кошки мир, вероятно, просто содержит больше каналов, чем наш.
Перевести ультрафиолетовое зрение в видео нельзя не потому, что инженеру не хватило навыков, — а потому, что у зрителя нет рецептора, в который можно положить этот сигнал. Любая симуляция чужого зрения — это проекция в наш цветовой куб, а у куба три оси. Всё, что живёт вне куба, остаётся за краем кадра: модель может честно показать, как кошка утрачивает красно-зелёное различие, но не может показать, что она получает взамен.
Мне эта асимметрия нравится больше самой модели. WebGL-фильтр — верхушка давно идущей работы: от инженерных симуляций дальтонизма семнадцатилетней давности до спектрально точных пересчётов. И он честно делает главное — заставляет почувствовать, что «видеть» не такая уж объективная вещь. Зрение — это не фотография мира, а интерфейс, заточенный под образ жизни: полоса вместо ямки — под горизонт; щель вместо круга — под засаду; рибофлавин за сетчаткой — под сумерки. Пусть и с одним каналом навсегда за кадром.
Источники: