本文记录在树莓派3B+上配置tensorflow运行环境的过程。
准备工作
- 16G的microsd卡
- 读卡器
- 系统映像,如果使用官方的镜像烧录工具,就不需要准备
烧录系统
请参考树莓派操作系统镜像烧录方法指南。
或者使用官方的系统映像烧录工具Raspberry Pi Imager, 烧录最新的树莓派操作系统。注意,烧录前配置使用ssh密码登录,并配置连接好wifi。建议不要使用最新的树莓派操作系统,而是选择legacy,debian10。
启动系统后使用如下命令连接系统:
1 | # ssh登录系统 |
配置系统
tensorflow环境配置
1 | python3 -m venv tf2_api_env |
下载TensorFlow Models
TensorFlow Model Garden。TensorFlow 模型花园是一个存储库,为 TensorFlow 用户提供了许多不同的最先进 (SOTA) 模型和建模解决方案的实现。我们旨在展示建模的最佳实践,以便 TensorFlow 用户可以充分利用 TensorFlow 进行研究和产品开发。
1 | git clone https://github.com/tensorflow/models |
安装TensorFlow Models中的Object Detection 模块
配置目标检测API目录,以便python能找到object detect api。使用pth文件,将object detect模块的路径添加到python模块的搜索路径中。在python安装目录的Lib\site-packages下创建tensorflow.pth文件,在其中添加Object Detection API文件路径:
1 | # 创建tensorflow.pth文件,输入如下内容 |
安装Protobuf,生成python语言的消息协议
安装Protobuf的过程具体参考TensorFlow2.x目标检测API安装配置步骤详细教程 Object Detection API with TensorFlow2.x 。
1 | cd models/research/ |
修改源
可选。请参考修改树莓派3B+的软件源-Raspbian(stretch)。
配置dhcp
可选。使用命令sudo leafpad /etc/dhcpcd.conf,修改dhcp配置文件,配置使用静态ip。
1 | interface wlan0 |
扩充分区
可选。请参考解决树莓派磁盘没有占满整个sd卡的方法。
上网配置
可选。
1 | sudo apt-get install proxychains |
安装pyenv
可选,重点是安装python3.7。在linux操作系统中:
1 | wget https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer |
使用命令leafpad .bashrc打开.bashrc文件,在其末尾输入如下内容:
1 | export PYENV_ROOT="$HOME/.pyenv" |
安装python 3.7.3:
1 | sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ |
使用含tensorflow环境的Docker映像
可选。使用如下命令在树莓派上安装docker:
1 | curl -fsSL https://get.docker.com -o get-docker.sh |
使用如下命令下载含tensorflow环境的docker映像:
1 | docker pull armswdev/tensorflow-arm-neoverse:r22.05-tf-2.8.0-eigen |
使用如下命令启动docker容器:
1 | # 注意-v等所有选项必须在image之前 |
具体使用过程请参考TensorFlow Serving with Docker 。
模型测试
传输模型
配置环境
可选。
1 | # 创建虚拟环境 |
测试模型
1 | # 进入虚拟环境 |
参考链接
- Installing Latest Tensor flow and Keras on RASPBERRY PI,by Abhishek c.
- Unable to uninstall programs using sudo pip,by askubuntu.
- Installing TensorFlow 2.3.0 for Raspberry Pi3+/4 (Debian Buster),by Cawin Chan.
- 树莓派开启wifi热点,by zsssj.
- 修改树莓派3B+的软件源-Raspbian(stretch),by codeantenna.
- 磁盘分区——主分区、扩展分区、逻辑分区,by ITCHN.
- 解决树莓派磁盘没有占满整个sd卡的方法,by ourkix.
- centos下python环境搭建,by bigtiger1648.
- Linux/树莓派raspbian 32/64查看,by Yew1168.
- ModuleNotFoundError: No module named ‘cv2’ (安装cv2),by weixin_39450145.
- TensorFlow Serving with Docker ,by tensorflow.
- Docker的volumes踩坑,by lyer.