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

Создание openpose для macOS может быть довольно сложной задачей, учитывая огромное количество зависимостей и этапов сборки. Хотя официальная документация исчерпывающая и охватывает почти все, было бы неплохо иметь пошаговую процедуру, охватывающую все вопросы и подводные камни. С этой целью ниже приводится простой в использовании и чистый процесс сборки.

"Прежде чем вы начнете"

Часть A: Получите исходный код и зависимости

Часть Б — Строим кафе

Часть C — Сборка примеров и общих библиотек

Запускаем примеры и тестируем

Прежде чем вы начнете

Предпосылки

У вас должно быть следующее на вашем Mac

Порядок шагов важен

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

Сборка без поддержки GPU

  • Если на вашем компьютере нет графического процессора, вы все равно можете собрать openpose без поддержки графического процессора, внеся следующие изменения:
  • На шаге 3 ниже установите GPU_MODE = CPU_ONLY.
  • Полностью пропустите шаг 5 для применения исправления для сборки графического процессора.

Несколько слов о среде сборки (аппаратное и программное обеспечение)

Обратите внимание, что это было протестировано на Mac Book Pro с macOS (Catalina 10.15.6). Другие версии MacBook / macOS не тестировались, но, по всей вероятности, это все еще должно работать. Ниже приведены характеристики, на которых тестировалась сборка.

Часть A. Получите исходный код и зависимости

Сначала мы получим исходный код, клонирующий официальный репозиторий openpose github, а также установим все необходимые зависимости.

Шаг 1: Клонировать репозиторий

Создайте новую папку, в которой вы хотите собрать openpose.

mkdir openpose_build

cd openpose_build

git clone --recursive [email protected]:CMU-Perceptual-Computing-Lab/openpose.git

cd openpose

Давайте назовем эту клонированную папку репозитория «корневой путь›» для остальной части этого документа.

Примечание. Флаг ` — recusive` гарантирует, что все подмодули (caffe, pybind и т. д.) также будут клонированы.

Шаг 2: Установите зависимости

<root path>/scripts/osx/install_deps.sh

Примечание (необязательно): Помимо добавления библиотек из brew, install_deps.sh также добавляет некоторые пакеты Python. Если вы видите ошибку при установке opencv-python, отредактируйте install_deps.sh, измените строку

sudo pip install opencv-python

to

sudo pip install opencv-contrib-python

и беги снова

Примечание (необязательно): на случай, если на вашем компьютере нет brew, вы можете установить brew, запустив

<root path>/scripts/osx/install_brew.sh

или можно установить из официального источника

Часть B — Построить кафе

Далее мы создадим Caffe, который является основной зависимостью openpose lib. Команда CMU Perceptual Lab работала над ответвлением caffe и включила его в качестве подмодуля в репозиторий openpose git. Согласно официальным документам -

Caffe — это среда глубокого обучения, созданная с учетом выразительности, скорости и модульности. Он разработан Berkeley AI Research (BAIR)/The Berkeley Vision and Learning Center (BVLC) и участниками сообщества.

Шаг 3: Настройте параметры сборки для caffe

Теперь мы настроим параметры сборки для сборки caffe libs.

  • Откройте графический интерфейс CMake
cmake-gui
  • Установите проект и создайте пути, как показано ниже.
Where is the code = <root path>
Where to build the binaries = <root path>/build

  • Нажмите Настроить.
  • Нажмите Да, чтобы создать папку сборки (если она еще не создана). Это создаст начальную конфигурацию и загрузит все остальные необходимые файлы.
  • В следующем диалоговом окне не меняйте никакие настройки. Значения по умолчанию хороши — Генератор Unix Makefiles и Use default native compilers. Нажмите Готово.

  • После завершения загрузки настройки сборки будут отображаться с некоторыми элементами, окрашенными в красный цвет. Внесите следующие изменения в настройки сборки в пользовательском интерфейсе.
[√] BUILD_CAFFE
[ ] BUILD_EXAMPLES
[ ] BUILD_SHARED_LIBS
Caffe_INCLUDE_DIRS = <root path>/build/caffe/include
GPU_MODE = OPENCL
  • Остальные настройки оставьте по умолчанию

  • Нажмите Настроить несколько раз, пока все элементы красного цвета не исчезнут. В журнале будет указано: Настройка выполнена.
  • Нажмите Создать. В журнале будет указано: Генерация завершена.
  • Мы готовы построить кафе прямо сейчас

Примечание. Держите графический интерфейс CMake открытым, мы будем использовать его для дальнейшего процесса сборки.

Шаг 4. Создайте заголовки вручную

Создайте отсутствующий заголовочный файл caffe.pb.h для прототипа.

protoc <root path>/3rdparty/caffe/src/caffe/proto/caffe.proto --cpp_out=.

mkdir <root path>/3rdparty/caffe/include/caffe/proto

mv <root path>/3rdparty/caffe/src/caffe/proto/caffe.pb.h <root path>/3rdparty/caffe/include/caffe/proto

См. эта проблема для более подробной информации.

Шаг 5: Примените патч к caffe для поддержки opencl (требуется только для режима GPU)

Это исправляет: Фатальная ошибка: файл opencv2/highgui/highgui.hpp не найден (подробности здесь)

cd <root path>/3rdparty/caffe

git apply ../../scripts/osx/mac_opencl_patch.txt

Шаг 6: Запустите Caffe Build

cd <root path>/build

make -j`sysctl -n hw.logicalcpu`

Дождитесь окончания сборки. Надеюсь, без ошибок, предупреждения в порядке. Вы должны увидеть следующее в терминале

Часть C. Сборка примеров и общих библиотек

Шаг 7: Настройте параметры сборки для примеров и общих библиотек

Внесите следующие изменения в параметры сборки в уже открытом приложении CMake GUI из шага 3 выше.

[ ] BUILD_CAFFE
[√] BUILD_EXAMPLES
[√] BUILD_SHARED_LIBS
Caffe_LIBS = <root path>/build/caffe/lib/libcaffe.dylib

Остальные настройки оставьте по умолчанию

  • Нажмите «Настроить» еще раз. В журнале будет указано: Настройка выполнена.
  • Щелкните Создать. В журнале будет указано: Генерация завершена.
  • Теперь мы готовы, наконец, собрать openpose-библиотеки и исполняемые двоичные файлы.

Шаг 8: Окончательно создайте примеры и общие библиотеки

cd <root path>/build

make -j`sysctl -n hw.logicalcpu`

Надеюсь, это должно, наконец, построить все

Запустите примеры и протестируйте

Подробные инструкции по запуску демо можно найти здесь в официальной документации.

  • Видео процесса
<root path>/build/examples/openpose/openpose.bin --video examples/media/video.avi
  • Запуск openpose в прямом эфире с камеры (с GPU)
<root path>/build/examples/openpose/openpose.bin --num_gpu 1 --num_gpu_start 2

Наслаждаться!