转载:https://zhuanlan.zhihu.com/p/110013867
疫情严峻,没法出门,家里的老电脑又没法跑深度学习,索性在某宝入手了一块树莓派4B,试一试在树莓派这样的移动端,深度学习模型能否跑的起来。本篇主要介绍一下树莓派断的深度学习环境搭建的过程,以及分享一下深度学习环境配置好的树莓派镜像。
镜像资源百度云链接:https://pan.baidu.com/s/1mCSvPPSICSsyxr1siRXcSw 提取码:inoa 。(不行就去安装maker毕的) 里面包含:配置好深度学习环境(tf+pytorch+keras+opencv)的树莓派镜像(压缩包),VNC Viewer客户端(windows版本),Win32diskimager,还有BerryConda的arm版本安装包。
2019年发布的树莓派4B,性能较之前的版本,性能提升明显。基本参数如下:
1.5GHz四核64位ARM Cortex-A72 CPU(~3 × 性能)
1GB,2GB或4GB的LPDDR4 SDRAM
全吞吐量千兆以太网
双频802.11ac无线网络
蓝牙5.0
两个USB 3.0和两个USB 2.0端口
双显示器支持,分辨率高达4K
VideoCore VI显卡,支持OpenGL ES 3.x.
HEVC视频的4Kp60硬件解码
与早期的Raspberry Pi产品完全兼容
我入手的配件包括:树莓派裸板4G版本,闪迪microSD卡32G(class10),500万像素摄像头,读卡器,外壳,电源线。当然配上Intel的Movidius神经计算棒,肯定更香。穷是原罪,下次一定。显示器没有必要买,性价比比不高,完全可以用电脑显示器(HDMI接口)或者用远程桌面软件连接,手机VNC软件也可以。
树莓派的官方系统可以从官方下载地址下载安装,建议选择桌面版的Raspbian系统。但这样下载的系统很多内容都要自己去下载设置,比较麻烦。我第一次是这样安装的,但发现树莓派的默认python3环境所需要的包绝大多数都要从https://www.piwheels.org/simple下载,部分从Pypi下载,直接使用pip安装速度很慢而且大概率会出现Http错误(科学/n上网问题能解决的话,推荐直接使用BerryConda进行环境管理),而且换清华和阿里云源并不能解决问题,特别是深度学习相关的tensorflo和pytorch国内的源好像都没有。然后直接用了Maker毕:分享预装TensorFlow和OpenCV的树莓派系统镜像提供的树莓派镜像(感谢 @Maker毕 ),(这里再吐槽一下百度云盘,时不时1k的下载速度,下载了两天,今后有时间的话,想办法搭建一个树莓派私有云)。鉴于现在pytorch用的人比较多,所以在他的镜像基础上增加安装了Pytorch 1.3.0 和torchvision,然后又打包分享给大家。最终的python环境中,深度学习相关的包版本如下:
Package: Version :
Python 3.7.3
h5py 2.9.0
Keras 2.2.4
lxml 4.3.2
matplotlib 3.0.2
numpy 1.16.2
picamera 1.13
Pillow 5.4.1
OpenCV 4.1.0
torch 1.3.0
torchvision 0.2.2
tensorboard 1.13.1
tensorflow 1.13.1
下面是简要的安装步骤:
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WiFi-A"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
其中ssid是wifi名,注意:wifi名不能包含中文。我踩过这个坑。psk是wifi密码。key_mgmt是wifi加密方式。priority是网络优先级(配置多个wifi时使用)。
5. 树莓派开机(树莓派开关机用供/断电方式进行),不出意外的话树莓派会自动连接wifi,板子上的红灯旁边的小绿灯会隔几秒闪一次,表示网络连接成功。(开机后,添加到/boot目录下的'wpa_supplicant.conf'文件会自动转移到/etc/wpa_supplicant目录下,所以你如果第二次配置这个文件,需要重新新建这个文件。ssh文件会转化为开启ssh服务的指令,也会在开机后从/boot目录消失)。
6. 登录路由器查看,新多出来的地址就是树莓派ip地址,windows安装VNC viewer客户端,新建连接即可登录。
PS:一些可能遇到的问题:
【1】如果路由器管理员密码未知,则很难获取树莓派的ip,可以用windows扫描处于同一wifi网络下的所有在线的ip地址,在树莓派开机前后分别扫描一次,新多出来的ip地址即为树莓派的地址。
【2】有可能登录桌面时出现“Cannot currently show the desktop”,如下(借的图):
这是由于桌面显示分辨率太小导致,可以先用ssh登录设置一个较大的分辨率。执行:sudo raspi-config,选择Advanced Options->Resolution->选择一个分辨率(1280x720)->Finish->系统重启,即可用VNCViewer登录桌面。
【3】路由器一般DHCP服务会在树莓派每次开机时自动分配一个ip地址,要是每次都需要登录路由器查看树莓派十分不便。所以建议设置树莓派固定ip:桌面右上角右击选择wifi图标->wireless&wired Network Settings->配置信息如下图->应用。下次开机ip地址即为指定地址。
配置1~5,其中2为wifi名,3为空位自动补全,4为树莓派ip,5为路由器ip(网关)到这里基本配置已完成,桌面操作方式和Ubuntu基本相似。
【4】镜像是16G TF卡上提取的,所以如果你是32G的存储卡,安装完之后需要手动进行扩展以使用全部存储空间。非常简单:终端执行:sudo raspi-config->Advanced Options->Expand Filesystem Ensures...->选择完成并重启,再次用df -h命令查看存储空间配置信息
镜像系统的深度学习环境是安装在树莓派的默认python3环境下的,登录到树莓派桌面系统后(或ssh),打开终端执行:pip3 list ,查看python环境包列表。
在 /home/pi/Documents 下运行:python3 keras_minist.py ,测试keras和TensorFlow是否正常。
运行结果如下:
在 /home/pi/Documents/CNN-backbone下执行: python3 train.py ,测试pytorch是否正常。
这是一个CNN经典网络实现的小项目,还未完成运行结果:
train.py中可以指定一下batch size、Epochs等参数,可以将网络模型选择一个较轻量的,比如LeNet,训练会快一些。
总体上来说,尽管树莓派4B硬件性能提升很多,但训练深度学习模型还是不太行,只做推理估计可以。下一步打算在上面跑一些轻量的目标检测或者分割模型,如MobileNet,还有GhostNet(论文中说可以在arm设备上运行,验证一下),利用500万(是像素,不是价值)的摄像头进行实时检测。