Software & Компьютерная инженерия
Как ускорить компьютерное зрение с помощью аппаратного обеспечения Fpga
Table of Contents
Неустанное расширение систем видения в реальном времени с высоким разрешением подталкивает обычные процессоры к их архитектурным пределам. Автономные транспортные средства, хирургическая робототехника и промышленный осмотр теперь требуют анализа многомегапиксельных потоков на скоростях, которые оставляют процессоры общего назначения и даже графические процессоры, пытающиеся поддерживать детерминированную задержку в рамках строгих бюджетов мощности. Основная проблема заключается в фундаментальном архитектурном несоответствии: машины фон Неймана отделяют память от вычислений, создавая узкое место, которое ухудшается по мере увеличения скорости передачи данных. Полевые программируемые воротные массивы (FPGA) решают эту проблему, создавая пользовательские, глубоко трубопроводные пути передачи данных, которые обрабатывают данные, когда они проходят через ткань, рассматривая алгоритм как физическую схему, а не последовательность инструкций. Этот подход дает массивный параллелизм, предсказуемое время и энергоэффективность, непревзойденные традиционными процессорами, что делает FPGA критическим компонентом в системах интеллектуального зрения следующего поколения.
Пространственные вычисления: фундаментальный сдвиг
Основным преимуществом FPGA для задач видения является его способность реализовывать пространственную вычислительную архитектуру. Вместо извлечения инструкций и данных из памяти сама логика выполняет операции с данными, поскольку она течет через выделенный трубопровод. Один пиксель, входящий в ткань FPGA, может одновременно проходить несколько путей обработки — один для преобразования цветового пространства, другой для извлечения признаков и другой для движка вывода нейронной сети. Это не временный параллелизм, а истинное аппаратное соответствие. Каждый блок арифметической логики (ALU) и цифровой обработки сигналов (DSP) работает параллельно, и поскольку соединение также программируемо, путь передачи данных соответствует точному потоку данных алгоритма без накладных расходов на общую шину. Для трубопроводов видения, которые по своей сути ориентированы на поток, эта пространственная парадигма предлагает прямой путь к низкой задержке, высокой производительности пропускной способности.
Преодоление стены памяти с помощью пользовательских иерархий
Часто пропускная способность памяти является ограничивающим фактором в компьютерном зрении. Один 4K-кадр при 60 кадров в секунду требует обработки примерно 12 ГБ/с необработанных пиксельных данных. Обычные процессоры полагаются на большие кэши и некристальную DRAM, пропускная способность которой разделена по всем ядрам обработки. FPGA атакуют эту проблему с двух углов. Во-первых, они интегрируют распределенные блоки памяти на чипе (BRAM и UltraRAM), которые могут быть сконфигурированы как FIFO, регистры сдвига или небольшие кэши с обратной стороны. Дизайнеры могут выделять эти блоки для создания пользовательских иерархий памяти, которые сохраняют промежуточные данные локальными для элементов обработки, резко сокращая трафик вне чипа. Во-вторых, архитектура поддерживает явное управление движением данных через двигатели DMA и AXI-интерконнекторы, позволяя предсказуемую, высокоширотную передачу данных между тканью и внешней памятью. Например, ядро скольжения окон может подаваться линейными буферами, хранящимися в BRAM, гарантируя, что вычислительный массив
Картирование современного трубопровода видения для FPGA Fabric
Типичная встроенная система зрения может быть разложена на несколько отдельных этапов, каждый с различными требованиями к вычислениям и памяти. FPGA превосходят, когда эти этапы интегрированы в одно устройство, устраняя задержку и накладные расходы на мощность дискретных чипов.
Сенсорный интерфейс и обработка сигналов изображения
Путешествие пикселя начинается с датчика. FPGA обеспечивают закаленный и мягкий IP для стандартных интерфейсов, таких как MIPI CSI-2, LVDS и SLVS-EC. Прямое вложение датчика избегает необходимости в специальном чипе моста. После захвата необработанные данные Bayer обрабатываются через конвейер процессора сигналов изображения (ISP) - демозаика, баланс белого, гамма-коррекция и денозирование. Эти операции являются интенсивными для памяти, часто требующими нескольких линейных буферов. библиотеки на основе HLS, такие как xfOpenCV (для устройств AMD / Xilinx) обеспечивают высоко оптимизированные, синтезируемые функции, которые отображают эти задачи на срезы DSP и BRAM с минимальным внешним доступом к памяти. Результатом является поток обработки пикселей на часы с детерминированной задержкой, измеренной в микросекундах.
Ускоренная предварительная обработка
Помимо стандартных задач ISP, системы зрения часто требуют геометрических преобразований (размер, аффинные преобразования, коррекция линз) и операций с пикселями (уравнивание гистограммы, пороговое значение). Они досадно параллельны и отображаются непосредственно в ткани FPGA. Например, операция изменения размера изображения с использованием билинейной интерполяции может быть реализована как простой путь передачи данных, потребляющий один пиксель за тактовый цикл. Ключевое преимущество здесь заключается в том, что эти ускорители работают без загрузки основного процессора, позволяя встроенному ядру ARM сосредоточиться на логике принятия решений высокого уровня или сетевой связи.
Глубокий вывод нейронной сети
Ядро современного видения — вывод глубокого обучения. FPGA ускоряют нейронные сети посредством комбинации параллельных вычислительных массивов и агрессивного квантования. Слой свертки отображается в систолический массив блоков мультиаккумуляции (MAC), реализованный с использованием блоков DSP48 в устройствах AMD/Xilinx или затвердевших блоков тензора ИИ в устройствах Intel Agilex. Весы сети квантоваются до INT8, INT4 или даже двоичных форматов для максимизации пропускной способности и минимизации присутствия памяти на чипе. Пост-обучение квантованию (PTQ) и Обучение квантованию (QAT) являются важными шагами в этом рабочем процессе, позволяя командам торговать точностью для производительности. С квантованием INT8 относительно скромная конфигурация FPGA может достигать десятков TOPS, обработка сложных моделей, таких как YOLOv4-tiny или ResNet-18, при частоте кадров в реальном времени.
Постпроцессинг и контрольная логика
После вывода ограничивающие поля, оценки классов и маски сегментации должны обрабатываться алгоритмами немаксимального подавления (NMS) и отслеживания. Эти задачи, ориентированные на принятие решений, часто лучше подходят для процессора. В FPGA, ориентированной на систему на чипе (SoC), они выполняются на закаленных ядрах ARM или на процессоре с мягким ядром, таком как RISC-V, инстанцируемый в ткани. Этот гетерогенный подход гарантирует, что программируемая логика обрабатывает интенсивные потоковые операции данных, в то время как процессор управляет потоком управления.
Синтез высокого уровня: разблокировка производительности
Барьером для внедрения FPGA исторически была сложность языков описания аппаратного обеспечения (HDL), таких как VHDL и Verilog. Созревание синтеза высокого уровня (HLS) фундаментально изменило это, позволив инженерам-программистам описывать ускорители в C++, SystemC или OpenCL и компилировать их непосредственно в аппаратное обеспечение. В то время как понимание концепций цифрового дизайна по-прежнему полезно, HLS абстрагирует низкоуровневое управление сигналами и позволяет разработчикам сосредоточиться на архитектуре алгоритма.
Основные HLS-оптимизации для ядер зрения
Написание эффективного кода HLS требует перехода от последовательного выполнения к конвейерному потоку данных. Для ускорения зрения необходимы три прагмы:
- Пипелайн: Директива «#pragma HLS pipeline II=1» предписывает компилятору достичь интервала инициации одного тактового цикла. Это означает, что новый входной пиксель может потребляться каждый цикл, максимизируя пропускную способность и сохраняя аппаратное обеспечение постоянно занятым.
- Датафлоу: Директива «#pragma HLS dataflow» позволяет осуществлять конвейерирование на уровне задач, позволяя функциям (например, изменять размер, затем фильтровать, затем вычитать) работать одновременно на потоке данных, а не ждать завершения предыдущей функции.
- Разделение массивов: В алгоритмах видения 2D-массивы, представляющие окрестности изображений, хранятся на чипе в BRAM. Директива «#pragma HLS array partition» разделяет одну BRAM на несколько меньших запоминающих устройств, увеличивая количество портов чтения/записи. Это обеспечивает необходимую полосу пропускания для операций раздвижного окна или параллельных вычислений свертки.
Применяя эти директивы, инженер-программист может преобразовать последовательный цикл C++ в высокопараллельный аппаратный ускоритель, способный обрабатывать видео 4K в режиме реального времени.
Проверка и тестирование аппаратного обеспечения в петле
Со-симуляция, где тестбенч C++ используется для проверки RTL-выхода компиляции HLS, является стандартной частью рабочего процесса. Однако наиболее надёжной верификацией является аппаратная часть в цикле (HWIL), где синтезированный битовый поток загружается на FPGA и тестируется с реальными данными камеры. Современные платформы разработки упрощают это, предоставляя предварительно построенные базовые наложения и программные API, которые позволяют разработчикам быстро заменять ядра ускорителей и измерять производительность в живых видеопотоках.
Тематическое исследование: обнаружение объектов в реальном времени на краю
Чтобы обосновать эти концепции, рассмотрим типичное развертывание края: беспилотник или смарт-камера, выполняющая обнаружение объектов в режиме реального времени. Общим базовым уровнем является встроенный графический процессор, работающий на YOLOv3 при 30 FPS. Альтернативный подход использует систему Xilinx Kria K26 System-on-Module (SOM) с пользовательским трубопроводом Vitis AI.
Ткань FPGA разбивается на приемник MIPI CSI-2, легкий трубопровод ISP, ядро размера изображения и ядро DPU (Deep Learning Processor Unit), работающее по квантованной модели YOLOv3. DPU представляет собой настраиваемый жесткий IP-блок, который автоматически ускоряет свертку, объединение и уровни активации. Весь трубопровод соединен через интерфейсы AXI-Stream, обеспечивая передачу данных от датчика к выходу без вмешательства DRAM.
Результаты убедительны. Kria K26 достигает 30 FPS при энергопотреблении всего 7,5 Вт, по сравнению с более чем 30 Вт для сопоставимого встроенного решения GPU. Что еще более важно, сквозная задержка от фотона до ограничивающего ящика составляет менее 80 миллисекунд, детерминированная и свободная от джиттера, введенного драйвером GPU. Для системы предотвращения столкновений на дроне эта детерминированная низкая задержка является требованием к спасению жизни.
Навигация по экосистеме развития
Выбор правильного оборудования и инструментов имеет решающее значение. В экосистеме FPGA для зрения доминируют два основных поставщика, с сильным вкладом с открытым исходным кодом, который снижает барьер для входа.
AMD (Xilinx): экосистема Витиса и Крии
AMD предоставляет наиболее полную платформу для ускорения зрения. Среда разработки Vitis AI включает в себя инструменты для квантования, компиляции и развертывания моделей, поддерживающие TensorFlow, PyTorch и Caffe. Для встроенного зрения ядро DPU бесплатно и масштабируемо по всем линейкам продуктов. Для встроенного зрения портфель Kria SOM предоставляет готовую к развертыванию платформу с пакетами поддержки плат Linux и рынком предварительно созданных ускоренных приложений. Всеобъемлющий дизайн позволяет разработчикам программного обеспечения развертывать вывод FPGA, не касаясь HDL. Для рабочих нагрузок центров обработки данных карты ускорителя Alveo предлагают высокоширотную память (HBM) и связь PCIe Gen 4, подходящую для транскодирования видео в реальном времени и аналитики ИИ.
Intel (Altera): OpenVINO и Agilex
Стратегия Intel сосредоточена на инструменте OpenVINO, который обеспечивает унифицированный API вывода для процессоров, графических процессоров, процессоров Myriad VPU и FPGA. Для ускорения FPGA OpenVINO поддерживает Intel FPGA AI Suite, который компилирует модели в оптимизированные движки вывода, ориентированные на Intel Arria 10 и Agilex FPGA. Интеграция с более широкой экосистемой Intel делает этот сильный выбор для команд, уже использующих другое оборудование Intel. Семейство Agilex FPGA вводит закаленные блоки тензора AI, которые обеспечивают замечательные INT8 TOPS/watt для задач вывода.
Фреймворки с открытым исходным кодом: HLS4ML и FINN
Сообщество с открытым исходным кодом агрессивно расширяет границы доступности FPGA. Такие фреймворки, как HLS4ML, позволяют исследователям компилировать модели Keras и PyTorch непосредственно в код HLS C++, который затем может быть синтезирован в битовый поток. Это обходит компиляторы, специфичные для поставщиков, и дает разработчикам полный контроль над аппаратной архитектурой. Аналогично, FINN (из AMD Research) генерирует высокоэффективные ускорители в стиле потока данных, оптимизированные для глубоко квантованных сетей (двоичные и тройные). Эти инструменты бесценны для исследователей и команд, создающих высокостандартные решения, которые требуют больше, чем просто DPU.
Ссылка 1: Витис Открытый Репозиторий Источника
Ссылка 2: Интел Открытый Инструментарий для ВИНО
Ссылка 3:HLS4ML Framework
Постоянные вызовы в развитии видения FPGA
Несмотря на достижения, разработка FPGA представляет собой реальные препятствия. Основной проблемой является кривая обучения, связанная с проектированием для аппаратного обеспечения. Даже с HLS разработчики должны понимать такие понятия, как конвейерирование, разделение памяти и арифметика с фиксированной точкой для достижения разумной производительности. Ядро C++, написанное без учета аппаратного обеспечения, будет компилироваться в медленный, ресурсоемкий дизайн.
Закрытие времени: По мере того, как проекты становятся все более сложными, соблюдение временных ограничений становится затруднительным. Процесс определения места и маршрута может занять несколько часов, а неожиданная задержка пути требует модификаций RTL или ограничений планирования этажа. Это время итерации значительно больше, чем цикл компиляции программного обеспечения.
Фрагментация экосистем: Перенос дизайна с устройства AMD на устройство Intel является большим усилием. В то время как код HLS, написанный со стандартным C++, несколько портативный, интерфейсы (AXI против Avalon), IP-блоки (DPU против AI Suite) и инструментальные цепи (Vitis против Quartus) совершенно разные. Команды должны взять на себя обязательство перед одним поставщиком для жизненного цикла продукта.
Ограничения ресурсов: FPGA имеют конечные логические элементы. Большая модель нейронной сети может не поместиться на одном устройстве среднего диапазона. Инженеры часто должны прибегать к обрезке модели, уменьшению канала или наклону — разбивая модель на более мелкие части, которые вычисляются последовательно по ткани. Эта сложность добавляет время к циклу разработки.
Следующая граница: двигатели и чиплеты
Траектория развития FPGA движется в направлении глубоко разнородных архитектур. AMD Versal ACAP (Adaptive Compute Acceleration Platform) является ярким примером. Он интегрирует ткань FPGA со скалярными двигателями (ARM-ядрами), адаптируемыми двигателями (логической тканью) и интеллектуальными двигателями (выделенными ядрами AI, оптимизированными для векторной обработки). Эти двигатели AI сидят рядом с программируемой логикой, обеспечивая массивное повышение производительности для плотных умножений матриц, в то время как ткань обрабатывает пользовательские перемещения данных и предварительную / послеобработку.
Архитектура Chiplet еще больше ускорит эту тенденцию. Упаковывая микросхемы из ткани FPGA с чиплетами двигателя ИИ и сетевыми чиплетами в одном кристалле через интерпостер, вендоры могут предлагать масштабируемую производительность без проблем с выходом монолитного кристалла. Для компьютерного зрения это означает, что один чип может интегрировать синтез датчиков, классическую обработку CV, вывод ИИ и вывод дисплея с беспрецедентной энергоэффективностью.
Динамическая частичная реконфигурация:] Эта расширенная возможность FPGA позволяет обновлять часть программируемой логики, пока остальная часть системы продолжает работать. Умная камера может перенастроить блок ускорителя от дневного детектора объектов до ночного анализатора тепловых шаблонов без отключения питания. Это стратегическое преимущество для систем с длительным сроком службы, поскольку обновления могут доставляться по воздуху без аппаратных изменений.
Ссылка 4: Сом Xilinx Kria для встроенного зрения
Строительство на длительный срок
Принятие ускорения FPGA для компьютерного зрения - это инвестиции в архитектуру системы, а не просто замена компонентов. Награды существенны: один FPGA может интегрировать весь конвейер видения, от исходного ввода датчика до обработанного вывода решения, с детерминированной задержкой и минимальной мощностью. Созревание инструментов HLS и поддерживаемых поставщиками библиотек сделало эту технологию доступной для программно-определяемых инженерных команд.
Для команд, создающих системы, где миллисекунды имеют значение, где мощность ограничена или где алгоритмические требования будут развиваться до окончания жизненного цикла аппаратного обеспечения, FPGA обеспечивают наиболее адаптируемую и высокопроизводительную основу. Охватывая пространственную вычислительную модель, разработчики выходят за пределы последовательной обработки и создают оборудование, которое действительно видит в реальном времени.