Создание приложений глубокого обучения с помощью Raspberry Pi 4b (4) PyTorch

PyTorch
Создание приложений глубокого обучения с помощью Raspberry Pi 4b (4) PyTorch

предисловие

В последний раз, когда мы устанавливали OpenCV 4.4, я считаю, что у нас есть определенное понимание файлов библиотеки компиляции исходного кода.В этой статье мы дополнительно скомпилировали и установили последнюю версию Pytorch на Raspberry Pi.

Новое в PyTorch 1.6

В PyTorch версии 1.6 добавлено множество новых API, инструментов для повышения производительности и анализа производительности, а также распределенное обучение на основе основных обновлений распределенных параллельных данных (DDP) и удаленного вызова процедур (RPC). Некоторые из основных моментов обновления включают в себя:

  • Встроенная поддержка автоматического обучения смешанной точности (AMP, автоматическое обучение смешанной точности) может увеличить скорость обучения больших моделей на 50–60 % всего за несколько новых строк кода.
  • Добавить встроенную поддержку TensorPipe для поддержки тензора.
  • Добавлена ​​поддержка сложного тензора в интерфейсном API.
  • Новый инструмент профилирования предоставляет информацию о потреблении памяти на тензорном уровне.
  • Многочисленные улучшения и новые функции для параллельного обучения с распределенными данными и удаленного вызова процедур.

Увеличение памяти подкачки (необязательно)

Для компиляции torch требуется много памяти. На Raspberry Pi с объемом памяти менее 2 г вы можете предотвратить OOM, увеличив виртуальную память. Вы можете пропустить этот шаг на версиях Raspberry Pi 4 г или 8 г.

1. Измените файл конфигурации

sudo nano /etc/dphys-swapfil

Ставим подкачку памяти 4g, содержимое файла такое:

# /etc/dphys-swapfile - user settings for dphys-swapfile package
# author Neil Franklin, last modification 2010.05.05
# copyright ETH Zuerich Physics Departement
#   use under either modified/non-advertising BSD or GPL license

# this file is sourced with . so full normal sh syntax applies

# the default settings are added as commented out CONF_*=* lines
# where we want the swapfile to be, this is the default
#CONF_SWAPFILE=/var/swap

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=4096

Сохраните и выйдите, перезапустите службу, чтобы изменения вступили в силу.

sudo service dphys-swapfile restart

Проверьте, был ли скорректирован своп.

swapon -s

Зависимости среды установки PyTorch

1. Установите зависимости

Сначала установите некоторые зависимые библиотеки, необходимые для компиляции:

sudo apt-get install libopenblas-dev cython3 libatlas-base-dev m4 libblas-dev cmake
sudo apt-get install python3-dev python3-yaml python3-setuptools python3-wheel python3-pillow python3-numpy

2. Переключите виртуальную среду

deactivate   # 退出之前 OpenCV 的虚拟环境
# 创建新的虚拟环境
virtualenv -p python3 ~/my_envs/pytorch
source ~/my_envs/pytorch/bin/activate

Скомпилируйте и установите PyTorch

1. Установите элементы конфигурации

export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export NO_NNPACK=1
export NO_QNNPACK=1

2. Установите файлы библиотеки

pip3 install numpy pyyaml

Tip:

Обязательно подтвердите, что numpy был установлен в виртуальной среде. Его можно успешно скомпилировать без numpy, но скомпилированный PyTorch не поддерживает numpy. PyTorch был скомпилирован без поддержки NumPy.

3. Загрузите исходный код и библиотеку поддержки

git clone https://github.com/pytorch/pytorch.git
cd pytorch
# 查询所要编译的版本
git branch -a
git tag
git checkout v1.6.0
git submodule update --init  --recursive
git submodule update --remote third_party/protobuf

4. Создайте установочный пакет whl

python3 setup.py bdist_wheel 

Следующим шагом является долгий процесс компиляции, который длился более 5 часов.Если вы скомпилировали OpenCV до этого и просто пошли выпить чашечку кофе и можете вернуться и продолжить, то времени на компиляцию PyTorch вполне достаточно, чтобы вдоволь напиться. спать.

Кстати, установите инструмент s-tui для измерения температуры и загрузки процессора, чтобы следить за состоянием системы.

sudo pip install s-tui  --ignore-installed
sudo s-tui

Стабильное состояние полной нагрузки:

5. Установите ПиТорч

cd dist
pip3 install ./torch-1.6.0a0+b31f58d-cp37-cp37m-linux_armv7l.whl 

Если вы видите следующую информацию, это означает, что установка прошла успешно.

Скомпилируйте и установите Torchvision

1. Загрузите исходный код

git clone https://github.com/pytorch/vision.git

2. Выберите соответствующую версию

Torchvision, соответствующий pytorch 1.6, имеет версию 0.7, проверьте ее и установите поддержку PIL.

pip3 install pillow
cd vision
git checkout v0.7.0-rc4
git submodule update --init   --recursive
python3 setup.py bdist_wheel

Tip:

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

fix

3. Установите TorchVision

cd dist
pip3 install ./torchvision-0.7.0a0+78ed10c-cp37-cp37m-linux_armv7l.whl 

Возьми!

запустить йоло v5

1. Клонировать исходный код yolov5

git clone https://github.com/ultralytics/yolov5

2. Мягкая ссылка на OpenCV

cd ~/my_envs/pytorch/lib/python3.7/site-packages
ln -s /usr/local/lib/python3.7/site-packages/cv2 cv2

Tip:

Чтобы удалить программную ссылку, просто используйте rm -rf ./cv2 , будьте осторожны, чтобы не добавить / в конце.

3. Установите зависимости

pip install tqdm
pip install matplotlib
pip install scipy

4. Аргументация изображения

В тесте используется самая маленькая модель yolov5s для обнаружения цели на двух изображениях.Скорость распознавания неплохая, но скорость средняя, ​​одна 3,8 секунды, одна 2,8 секунды, около 0,3 кадра в секунду, мы можем сравнить эффект ускорения openvino позже.

cd yolov5
python3 detect.py --source ./inference/images/ --weights weights/yolov5s.pt --conf 0.5

На данный момент pytorch1.6 в Raspberry Pi может нормально работать.

Скачать

Если вы хотите пропустить длительный процесс компиляции, вы можете напрямую загрузить whl и установить его с помощью pip install. На основе версии python 3.7, в дополнение к pytorch 1.6 + torchvision 0.7, я также скомпилировал последнюю версию pytorch 1.7 + torchvision 0.8 (обратите внимание на соответствие версий при установке).

Официальный аккаунт «Глубокое пробуждение», фоновый ответ: «rpi04», вы можете получить ссылку для скачивания.


Следующее уведомление

Мы приступим к установке среды разработки Tensorflow, и запустите tensorflow lite, Взгляните на предельную скорость голой платы Raspberry Pi, Быть в курсе...