Какие шаги необходимо предпринять, чтобы убедиться, что код OpenCV, запущенный на ПК, будет работать на определенном встроенном устройстве? - PullRequest
2 голосов
/ 25 ноября 2011

Я хочу портировать хороший код OpenCV на встроенную платформу.Раньше такие вещи было очень трудно выполнить, но теперь TI предлагает хорошие встроенные платформы, которые, как говорится, сравнительно просты.

Я хочу знать следующее:

Учитываячто:

  1. Код OpenCV уже работает на ПК без проблем.(очевидно)
  2. Необходимо определить это перед покупкой устройства.
  3. Невозможно поместить код здесь в stackoverflow.: P
  4. На выбор Texas Instruments: C6000 .

Вопросы:

  1. Какубедитесь, что перенос будет выполнен?
  2. Какие шаги необходимо предпринять, чтобы убедиться, что после портирования кода будет выполняться (как минимум).
  3. , чтобы определить, может ли кодпотребуются некоторые изменения, чтобы сделать его работу более плавной.

Указанный выше пункт 3 является необязательным.

Мне нужна информация, которая, по крайней мере, даст мне некоторый старт в

Что я думал, что должен делать?

  1. Я должен перечислить встроенные функции вниз.
  2. Затем найти доступныеонлайн-тестирование для этих функций для конкретного устройства, как показано в конце этого документа .
  3. ...

Необходимо знатькак действовать дальше?

Однако Процессор C6-Integra ™ DSP + ARM кажется лучшим.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Лучшее, что вы можете сделать, - это попробовать симулятор устройства (если он доступен), но то, что вы увидите там, далеко от совершенства.

На самом деле, ничто не может сказать вам, насколько быстро и насколько хорошоприложение будет работать на встроенном устройстве, прежде чем запускать конкретное приложение на этом конкретном устройстве.

Итак:

Шаг 1 Купить

Шаг 2 Попробуйте

Что следует учесть:

  • архитектура встроенного процессора: вашему приложению нужен большой кэш?насколько велик встроенный кеш?
  • алгоритм: вы используете много операций с плавающей запятой?Насколько хорошо устройство в операциях с плавающей запятой?
  • У вас есть передачи памяти?Шина данных на ПК работает быстрее, чем на встроенной аппаратной поддержке
  • : вы используете много расчетов с двойной точностью?они эмулируются на ARM.Они убьют ваше приложение (от миллисекунд на ПК оно может идти до секунд на ARM)
  • Ускорение.Ваши функции используют SSE?(многие функции OpenCV являются SSEd, даже если вы не знаете).У вас есть коллега НЕОН?(OpenCV не имеет большой поддержки для этого).Разница может быть на несколько порядков от x86 SSE до встроенного без NEON.

и многих, многих других.

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

даже запуск на подобном устройстве не имеет значения.Он может бесперебойно работать на данном процессоре, а с другим, с аналогичной частотой или указанной памятью, он слишком сильно замедлится

0 голосов
/ 25 ноября 2011

Это интересный вопрос, но run - это очень общее слово в этом контексте, поэтому я чувствую необходимость разбить его на два других вопроса:

  • Будет ли он компилироваться во встроенном устройстве?

  • Будет ли он работать так же быстро / плавно, как на ПК?

Я использовал OpenCVво многих различных устройствах, в том числе ARM , SH4, MIPS и я обнаружил, что иногда производитель самого устройства предоставляет скомпилированную версию OpenCV (к моему удивлению), и это здорово.Это то, на что вы можете обратить внимание, может быть, производитель вашего устройства предоставляет двоичные файлы OpenCV.

Невозможно точно определить, насколько гладким будет ваше приложение OpenCV на целевом устройстве, если вы не сможете найти какой-либо эталонный тестOpenCV работает там.ПК имеют более высокую вычислительную мощность, чем встроенные устройства, поэтому вы можете ожидать меньшую производительность от целевого устройства.

Существуют сторонние приложения, такие как opencv-performance , которые можно использовать для тестирования /сравните окружающую среду, как только вы получите в свои руки.И если производительность в этом проекте так велика, вас также может заинтересовать эта хорошая статья , в которой объясняются некоторые временные тесты, выполненные на нескольких функциях OpenCV, в которых сравниваются реализации с использованием интерфейсов C и C ++ в OpenCV.

...