Когда-нибудь спрашивали себя, какие технологии должны быть в башке терминатора из фильмов Джеймса Кэмерона, чтобы он (терминатор) мог обрабатывать данные так, как он это делает в дилогии? (Остальные сиквелы/приквелы за фильмы мы не считаем – третья часть получилась вопреки желаниям создателей плохой комедией; последующие – попсовой стыдобой; более-менее спин-офф "Да придет спаситель", но и там слишком часто приходится протирать экран от липкой тонкой пленки плохого пафоса).

на ручной иллюстрации художника (а не ИИ) схематично показано, как криво, то есть неэффективно устроены сегодняшние технологии обработки/работы с видео
на ручной иллюстрации художника (а не ИИ) схематично показано, как криво, то есть неэффективно устроены сегодняшние технологии обработки/работы с видео

Птичьего крыла краса

Если бы терминатор работал на современных технологиях, ему понадобилась бы голова размером с дом. Наверно, ему бы пришлось таскать с собой холодильники, которые охлаждали его постоянно перегревающиеся "мозги" — ну и все равно у него ничего не вышло бы. Потому что человечество еще не изобрело технологии такого уровня – речь именно об эффективном (и энергоэффективном) компьютерном зрении. Только не приводите в пример Tesla, пожалуйста: терминатор в фильме умеет видеть, распознавать, классифицировать объекты примерно как человек; Tesla в этой точке не окажется никогда (и автопилота там тоже никогда не будет, если не появятся принципиально другие технологии).

В реальном мире – а не во влажных фантазиях технократов-продавцов и их поклонников –данных попросту слишком много, и ИИ/МО-"магии" не хватает, чтобы обрабатывать их в реальном времени и реальном объеме, необходимом для решения реальных задач. Если бы вам пришлось раскладывать все, что вы видите, на пиксели, то всех видеокарт и всех графических процессоров мира не хватило бы для анализа и генерации осмысленного (необходимого для принятия решений и действий) результата за разумное время.

Поэтому мы пошли тем путем, которым шла наука на протяжении всей своей истории: подсматривала за природой: за падающим яблоком, крылом птицы, движением ветра и воды, лучом света, глазом человека и т.д. А мы подсматриваем за мозгом человека, а именно за тем, как он обрабатывает информацию. И делаем выводы!

Когда-то отцы-основатели искусственного так называемого интеллекта начали примерно с того же, захотев воссоздать человеческий интеллект. Но в итоге прельстились ничтожными (по сравнению с первоначальной задумкой) практическими результатами, создав, правда, кучу действительно полезных, сложных, прекрасных инструментов, которые помогают обрабатывать информацию доселе невиданными в мире технологий способами. Машинное "обучение" (хотя и этот термин нуждается в поправке) включило новую гонку вооружений –вместо реального технологического развития, которое бы позволило решать задачи принципиально иного уровня. Никакой интеллект при этом так и не появился, конечно, да и никогда не появится. То, что происходит сегодня – тупиковая ветвь развития, если говорить именно о создании "интеллекта".

Но не все так плохо.

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

При работе с видео мы используя алгоритмы на основе TAPe. Это позволяет решать задачи компьютерного зрения на порядки быстрее и эффективней любых других известных вам (и нам) технологий. Но всякий раз нам приходится конвертировать видео из стандартных форматов в формат TAPe (файлы состоящие из единиц, гениально прозванных T-bit) или TAPe-индекс. В нашем случае индексация видео — это процесс построения TAPe-индекса за счет получения TAPe-признаков из видеофайла.

Индексация видео – самая ресурсоемкая задача, занимающая примерно 99,9% процесса — поэтому мы начали искать способы сделать это быстрее. В поисках оптимального решения еще несколько лет назад мы сравнили индексацию видео на разных устройствах, и в их числе сравнили эффективность CPU и GPU от NVIDIA. Выбрав для первых тестов одну из младших моделей видеокарт NVIDIA, мы обнаружили, что для решения задачи индексации хватало всего десяти ядер, или 20% загрузки полной мощности видеопроцессора. Причем мы не могли загрузить все ядра видеокарты на 100%, зато на обычных CPU легко достигали загрузки на полную мощность, и при этом получали сопоставимый результат.

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

