Altinkaya: турецкие корпуса для РЭА
РадиоЛоцман - Все об электронике

ARM догоняет Intel? Система обнаружения пешеходов отвечает на этот вопрос

Журнал РАДИОЛОЦМАН, август 2013

Ranjith Parakkal, Uncanny Vision

EDN

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Сравнение характеристик смартфонов и управляющих ими систем-на-кристалле и процессорных ядер в последнее время стало горячо обсуждаемой темой. В особенности теперь, когда Intel пытается потеснить ARM в пространстве маломощных мобильных устройств процессором Atom, а ARM, в свою очередь, бросает вызов Intel в серверном пространстве с процессорами Cortex-A53 и A57. Уже написано достаточно статей, в которых сопоставлялись характеристики смартфонов, использующих ARM и Atom, но, возможно, не было ни одной, в которой сравнивались бы Cortex-A15, A9 и Intel Core i3 с точки зрения практического применения разработчиками. В этой статье я попытаюсь поделиться своим опытом работы по оптимизации алгоритмов компьютерного зрения и, в частности, систем обнаружения пешеходов, и сравнить эффективность реализации алгоритмов на этих трех процессорах.

Говоря простым языком, компьютерное зрение можно описать, как метод анализа, извлекающий объекты из видео или изображения. Хорошо понятными примерами компьютерного зрения могут быть обнаружение и распознавание лиц.

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

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

Система обнаружения пешеходов – профессиональный термин, обозначающий выделение людей из потока видеоизображения – одна из актуальных проблем, над решением которой работают производители автомобилей, создавая основанные на видеокамерах системы безопасности следующего поколения. Наиболее популярным алгоритмом обнаружения пешеходов на сегодня является HOG (Histogram of Oriented Gradients – гистограмма направленных градиентов), предложенный Нэвнитом Дэлэлом (Navneet Dalal) и Биллом Триггсом (Bill Triggs). Он предлагается в качестве части OpenCV – достаточно хорошо оптимизированной свободно распространяемой библиотеки компьютерного зрения с разрешительной лицензией. Однако алгоритм пока недостаточно быстр, чтобы в реальном времени выполняться на процессорах большинства архитектур.

Например, при полном поиске людей в минимальном окне 64×128 пикселей на картинке формата VGA быстродействие работающего на максимальной частоте и одном ядре процессора Core i3 оказывается в 13 раз ниже требуемого. Что еще хуже, из-за большой потребляемой мощности процессоры Core i3 использоваться в автомобильной промышленности не могут. По этой причине в большинстве случаев применяют процессоры с ядром ARM (Cortex-A8, A9 и, теперь, A15), дополненные ЦСП и ПЛИС. Таким образом, самой насущной потребностью сегодняшнего дня стала глубокая оптимизация алгоритма HOG. Для оптимизации мы выбрали ядро ARM из-за его повсеместной распространенности.

Оптимизация алгоритма, в основном, состоит из двух этапов. На первом этапе выполняется то, что мы называем Си-оптимизацией, и то, что в наименьшей степени зависит от типа процессора. Вторым шагом мы фокусируемся, главным образом, на архитектуре ARM, в первую очередь, на инструкциях Neon, и, аналогично, на инструкциях SSE для архитектуры x86. Однако базовый алгоритм остается одним и тем же, что позволяет получить корректные результаты сравнения.

Для наших измерений мы выбрали следующие ядра:

  • Cortex-A15 – 1.2 ГГц, кэш 2 МБ, ОС Android на плате Exynos 5250 Arndale
  • Cortex-A9 – 1.2 ГГц, кэш 1 МБ, ОС Android на плате OMAP 4430 Panda
  • Core-i3 – 2.99 ГГц, кэш 4 МБ, ОС Linux Ubuntu
  • Core-i3 – 1.2 ГГц, кэш 4 МБ, ОС Linux Ubuntu

Кроме того, мы включили дополнительное измерение того же ядра Core i3 на пониженной частоте 1.2 ГГц, чтобы получить еще одну точку на одной частоте с ARM. Мы не тестировали i5 и i7, отличающиеся, в основном, количеством ядер, гиперпоточностью, более высокой тактовой частотой и бóльшими объемами кэшей, и в гораздо меньшей степени набором инструкций и самой архитектурой, которые, собственно, мы и хотели сравнить.

Оптимизация потребляемой мощности была отключена, чтобы быть уверенным, что ядра тактируются одной частотой. Приложение HOG оставалось однопоточным, так как должно было выполняться на одном ядре. Коды всегда компилировались с высшим уровнем оптимизации и с разрешенными флагами SSE и Neon.

Результаты

Краткая сводка результатов, полученных при использовании алгоритма HOG, приведена ниже. Обнаружились некоторые довольно любопытные детали.

HOG OpenCV

Cortex-A9 – 2320 мс
Cortex-A15 – 1265 мс
Core i3 (1.2 ГГц) – 1107 мс
Core i3 (2.99 ГГц) – 439 мс

HOG с Си-оптимизацией

Core i3 (1.2 ГГц) – 152 мс
Core i3 (2.99 ГГц) – 74 мс

HOG с Neon и Си-оптимизацией

Cortex-A9 – 340 мс
Cortex-A15 – 138 мс

ARM догоняет Intel?
Сравнительные результаты в миллисекундах. (Меньшие значения соответствуют лучшим характеристикам).

О чем говорит статистика

Вне всяких сомнений, это доказывает, что A15 почти вдвое превосходит A9 при работе на одинаковой частоте, хотя надо признать, что больший объем кэша второго уровня дает A15 определенное незаслуженное преимущество перед A9.

Более интересный аспект этих цифр заключается в том, когда Cortex-A15 и Core i3 работают на одинаковой тактовой частоте 1.2 ГГц, разница в производительности этих двух процессоров для оригинальной OpenCV HOG оказывается незначительной. В данном случае производительность Cortex-A15 (1265 мс) всего на 14% ниже, чем Core-i3 (1107 мс). Однако было бы ошибкой обобщать этот вывод на все алгоритмы.

Так действительно ли ARM догоняет Intel?

Чтобы быть справедливым к Intel, отметим, что Core-i3 на частоте 1.2 ГГц при использовании только Си-оптимизации практически удалось не отстать от A15 с полностью оптимизированным кодом, хотя мы полагали, что компилятор, возможно, уже проделал большую работу, подстраиваясь под инструкции SSE с использованием дружественного параллелизму данных кода Си. Кроме того, процессоры Intel отличаются более высокой тактовой частотой (ядро i7 в турбо режиме может работать на частоте 3.8 ГГц) и гиперпоточностью, которые могли бы оказаться полезными в многопоточной среде.

Возможно, самым интересным выводом из полученной статистики является тот факт, что полностью оптимизированной версии HOG при выполнении на Cortex-A15 (139 мс) удалось почти втрое превзойти оригинальную версию HOG из OpenCV, выполнявшегося на Core i3 с тактовой частотой 2.99 ГГц (439 мс), несмотря на в 2.5 раза более низкую частоту и вдвое меньший размер кэша. Этот результат показывает, что при определенной программной оптимизации Cortex-A15 может бросить вызов Core i3 и, возможно, даже победить его в этой игре.

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Is Intel within ARM's reach? Pedestrian Detection shows the way

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя