Задачи компьютерного зрения можно решать без видеокарт

Прогресс в сфере компьютерного зрения сегодня во многом определяется, и ограничивается возможностями устройств для обработки видео. Устройств, чьи производители заинтересованы в постоянном наращивании разрешения, яркости и мощности процессинга максимального числа пикселей — тупиковый путь, с которым CV не по пути. Не пора ли попробовать что-то другое?

Задачи компьютерного зрения можно решать без видеокарт

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

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

Здесь вы говорите, что технологии искусственного интеллекта и машинного обучения уже хорошо развиты и могут помочь в обработке потока визуальных данных. Да, мы слышали, что Sony внедряет в свои камеры ИИ, а бывшие сотрудники Apple запускают «носимую камеру» в партнерстве с OpenAI. Но до сих пор мы видели, как все эти концепты упирались в одну большую и банальную проблему: в реальном мире данных попросту слишком много, и AI/ML-магии не хватает, чтобы обрабатывать их в реальном времени и реальном объеме, необходимом для решения реальных задач. В противном случае, система автопилотирования Tesla могла бы выполнять разворот на 180 градусов так же просто, как любой начинающий водитель.

Маневр, с которым автопилот Tesla пока не справляется

Единицы смысла вместо миллиардов пикселей

TAPe (сокр. Theory of Active Perception — научная разработка Comexp) предлагает и позволяет заменить массивы бессмысленных и не связанных между собой единиц информации — нулей и единиц, пикселей и тд – на значимые. TAPe-единица, или Т-битом, это подмножество наиболее информативных взаимосвязанных элементов информации, содержащихся в выборке данных. Основывая технологии обработки видео на Т-битах, можно передавать гораздо больше значимой информации в единице данных и снизить вычислительные затраты на порядки — для любого класса задач, прежде всего задач, связанных с обработкой видео.

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

Во время тестов с индексацией видео на GPU NVIDIA мы наткнулись на кое-что интересное

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

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

Текущая архитектура GPU не идеальна для задач CV

<i>Для индексации видео с помощью TAPe 99% ресурсов видеокарты не используется</i>
Для индексации видео с помощью TAPe 99% ресурсов видеокарты не используется

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

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

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

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

Если задачи компьютерного зрения не требуют сложности графического процессора, почему бы не использовать что-то другое?

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

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

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

<i>Можно разработать для видеокарт как дополнительные блоки, обрабатывающие информацию в TAPe-формате, так и отдельные TAPe-устройства.</i>
Можно разработать для видеокарт как дополнительные блоки, обрабатывающие информацию в TAPe-формате, так и отдельные TAPe-устройства.

Вот как это могло бы работать

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

Но можно пойти дальше и создать полноценное, самостоятельное [stand-alone] устройство на базе TAPe. Гений Джобса в свое время понял, что лучший продукт должен быть собран с нуля и подчинён концепту на всех уровнях. Оптимизировать только интерфейс, или только форм-фактор, или только обработку графики — а все остальное оставить прежним — неэффективно, а иногда невозможно.

Это позволило Джобсу после серии неудач создать сверхпопулярный продукт, бренд и развить компанию с капитализацией в $2.5 трлн. Создавая устройство, где интерфейс, hardware и software созданы и оптимизированы под работу друг с другом, компания завоевала и коммерческий успех, и технологическое преимущество — даже уступая в чем-то по отдельным характеристикам конкурентам, ее продукты работают эффективнее с точки зрения быстродействия, энергосбережения, удобства и проч. Точно так же TAPe может стать отправной точкой для создания концептов для устройств, которые будут воспринимать реальность и анализировать полученную информацию на порядки эффективней современных технологий.

TAPe могла бы стать основой для альтернативного видеопроцессора будущего

<i>TAPe могла бы стать основой для альтернативного видеопроцессора будущего</i>
TAPe могла бы стать основой для альтернативного видеопроцессора будущего

Если TAPe позволяет избежать ненужных промежуточных процессов и обрабатывать видеопоток напрямую, тратя на это на порядки меньше ресурсов, то и видеокарта для компьютерного зрения не нужна. Как и видеокамера — во всяком случае в ее современном виде. С помощью TAPe можно в режиме реального времени собирать всю необходимую информацию — не в виде тяжелого видеофайла, а в виде TAPe-индекса, не в виде пикселей, а в виде набора значимых TAPe-признаков. Наконец, не в виде ничего не значащих нулей и единиц, а в виде T-bits. В TAPe-формате будет вся необходимая информация для решения любой задачи компьютерного зрения. Для этого можно разработать небольшой TAPe-девайс, «микротаблетку», которая будет получать информацию из реальности в формате TAPe. Как именно это будет происходить, однозначно пока трудно сказать, нужны эксперименты. Но уже сейчас можно трансформировать первичную картинку, полученную через «объектив» любого типа, сразу в TAPe-формат без дополнительной индексации, сжатия, хранения, передачи — вообще без каких бы то ни было преобразований. Такое устройство сможет обрабатывать всю информацию внутри себя и его можно будет установить куда угодно: банкоматы, Tesla, дроны…

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

33
Начать дискуссию