Вся ИТ-индустрия сегодня заточена на обработку огромных массивов данных . CPU по-своему идеален: маленькая штуковина, которая умеет делать практически всё. В то же время из-за этой универсальности с узко специфичными задачами — например, обработкой графики, — CPU просто справляются, а не справляются максимально эффективно.

GPU лучше справляются с обработкой конкретного типа массивов данных — пикселей, из которых состоит цифровое изображение. Чтобы выводить на экран, например, 120 раз в секунду 4K-изображение, нужно посчитать цвет миллиарда пикселей. Их считают вычислительные блоки, из которых состоят ядра GPU. В современных GPU ядер может быть несколько тысяч. Соответственно, огромное число вычислительных блоков очень быстро делает параллельные вычисления с большим количеством данных. Например, до 38 трлн операций в секунду — и всё это, чтобы вы могли играть в видеоигру или майнить крипту.

Источником данных для видеокарты может быть программа (например, видеоигра), видеокамера и пр. Поступающую информацию видеокарта обрабатывает и выводит дальше на экран. Для этого на видеокарту установлены аппаратные блоки с энкодерами и декодерами, которые кодируют/декодируют видео, делая размеры видеофайлов меньше с помощью сжатия, и работают независимо от CPU и GPU. А еще поступающую на видеокарту информацию надо где-то хранить, пока она обрабатывается — для этого на карте установлены модули памяти VRAM.

Тысячи ядер, 1% загрузки: где теряются TFLOPS

Когда мы провели тест по индексации видео на видеокарте уже с тысячами ядер, мы надеялись, что получим многократный прирост производительности. Но оказалось, что и тогда загружаются не более 1% ядер. Получается, что для индексации видео с помощью методов TAPe 99% ресурсов видеокарты не используется. И если бы мы захотели загрузить все эти тысячи ядер на 100%, нам потребовалось бы тысячи энкодеров/декодеров — только тогда они смогли бы обеспечить ядра таким объемом информации, чтобы ядра работали на полную. Но таких видеокарт не существует (на потребительских видеокартах обычно установлена одна пара, на профессиональных не больше 3, на серверных — до 8; видеокарта с 40 аппаратными декодерами, созданная специально для обучения ИИ, стоила пару лет назад $120 тыс).

Вот небольшой скринкаст с тестами:

Формирование, хранение, обработка изображений — эти ресурсоемкие процессы не только не участвуют в «извлечении смысла» из видеопотока для задач компьютерного зрения, но напротив, мешают его извлекать, разбирая картинку на технические, формальные, ничего не значащие элементы — пиксели (представьте разбитую на песчинки статую Давида — какой понадобится суперкомпьютер, чтобы снова ее собрать? никакой).

Компьютерное зрение может обходиться без всех этих сложных этапов сжатия, извлечения, хранения информации (в данном случае информация — это последовательность изображений, кадров, BMP-файлов и т.д.), да и без самих изображений в принципе, и не терять на этих процессах производительность видеокарт. Для этого нужно научить девайсы воспринимать реальность и обрабатывать информацию для решения задач компьютерного зрения – так, как это делает TAPe.

Мы работаем с видео и изображениями, не "разрушая" их на пиксели

TAPe не «разрушает» картинку на отдельные пиксели. Методы, основанные на этой теории, позволяют нам снимать с реальности минимально необходимое количество признаков, чтобы затем обрабатывать полученную информацию и решать любые задачи компьютерного зрения. Пруфы, например, тут, но вообще в любой нашей статье на Хабре (но кому нужны пруфы? в мире, где пассажир может корчить недовольную рожу, что вай-фай в самолете недостаточно хорошо работает, не понимая, какое это технологическое чудо – вай-фай в самолете, нам уже прилетало, что наша детекция распознала трамвай как автобус там, где даже человеку непонятно, трамвай это или автобус:

и это при том, что нам для детекции нужно в тысячи раз меньше ресурсов и параметров, а для обучения нашей модели на новом классе объектов – в те же порядки меньше инфы).

