用树莓派4b构建深度学习应用(四)PyTorch篇

​前言

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

image
image

PyTorch 1.6 的新特性

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

i. 原生支持自动混合精度训练(AMP, automatic mixed-precision training),只需增加几行新代码就可以提高大型模型训练50-60% 的速度。

i. 为 tensor-aware 增加对 TensorPipe 的原生支持

i. 在前端 API 增加了对 complex tensor 的支持

i. 新的分析工具提供了张量级的内存消耗信息

i. 针对分布式数据并行训练和远程过程调用的多项改进和新功能

增加交换内存(可选)

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

1 修改配置文件

sudo nano /etc/dphys-swapfil

设置 4g 的交换内存,文件内容如下:

# /etc/dphys-swapfile - user settings for dphys-swapfile package

保存退出,重启服务生效。

sudo service dphys-swapfile restart

查看一下 swap 是否已调整。

swapon -s

PyTorch 安装环境依赖 1 安装依赖首先安装一些编译需要的依赖库:

sudo apt-get install libopenblas-dev cython3 libatlas-base-dev m4 libblas-dev cmake

2 切换虚拟环境

deactivate   # 退出之前 OpenCV 的虚拟环境

**编译安装 PyTorch ** 1 设置配置项

export NO_CUDA=1

2 安装库文件

pip3 install numpy pyyaml
image

✎ Tip

务必确认一下虚拟环境下,已经安装了numpy。没有numpy的话也能成功编译,但是编译出来的PyTorch ****不支持numpy****。PyTorch was compiled without NumPy support。

3 下载源码及支持库

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

4 生成whl安装包

python3 setup.py bdist_wheel 

接下来就是历时 5 个多小时漫长的编译过程了,如果说之前编译 OpenCV 只是去喝杯咖啡就能回来继续,那编译 PyTorch 的时间都够去好好睡上一觉了
image

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

sudo pip install s-tui  --ignore-installed

持续满负荷状态:

image

5 安装 PyTorch

cd dist

看到如下信息,就代表安装成功了。

image

**编译安装 Torchvision ** 1 下载源码

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

2 选择对应版本

pytorch 1.6 对应的 torchvision 是 0.7 的版本,checkout 出来,并安装 PIL 支持。

pip3 install pillow
image

✎ Tip

编译如遇到以上错误信息,是由于源码中有两处****变量类型错误****,需要用 size_t 强制类型转换一下。修改对应的 seekable_buffer.cpp 和 util.cpp 文件即可。

image

3 安装 TorchVision

cd dist
image

搞定!

**运行 yolo v5 ** 1 克隆 yolov5 源码

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

2 软链接到 OpenCV

cd ~/my_envs/pytorch/lib/python3.7/site-packages

✎ Tip

若要删除软链接,用 rm -rf ./cv2 即可,要注意的是千万别在最后添加 /。

3 安装依赖库

pip install tqdm

4 图像推理

测试用最小的模型 yolov5s 对两张图片进行目标检测,识别率还不错,但速度一般,一张 3.8 秒,一张 2.8 秒,大约 0.3fps,后续我们可以对比一下openvino 加速的效果。

cd yolov5
image

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

资料下载

image

若想跳过冗长的编译过程,可以直接下载whl,然后用 pip install 进行安装即可。基于 python 3.7 的版本,除了 pytorch 1.6 + torchvision 0.7,我还编译了最新的 pytorch 1.7 + torchvision 0.8(安装时要注意版本匹配)。本期相关文件资料,可在公众号后台回复:“rpi04”,获取下载链接。

下一篇

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352