Статья посвящена вопросам применения машинного зрения во встраиваемых системах. Автор не рассматривает алгоритмов обработки видеоинформации и датчики (видеокамеры). Основное внимание уделено компонентам, с помощью которых реализуется обработка видеоинформации.
Машинное зрение пока не входит в набор обязательных функций процессора, однако очень скоро ситуация изменится. Если не все, то большинство электронных устройств, в том числе портативных, будут оснащены функцией распознавания визуальной информации. Такие продукты как контроллер Microsoft Kinect или системы помощи водителю Mobileye подтверждают перспективность использования машинного зрения.
Машинное зрение позволяет выделять информацию из визуальных сигналов. Оно может быть полезным во множестве приложений: в автомобиле — для предотвращения аварий, в системах безопасности, на сборочных конвейерах, в медицинском и военном оборудовании, в оптических системах распознавания, и может даже применяться для отпугивания комаров (см. рис. 1).
Рис. 1. Примеры использования машинного зрения
|
До сих пор эта технология была слишком дорогой для повсеместного использования. Достижения в области полупроводниковой электроники делают ее доступнее для массового потребителя (см. рис. 2). По этому же пути развивались и беспроводные технологии. Кстати, изначально огромный потенциал беспроводной передачи тоже не был очевиден.
Рис. 2. Общая структура блока машинного зрения
|
Алгоритмы машинного зрения являются очень ресурсоемкими (см. рис. 3). Для VGA-обработки 30 кадров в секунду требуется производительность примерно 3 млрд операций в секунду, хотя эта цифра может сильно меняться в зависимости от скорости считывания пикселов и сложности алгоритма. Для корректной интерпретации полученной визуальной информации необходимо решить ряд проблем. Например, компенсировать искажения, которые вносят оптические системы (линзы). Одним из возможных решений является коррекция на основе эталона. Производится сравнение полученной картинки с эталонной и определяются корректирующие коэффициенты для всех пересечений (см. рис. 4). Калибровка производится единожды, однако каждый кадр придется обрабатывать с учетом этих коэффициентов.
В то же время алгоритмы должны быть реализованы так, чтобы энергопотребление и стоимость были минимальными. В подобных случаях используют отдельный прикладной процессор или ускоритель. Пользователь обычно не имеет к нему доступа и не может вносить изменений в программу. Такой подход допустим и в случае беспроводной системы передачи данных, поскольку протоколы обмена имеют много общего. Однако универсального алгоритма машинного зрения нет. Наоборот — для каждой задачи есть свой алгоритм. Более того, эти алгоритмы постоянно меняются. Соответственно, использовать дополнительные процессоры или ускорители без возможности перепрограммирования нецелесообразно.
Рис. 3. Общий алгоритм машинного зрения
|
Рис. 4. Калибровка оптической системы
|
Добиться высокой производительности и программируемости при сохранении низкой стоимости и низкого потребления сложно. Специализированные платформы обеспечивают высокое быстродействие и низкую стоимость, однако не имеют возможности перепрограммирования. Процессоры общего назначения могут быть многократно программируемы, однако не обеспечивают высокого быстродействия или низкого потребления. Для функции машинного зрения потребуется несколько обработчиков, например, процессор общего назначения — для эвристического и сложного процесса принятия решений, доступа к сети, интерфейса пользователя, управления памятью и всей системой; высокопроизводительные сигнальные процессоры — для работы в режиме реального времени и выполнения несрочных задач или несложных процедур; один или несколько параллельных обработчиков — для несложной обработки со скоростью следования пикселов.
Для реализации встроенной функции машинного зрения подходит любой процессор, однако наиболее подходящими являются:
– встраиваемые процессоры с высокой производительностью;
– специализированные СБИС в сочетании с вычислительным ядром;
– графический процессор с вычислительным ядром;
– сигнальный процессор с ускорителями и вычислительным ядром;
– мобильный прикладной процессор;
– FPGA с вычислительным ядром.
Рассмотрим каждый тип подробнее.
Во многих случаях они не обеспечивают необходимой производительности, либо при этом возрастает их стоимость или расход энергии. Часто слабым звеном становится полоса пропускания микросхем памяти. Она должна быть большой, поскольку в алгоритмах машинного зрения используется большой объем данных, причем многократных обращений к одним и тем же данным не производится. Микросхемы памяти во встраиваемых процессорах не предназначены для таких потоков.
Тем не менее в пользу встраиваемых процессоров говорит несколько факторов. Во-первых, в большинстве встраиваемых систем используется процессор для тех или иных задач. Если на нем к тому же можно реализовать алгоритм машинного зрения, это стоит сделать, чтобы избежать излишней сложности системы. Во-вторых, большинство алгоритмов машинного зрения изначально выполнялись персональными компьютерами на процессорах общего назначения с применением соответствующих программных инструментов. Схожесть встраиваемых процессоров и процессоров ПК означает, что эти же задачи без труда можно выполнить на встраиваемом процессоре. Наконец, встраиваемые процессоры являются самыми простыми в использовании, особенно если принять во внимание разнообразие инструментов и средств разработки, операционных систем (ОС) и примеров разработки. Пример встраиваемого процессора — Intel Atom E660Т.
Специализированные СБИС представляют собой кристаллы с высокой степенью интеграции, разработанные под конкретные приложения. Они могут использоваться с отдельным процессором, либо иметь встроенный. За счет специализации они, как правило, обеспечивают высокую эффективность использования энергии и высокую экономическую эффективность по сравнению с другими процессорными устройствами. Помимо всего прочего наилучшие показатели специализированных СБИС достигаются за счет использования специализированных прикладных процессоров и ускорителей. Поскольку они по определению предназначены для узкого применения, они обычно поставляются с программными расширениями.
С другой стороны узкая специализация не обеспечивает гибкости. Спроектированная для одного приложения СБИС не подходит для другого, даже если они похожи. В специализированных СБИС используются уникальные архитектуры, поэтому их программирование является более сложной задачей, чем программирование других устройств. Пользователь не может ее программировать. Другой фактор — риск. Обычно специализированные СБИС выпускаются небольшими компаниями, поэтому могут возникать сбои поставок. Пример специализированной СБИС — PrimeSense PS1080-A2.
Графические процессоры (ГП) предназначены в первую очередь для построения объемных изображений. По мере развития технологий их функционал растет, что расширяет их круг применений, в том числе до систем машинного зрения.
Изначально предполагается, что графические процессоры в ПК должны быть программируемыми, чтобы выполнять не только обработку объемного изображения, но и другие функции. В ГП заложены большие возможности для проведения параллельных вычислений. Программные инструменты разработки находятся в свободном доступе. По этим причинам параллельные вычисления, необходимые для машинного зрения, часто выполняются именно на ГП.
Графические процессоры тесно связаны с процессорами общего назначения. Иногда они размещаются на одном кристалле. Недостатком ГП является ограниченное число процессоров, с которыми они уже интегрированы и ограниченный набор ОС, которые поддерживают эту интеграцию. Существующие недорогие маломощные ГП предназначены для смартфонов и планшетников. Однако они часто не являются ГП общего назначения, поэтому их сложно использовать для других приложений, кроме как для обработки 3D. Многие графические процессоры поставляются только в составе платы, их нельзя приобрести отдельно. Пример графического процессора — NVIDIA GT240.
Сигнальный процессор — это микропроцессор, оптимизированный для выполнения алгоритмов обработки сигналов. В качестве примера можно привести DM8168 Texas Instruments. Как правило, они более эффективно выполняют эти задачи, чем процессоры общего назначения. Они уже хорошо развиты и их легко использовать по сравнению с другими типами параллельных процессоров.
При выполнении алгоритмов машинного зрения DSP обеспечивают более высокое быстродействие и эффективность, однако зачастую им не хватает производительности, поэтому их используют в сочетании с дополнительными процессорами. Кристалл DSP обычно содержит центральный процессор, сигнальный процессор и несколько прикладных. Такая комбинация обеспечивает достаточную производительность и эффективность, однако иногда возникают трудности при программировании. Обычно пользователи не имеют возможности программировать прикладные процессоры, на них выполняются только функции из библиотеки поставщика.
Прикладной процессор для мобильных устройств — это система на кристалле (СнК), разработанная для смартфонов и им подобных устройств, однако СнК может использоваться и для других целей. Прикладные процессоры обычно состоят из высокопроизводительного процессорного ядра и нескольких специализированных дополнительных процессоров, среди которых могут быть сигнальные или графические процессоры, обработчики видеосигнала, графические процессоры 2D, блоки распознавания изображения и т.д. К этому типу относится Freescale i.MX53.
Эти кристаллы обычно предназначены для приложений с батарейным питанием, поэтому оптимизированы так, чтобы потребление было минимальным. Для них разработано множество инструментов и средств проектирования, в том числе недорогие отладочные платы, порты Linux и Android и т.д. Однако пользователь не может их программировать, что ограничивает их использование для реализации функции машинного зрения.
FPGA являются самыми гибкими в плане программирования устройствами. Их можно конфигурировать как на уровне блоков, так и на уровне отдельных логических элементов. Пользователь может вручную создавать вычислительные структуры. Кроме того, исходя из потребностей приложения, можно выбирать интерфейсы ввода-вывода и встроенную периферию. Для FPGA разработано множество ресурсов, упрощающих разработку. В итоге можно создать решение, эффективное с точки зрения стоимости и расхода энергии. Пример матрицы — Xilinx Spartan-6 LX150T.
Однако FPGA являются скорее аппаратными устройствами, чем программными. Обычно они реализуются на языках аппаратного описания (Verilog или VHLD) на уровне пересылок между регистрами (RTL), на самом низком уровне абстракции. Соответственно, их разработка является самой сложной, долгой и дорогой по сравнению с другими вариантами, которые мы рассмотрели.
Но со временем использование FPGA становится проще. Причин — несколько. Во-первых, библиотеки IP-блоков (многократно используемых компонентов) содержат некоторые функции, использующиеся в алгоритмах машинного зрения. Это видеопорты и линейные буферы. Во-вторых, поставщики FPGA и их партнеры предлагают все больше примеров разработки, которые можно использовать в других проектах. Наконец, эффективнее становятся средства синтеза высокого уровня. На матрице можно реализовать процессоры с невысокой пропускной способностью. В редких случаях FPGA имеют встроенные процессоры с высокой производительностью.
В отличие от процессоров общего назначения, которые не могут обеспечивать многозадачность или многопотоковость, FPGA позволяют одновременно ускорить несколько стадий обработки визуальной информации. Принцип работы матрицы изначально предполагает разделение вычислений на параллельные потоки. Крупные производители, такие как Altera или Xilinx, предлагают готовые оптимизированные библиотеки функций машинного зрения. В них содержатся в том числе предустановленные интерфейсные блоки для подключения других «видящих» устройств, например, IP-камер.
Программный компонент OpenCV представляет собой библиотеку алгоритмов машинного зрения, в которую входит около 2000 алгоритмов. Библиотека находится в открытом и свободном доступе. Изначально над ее созданием работала Intel. В настоящее время ее поддержку обеспечивает Willow Garage.
Использование функций OpenCV может существенно упростить разработку системы машинного зрения, однако следует иметь в виду, что некоторые функции не являются полностью оптимизированными. Нельзя забывать, что это открытая библиотека, а не стандарт. Кроме того, поддерживается ограниченный набор платформ.
Машинное зрение пока не является повсеместно применяемой функцией. В настоящее время на рынке представлено всего несколько кристаллов, выполняющих функцию машинного зрения. Эти функции начинают реализовываться на сигнальных процессорах, FPGA, графических процессорах и т.д. Однако одним подходам не хватает производительности, другие оказываются слишком дорогими, третьи не предоставляют возможности программирования. Как только приложения станут более эффективными по расходу энергии и более дешевыми, они получат широкое распространение подобно беспроводной связи. Альянс производителей встраиваемых модулей машинного зрения (Embedded Vision Alliance) работает над продвижением данной функции.