Для TAPe неважно, откуда получать свои значимые признаки: из цифровых изображений или прямо из реальности. На примере эволюции обработки видео можно увидеть, как появились дополнительные устройства — видеокарты, как затем совершенствовались сами видеокарты. Сейчас на них установлены GPU c разными блоками (текстурные, шейдерные), каждый из которых отвечает за свои задачи. Появились специализированные ядра — тензорные, рейтрейсинг. Точно также можно разработать для видеокарт как дополнительные блоки, обрабатывающие информацию в TAPe-формате, так и отдельные TAPe-устройства.

Такой блок будет выполнять задачи по обработке видеопотока для задач компьютерного зрения, забирая не более 1% ресурсов видеокарты: делать TAPe-слепок с реальности и обрабатывать его своими методами, и все это одновременно с основным процессом видеокарты. И сможет он это делать еще до создания следующего кадра. Это возможно при любом FPS: 25 кадров/сек, 60 кадров/сек, 120 и пр.

Как вы уже поняли, TAPe позволяет избежать ненужных промежуточных процессов и обрабатывать видеопоток напрямую, тратя на это на порядки меньше ресурсов. Поэтому нам и видеокарта для компьютерного зрения не нужна. Как и видеокамера — во всяком случае в ее современном виде. С помощью методов TAPe можно в режиме реального времени собирать всю необходимую информацию — не в виде тяжелого видеофайла, а в виде TAPe-индекса, не в виде пикселей, а в виде набора значимых TAPe-признаков. Наконец, не в виде ничего не значащих нулей и единиц, а в виде легендарных T-bits.

Уже сейчас мы можем трансформировать первичную картинку, полученную через «объектив» любого типа, сразу в TAPe-формат без дополнительной индексации, сжатия, хранения, передачи — вообще без каких бы то ни было преобразований. Представьте себе устройство, которое сможет обрабатывать всю информацию внутри себя и его можно будет установить куда угодно: банкоматы, Tesla, дроны, пуговицы, велосипеды, холодильники…

Мы уже готовы пилить принципиально новый кодек, но по пути к мировому доминированию создали первый в мире поиск видео по видео с принципиально новым деревом поиска TAPe-database – которые пока еще не востребованы, как не были бы востребованы и в благословенные Средние века. Просто потому, что никому в голову не приходит, что с видео можно работать как с видео, а не через описание, хэши, ватермарки, тэги и проч. (Приходится придумывать новые тэги для хабра про индексацию видео, поскольку кроме нас этой штукой никто в мире толком не умеет заниматься). Но вода камень точит.

TAPe может применяться ко всем задачам компьютерного зрения одновременно и универсально, то есть практически с идентичным подходом к разным задачам: потому что TAPe снимает одномоментно достаточное количество информации или достаточное количество признаков с изображения/видео для решения этих задач. Одномоментность означает, что единожды получив эти признаки, не нужно при решении новой задачи заново признаки извлекать, разрабатывать новый алгоритм, продукт - как это происходит сейчас, когда нужно, допустим, распознавать номера машин, опасные предметы, лица, морды, рыла, и т.д. TAPe-признаков достаточно, чтобы решать все эти задачи одновременно, параллельно.

По ссылке можно поиграться с детекцией на COCO-датасете (если не знаете, что это такое – не берите в голову) или обучить пока еще безымянную модель на собственном классе изображений (понадобятся минимальные навыки уровня “могу написать команду в командной строке”). По запросу отправим ключ для тестирования. Пишите мне в телегу @oopatow например.

Комментарии (1)


  1. kolabaister
    04.05.2026 13:44

    А как насчет аналоговых компьютеров? Есть вполне перспективные разработки для компьютерного зрения. Терминатор вполне мог бы работать на таком.