前言

上回我们安装了OpenCV 4.4,相信对源码编译库文件有了一定的了解,这篇我们进一步在树莓派上编译并安装 Pytorch 的最新版本。

PyTorch 1.6 的新特性

PyTorch 1.6 版本增加了许多新的 API、用于性能改进和性能分析的工具、以及对基于分布式数据并行(Distributed Data Parallel, DDP)和基于远程过程调用(Remote Procedure Call, RPC)的分布式训练的重大更新。部分更新亮点包括:

  • 原生支持自动混合精度训练(AMP, automatic mixed-precision training),只需增加几行新代码就可以提高大型模型训练50-60% 的速度。
  • 为 tensor-aware 增加对 TensorPipe 的原生支持
  • 在前端 API 增加了对 complex tensor 的支持
  • 新的分析工具提供了张量级的内存消耗信息
  • 针对分布式数据并行训练和远程过程调用的多项改进和新功能

增加交换内存(可选)

编译 torch 需要花费大量的内存,在低于 2g 或以下内存的树莓派上,可以通过增加虚拟内存来防止OOM,4g 或 8g 的版本的树莓派可跳过这步。

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

查看一下 swap 是否已调整。

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 was compiled without NumPy support。

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 的时间都够去好好睡上一觉了

顺便安装一个CPU 温度和使用率工具s-tui,来监测一下系统状态。

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

持续满负荷状态:

5. 安装 PyTorch

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. 选择对应版本

pytorch 1.6 对应的 torchvision 是 0.7 的版本,checkout 出来,并安装 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 文件即可。

3. 安装 TorchVision

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

搞定!

运行 yolo 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.3fps,后续我们可以对比一下openvino 加速的效果。

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

到这里,树莓派里的 pytorch1.6 已经可以正常工作了。

资料下载

若想跳过冗长的编译过程,可以直接下载whl,然后用 pip install 进行安装即可。基于 python 3.7 的版本,除了 pytorch 1.6 + torchvision 0.7,我还编译了最新的 pytorch 1.7 + torchvision 0.8(安装时要注意版本匹配)。

下一篇预告

我们将开始安装 Tensorflow 的开发环境, 并运行一下 tensorflow lite, 看一下裸板树莓派推理的极限速度, 敬请期待...

欢迎扫码关注,更多分享

numpy pytorch 接口对应_用树莓派4b构建深度学习应用(四)PyTorch篇相关推荐

  1. 树莓派 cuda加速_用树莓派4b构建深度学习应用(四)PyTorch篇

    前言 上回我们安装了OpenCV 4.4,相信对源码编译库文件有了一定的了解,这篇我们进一步在树莓派上编译并安装 Pytorch 的最新版本. PyTorch 1.6 的新特性 PyTorch 1.6 ...

  2. 图像 引言 深度学习_用树莓派4b构建深度学习应用(十二)口罩篇

    前言上一篇我们把环境和网络问题都解决了,这一篇在 COVID-19 仍在全世界肆虐的当下,我们尝试用 AI 来做一个有趣的自动戴口罩应用.主要用 OpenCV + CNN 来提取面部关键点坐标,再将口 ...

  3. 用树莓派4b构建深度学习应用(十四)素描线稿篇

    前言 上一篇我们完成了一对戴口罩和脱面罩的互补应用,这一篇来看一下最近抖音上看到一个批量提取线稿的视频,掌握其核心原理,我们用 OpenCV 就很容易实现一个更快速的方案. Photoshop 提取线 ...

  4. 用树莓派4b构建深度学习应用(一)硬件篇

    前言 最近树莓派4b发布了8gb的版本,这么大的内存用在嵌入式设备上,简直是为了深度计算而生,果断入手了一块,遂开启了一轮踩坑之旅. 为了避免重复网上已有的树莓派教程,后续系列文章,我尽量以2020年 ...

  5. pytorch深度学习_用于数据科学家的深度学习的最小pytorch子集

    pytorch深度学习 PyTorch has sort of became one of the de facto standards for creating Neural Networks no ...

  6. 从零开始用树莓派4B玩深度学习

    作为深度学习方面的初学者,中间经历了很多曲折才得以初窥门径. 留下一些经验文字供后来者参考. 前言 1)学习深度学习-图像识别的目的:智能质检 很简单,作为制造业从业的老人(快5张了,质检方面的管理人 ...

  7. pytorch卷积神经网络_知识干货-动手学深度学习(pytorch)-06 卷积神经网络基础

    卷积神经网络基础 本节我们介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充.步幅.输入通道和输出通道的含义. 二维卷积层 本节介绍的是最常见的二维卷积层,常用于处理图像数据. 二维互相关运 ...

  8. 香橙派4和树莓派4B构建K8S集群实践之四:BuildKit与LNMP

    目录 1. 说明 2. 开始前的准备工作 2.1 docker 验证用户信息设置 2.2 安装BuildKit 3. 安装步骤 3.1 申请一个pvc存储区 (wwwroot-pvc.yaml) 3. ...

  9. pytorch 图像分割的交并比_「通知」《深度学习之图像识别》再版工作启动,欢迎指导和提建议...

    不知不觉有三第一本书也上市超过1年半了,第一次写作略显稚嫩,许多细节处理不当,比如没有在印刷前核对公式,被删掉了参考文献影响读者阅读体验等.现在本书正式启动再版工作,注意不是重印,是再版.重印只是修正 ...

最新文章

  1. Python——蟒蛇绘制
  2. jQ中的mouseleave和mouseout的区别 模仿下拉框效果
  3. 使用Spring AOP进行面向方面的编程
  4. 手机点餐系统概述_疫情之下,无接触点餐模式再成热搜,扫码点餐系统能不能普及?...
  5. 【CSWS2014 Summer School】大数据下的游戏营销模式革新-邓大付
  6. 计算机应用基础复制3,计算机应用基础3(答案)
  7. java开发教程-excel文件的读写
  8. captura 录制出来的是黑屏_黑屏:我录制的视频播放时画面是黑的解决方案 - Bandicam(班迪录屏)...
  9. python123手机版本_Python123
  10. 【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例
  11. android光标Cursor
  12. 西瓜书学习笔记(2)——模型评估与选择
  13. android 列表倒计时,Android ListView列表实现倒计时
  14. pdfjs 字体新增_JS - PDF文件生成库jsPDF使用详解2(修改文字样式)
  15. 4路服务器cpu位置,4路cpu服务器
  16. midi java_java midi音乐文件播放器
  17. PLC高精度定时器(T法测速功能块)
  18. Linux之父-林纳斯 配置命令基操
  19. jmeter性能分享总结
  20. python实战:22个Python迷你项目(附源码)【建议收藏】

热门文章

  1. PHPROXY Encrypt 0.61
  2. DedeCms模板防盗的方法
  3. spring boot 之session的总结
  4. 前端入门之——jquery day9
  5. Python模块unittest
  6. 6264:走出迷宫(DFS和BFS)
  7. 如何利用XShell隧道通过跳板机连接内网机器
  8. 遍历List 删除某条数据
  9. nyoj 55 懒省事的小明
  10. u盘安装linux18.04.3遇到的坑