树莓派4+TensorFlow+OpenCV+英特尔加速棒环境搭建

您所在的位置:网站首页 英特尔加速卡有什么用 树莓派4+TensorFlow+OpenCV+英特尔加速棒环境搭建

树莓派4+TensorFlow+OpenCV+英特尔加速棒环境搭建

2024-07-16 02:45| 来源: 网络整理| 查看: 265

文章目录 一、树莓派系统烧录二、更换源2.1、设置root登录密码2.2、更换apt 源2.2.1、先备份源文件2.2.2、编辑系统源文件2.2.3、更改系统源2.2.4、更新索引 2.3、更换pip源2.4、参考文章 三、树莓派设置3.1、设置静态IP地址3.2、开启ssh远程登录3.3、修改原始pi账号、密码3.4、配置无线网络3.5、设置时区3.6、windows或Ubuntu通过samba访问树莓派3.6.1、安装samba服务3.6.2、访问samba共享目录 3.7、安装locate工具3.8、安装wqy中文字体库3.9、禁用蓝牙和wifi、使能usb 四、安装tensorflow环境4.1、安装TensorFlow4.2 、验证4.3、参考文献 五、opencv环境安装5.1、 扩展树莓派文件系统5.2、安装opencv4依赖项5.2.1、安装CMake等开发工具5.2.2 、安装一系列图像和视频库5.2.3、安装gtk开发库5.2.4、安装优化库 5.3、下载opencv4.2.0源码5.4 、编译opencv源码5.4.1 、执行CMake5.4.2、调整树莓派交换区大小5.4.3 、解决boostdesc_bgm.i文件错误5.4.4、编译和安装 5.5、验证 六、英特尔神经棒2代 Openvino安装七、运行测试代码八、在Ubuntu下搭建树莓派交叉编译环境九、设置开机自启动附录

一、树莓派系统烧录

对于树莓派而言我们自然需要一个SD卡并且烧录系统,SD卡大多推荐32G或者64G的(我是用的是16G貌似也可以),也可以搞更大的,系统我选择的是树莓派官网的Lite32位系统(毕竟树莓派内存就那么小,带UI界面的系统会卡成PPT,论坛上有人对比64位系统性能更好,但是目前64位系统还只是测试版,而且后续的加速棒OpenVINO只支持32位,所以安装32位系统)。 64位系统下载地址 64位系统安装参考

烧录软件是BalenaEtcher,也可以选择树莓派官方的Respberry Pi Imager或者Win32DiskImager都可以。其中Win32DiskImager也可以读取制作好的sd卡的镜像。制作过程也比较简单,本次我是用的是BalenaEtcher。 图1.1烧录软件界面

依次选择镜像文件,sd卡设备,等待烧写就好了。

烧录软件烧录过程

制作完毕后插入启动卡,启动树莓派,约30s就可启动成功。

二、更换源

后续安装一系列依赖库和工具都需要下载文件,因此更换系统源为国内镜像源,更新前先设置root登录密码,解锁root登录

2.1、设置root登录密码

执行命令:

sudo passwd root

输入root 登录密码。

sudo passwd --unlock root

即可解锁。

2.2、更换apt 源 2.2.1、先备份源文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak 2.2.2、编辑系统源文件 sudo nano /etc/apt/sources.list

将初始的源使用#注释掉,添加如下两行清华的镜像源 【注意】这里的树莓派系统是Raspbian-buster系统,在写系统源链接时要注意是buster,网上很多教程都是之前stretch版本,容易出错!

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi 2.2.3、更改系统源 sudo nano /etc/apt/sources.list.d/raspi.list

用#注释掉原文件内容,用以下内容取代:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui 2.2.4、更新索引

保存执行如下命令完成源的更新软件包索引。

sudo apt-get update -y sudo apt-get upgrade -y 2.3、更换pip源

安装python包管理器pip

wget https://bootstrap.pypa.io/get-pip.pysudo python3 get-pip.py

或者

sudo apt-get install python-pip python3-pip python3-dev -y

pip更换为国内源,可以大大的提高安装成功率和速度。不管你用的是pip3还是pip,方法都是一样的, 这里举例换清华源(网上多推荐豆瓣源,看个人选择,我是用清华源还是比较快的 )打脸了,最近又安装TensorFlow用清华的源报错,换豆瓣就正常,还是用豆瓣吧! 先创建文件夹,再创建这个文件

sudo mkdir -p ~/.pip sudo touch ~/.pip/pip.conf sudo nano ~/.pip/pip.conf

在里面添加如下内容:

[global] timeout =6000 index-url = http://pypi.douban.com/simple/ [install] use-mirrors =true mirrors =http://pypi.douban.com/simple/ trusted-host =pypi.douban.com

保存退出执行

sudo pip3 install --upgrade pip

就行了! 国内源列表: 树莓派镜像源列表: 阿里云 中国科技大学 豆瓣 Python官方 v2ex 中国科学院 清华大学

2.4、参考文章

https://mirror.tuna.tsinghua.edu.cn/help/raspbian/ https://blog.csdn.net/qq_40584960/article/details/86080904 https://blog.csdn.net/zqxdsy/article/details/102574239

三、树莓派设置 3.1、设置静态IP地址 sudo apt-get install vim -y

安装vim编译器,实测树莓派下vim也不好用,可以使用winscp软件在windows下编辑好文档再上传到树莓派下。

sudo nano /etc/dhcpcd.conf

修改这个文件如下:

#以太网有线配置 interface eth0 static ip_address=192.168.x.x/24 static routers=192.168.x.1 static domain_name_servers=114.114.114.114 #无线接口配置 interface wlan0 static ip_address=192.168.x.x/24 static routers=192.168.x.1 static domain_name_servers=114.114.114.114

或者修改interface文件

sudo apt install resolvconf -y sudo systemctl disable dhcpcd.service sudo nano /etc/network/interfaces

添加以下内容:

auto eth0 iface eth0 inet static address 192.168.137.155 netmask 255.255.255.0 gateway 192.168.137.1 dns-nameservers 192.168.137.1 3.2、开启ssh远程登录 sudo vim /etc/ssh/sshd_config +32

#将第32行注释取消并改成

PermitRootLogin yes

保存退出vim编辑器输入。 开启ssh远程登录服务,开机自启动ssh服务

sudo service ssh startsudo systemctl enable ssh

这样开启远程登录后就可通过xshell或者SecureCRT等第三方终端工具以root用户身份ssh访问树莓派了,如果只需user身份访问,只需

sudo raspi-config

将“Interface Options”->“P2 SSH” 设置Enable即可,或者在BOOT分区新建一个SSH文件夹即可;

3.3、修改原始pi账号、密码

树莓派默认的用户名和密码是pi/ raspberry,如无需修改可以略过不看。 使用root账号登录,才可修改。

#修改用户密码 sudo passwd pi #修改user sudo usermod -l zkzy pi #修改group sudo groupmod -n zkzy pi #修改home 目录 sudo mv /home/pi /home/zkzy #设置home 目录 sudo usermod -d /home/zkzy zkzy

修改后,pi用户名就变成“新用户名”。 切记:修改用户名和密码后,使用SSH及xrdp访问时,要用新的用户名和密码登录访问。

3.4、配置无线网络

ifconfig看一下无线网卡有没有开启,没有开启输入ifconifg wlan0 up开启无线网卡(wlan0换成自己的无线网卡名称),如果能够看到无线网卡说明已经开启,直接下一步。

nano /etc/wpa_supplicant/wpa_supplicant.conf

填入以下内容

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN network={ ssid="Your_SSID" # 你的无线网名称 psk="Your_PassWord" # 你的无线网密码 priority=2 # 网络登入优先级,有多个网络的时候优先连接数字大的 } # 第二个可以不写 network={ ssid="Your_SSID2" psk="Your_PassWord2" priority=1 }

重启即可(没有验证过)。

3.5、设置时区

树莓派默认采用UTC时间,因此需修改为北京时间。

#安装ntp sudo apt-get install ntpdate -y #启动NTP sudo timedatectl set-ntp true #修改本地时区 sudo dpkg-reconfigure tzdata

选择“asia/shanghai”上海时区即可。

3.6、windows或Ubuntu通过samba访问树莓派 3.6.1、安装samba服务 sudo apt-get install samba -y

在安装过程,是否自动修改smb.conf,如果是dhcp地址选择yes,否则也可以选择No。然后

sudo nano /etc/samba/smb.conf

修改配置文件,在文件末尾添加如下内容:

[share] comment = zkzy share path = /home/zkzy available = yes browseable = yes public = yes writable = yes read only = no directory mask = 0777 create mask = 0777

保存退出后通过以下命令重启samba服务即可。

sudo /etc/init.d/smbd restart sudo /etc/init.d/nmbd restart 3.6.2、访问samba共享目录

windows下访问samba目录比较简单,在运行窗口输入\ip地址即可。 Ubuntu下麻烦一些,也可能是我没找到合适的方法,我是通过mount将samba共享目录挂载到Ubuntu下的一个目录来访问的,挂载命令如下:

sudo mount -t cifs -o username=xxx,password=xxx,iocharset=utf8,dir_mode=0777,file_mode=0777 //192.168.110.224/share /home/user/raspberry

username和password是登录树莓派的用户名和密码,//后面是树莓派的IP地址,dir_mode和file_mode设置为0777可以保证在Ubuntu下非root用户也能修改树莓派文件。

如此之后就可在windows或Ubuntu下通过vscode编辑树莓派代码,通过ssh远程登录树莓派测试运行了。

3.7、安装locate工具

locate工具很好用,默认没有安装,通过以下命令安装,更新索引,就可以通过locate查找文件位置了。

sudo apt-get install locate -y sudo updatedb 3.8、安装wqy中文字体库 sudo apt-get install ttf-wqy-zenhei -y

安装文泉驿黑体字库主要用于后续一些中文osd的显示。

3.9、禁用蓝牙和wifi、使能usb

修改config.txt

sudo nano /boot/config.txt

在末尾追加以下内容:

dtoverlay=dwc2,dr_mode=host dtoverlay=disable-wifi dtoverlay=disable-bt 四、安装tensorflow环境 4.1、安装TensorFlow

安装前请通过uname -a查看系统版本比如我的是armv7的版本 armV7版本系统 所以下载whl文件选择armv7的。 通过python3 -V查看python3版本,选择whl文件时cp指代python版本号,因为我的是python3.7,所以最终选择的whl文件为tensorflow-2.4.0-cp37-none-linux_armv7l.whl。 (1)更新源,升级软件

sudo apt-get update -y sudo apt-get upgrade -y

(2)安装pip和pip3

sudo apt-get install python-pip python3-pip python3-dev -y

(3)卸载旧版本

sudo pip uninstall tensorflow sudo pip3 uninstall tensorflow

(4)安装依赖库(可能大部分已安装)

sudo apt-get install gfortran -y sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev -y sudo apt-get install libatlas-base-dev libopenblas-dev libblas-dev -y sudo apt-get install liblapack-dev -y

(5)升级setuptools

sudo -H pip3 install --upgrade setuptools sudo -H pip3 install pybind11 sudo -H pip3 install Cython==0.29.21

(6)使用 Cython 版本 0.29.21安装 h5py

sudo -H pip3 install h5py==2.10.0

(7)通过gdown下载whl文件 已有whl文件可以跳过,没有试过使用gdown下载whl文件。

# install gdown to download from Google drive pip3 install gdown # copy binairy sudo cp ~/.local/bin/gdown /usr/local/bin/gdown # download the wheel gdown https://drive.google.com/uc?id=1x2nxbi8rLvF7WzYkuwt9SOuDvsOUytjE

(8)安装TensorFlow

sudo -H pip3 install tensorflow-2.4.0-cp37-none-linux_armv7l.whl 4.2 、验证 python3 import tensorflow as tf tf .__version__

验证TensorFlow安装

自此tensorflow环境搭建完毕。

4.3、参考文献

树莓派4安装TensorFlow参考文章 此参考链接还提供64位环境安装TensorFlow,以及python3.5环境安装。

五、opencv环境安装

因OpenVINO安装默认已安装opencv,所以先安装opencv4环境。安装opencv4参考文章。

5.1、 扩展树莓派文件系统

按照文档说明扩展文件系统以包含micro-SD 卡上的所有可用空间,Raspberry Pi 的“扩展文件系统”菜单允许我们利用整个闪存卡。这将为我们提供安装 OpenCV 4 和其他软件包所需的空间。 执行配置命令:sudo raspi-config 然后选择

树莓派配置高级选项

然后选择 扩展文件系统选项

如下图所示:完成后退出时会自动选择重启。

完成系统扩展

完成后退出时会提示选择重启,等待系统重启完成,可以通过df -h命令来验证空间扩展成功,如下图所示可用空间位9.7G,扩展成功。 验证扩展成功

因为安装的是精简版系统,所以无需通过sudo apt-get autoremove -y卸载空间精简空间,进行下一步安装opencv4依赖项。

5.2、安装opencv4依赖项 5.2.1、安装CMake等开发工具 sudo apt-get install build-essential cmake unzip pkg-config -y 5.2.2 、安装一系列图像和视频库

这些对于处理图像和视频文件至关重要,这一步下载安装的内容较大,使用国内镜像源会快很多。

sudo apt-get install libjpeg-dev libpng-dev libtiff-dev -y #安装图片I/0包,用于加载各种格式图片 sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y #安装视频I/o包,用于加载各种格式视频 sudo apt-get install libxvidcore-dev libx264-dev -y 5.2.3、安装gtk开发库 sudo apt-get install libgtk-3-dev -y #用于编译opencv子模块highgui sudo apt-get install libcanberra-gtk* -y #减少GTK警告的包 5.2.4、安装优化库 sudo apt-get install libatlas-base-dev gfortran -y #用于优化矩阵操作 5.3、下载opencv4.2.0源码 #下载opencv4.2.0和opencv_contrib4.2.0 cd ~ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip

在树莓派环境上下载github代码可能比较慢,建议更新hosts文件下载文件后再拷贝到树莓派下。 解压两个opencv文件

unzip opencv.zipunzip opencv_contrib.zip

为了便于后续编译等工作,将解压后的opencv文件夹重命名,也可不重命名。

mv opencv-4.2.0 opencvmv opencv_contrib-4.2.0 opencv_contrib 5.4 、编译opencv源码 5.4.1 、执行CMake

没有按照原文的Step4安装python虚拟环境,但是我执行了pip安装和

sudo pip3 install numpy sudo apt-get install python-numpy -y

在opencv目录下执行以下命令:

sudo mkdir build cd build

执行CMake操作

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D BUILD_EXAMPLES=OFF \ -D ENABLE_NEON=ON \ -D WITH_LIBV4L=ON \ -D BUILD_TESTS=OFF \ -D ENABLE_VFPV3=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \ -D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \ -D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ ..

编译时如果不添加build_examples=off和build_tests=off两个选项,编译时会报错,查看报错信息是缺少一些依赖库,因为只是编译库,所以不在这上面花费时间和精力,故将这两项置为off。 此步骤约需10分钟左右,执行完毕后出现如下画面:

CMake执行成功

5.4.2、调整树莓派交换区大小

如果树莓派内存小于4G请调整swap大小。

sudo nano /etc/dphys-swapfile

修改如下:

# 将大小设置为绝对值,留空(默认)然后使用计算值 # 你很可能不想要这个,除非你有特殊的磁盘情况 # CONF_SWAPSIZE=100 CONF_SWAPSIZE = 2048

修改完毕后执行以下命令:

sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start

注意:增加交换大小会缩短 Raspberry Pi microSD 卡的寿命。基于闪存的存储卡可以执行的写入次数有限,直到卡基本上无法再保存 1 和 0 为止。我们只会在短时间内启用大交换,所以这影响不大。但是以防意外请提前份镜像文件,另外编译安装完毕后一定要修改回来。

5.4.3 、解决boostdesc_bgm.i文件错误

如果直接编译会提出缺少boostdesc_bgm.i等文件错误,解决方法从网上下载这些文件拷贝到opencv_contrib/modules/xfeatures2d/src/目录下。

百度云链接:https://pan.baidu.com/s/1BeYF8kqEZLAJYQj-MvxpmA 提取码:e1wc

5.4.4、编译和安装

执行sudo make -j4 静静等待编译完成,约需两小时,编译完成后执行sudo make install执行安装。 我将编译后的opencv.tgz和opencv_contrib.tgz 上传到百度网盘,可以避免下次长时间编译。

编译成功

安装成功

5.5、验证 python3 >>>import cv2 >>>cv2.__version__

输出opencv版本号则证明安装成功。

验证成功

六、英特尔神经棒2代 Openvino安装

可参考英特尔官方文档: 安装比较简单,下载l_openvino_toolkit_runtime_raspbian_p_2021.4.582.tgz,通过scp工具拷贝到树莓派目录下。

(1) 安装依赖

sudo pip3 install imutils picamera pyserial crcmod pillow glog

(2) 创建安装目录

sudo mkdir -p /opt/intel/openvino

(3) 解压缩文件

sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2021.4.582.tgz --strip 1 -C /opt/intel/openvino

(4) 安装外部依赖CMake 在安装opencv时已经安装过了。

(5) 设定环境变量

source /opt/intel/openvino/bin/setupvars.sh

也可通过以下方式永久生效环境变量

echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

(5) 将当前用户添加到users群组

sudo usermod -a -G users "$(whoami)"

(6) 安装USB规则 要在英特尔® 神经计算棒 2 上执行推理,请运行install_NCS_udev_rules.sh脚本安装 USB 规则。

sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

自此Openvino安装完毕。

七、运行测试代码

从github上下载了一份代码,代码源码详见附录的百度网盘,因为使用了中文字体需先安装依赖

sudo pip3 install pillow

在树莓派下运行

python3 mobilenetv2ssdlite.py

得到如下效果:

检测结果

八、在Ubuntu下搭建树莓派交叉编译环境

即使安装了samba共享,在虚拟机下编译代码也比较麻烦,而且也想利用台式机的强大CPU加快编译速度,因此想在Ubuntu下搭建一个交叉编译环境,编译完后将可执行文件拷贝到树莓派下运行就比较方便了,因为CMake可以附加拷贝操作。 参考文章 (1)查看树莓派GCC/G++版本

gcc --versionld -vldd --version

树莓派的gcc版本为8.3.0因此我们需要下载8.3.0的gcc

树莓派gcc版本

(2)下载交叉编译链 从参考文章中找到下载链接,下载gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar版本。无法找到8.3.0版本的,只好找低版本的,我测试过通过sudo apt-get install gcc-arm-linux-gnueabihf -y和sudo apt-get install g++-arm-linux-gnueabihf -y直接安装arm-linux-gnueabihf是10.1版本的,g++编译运行出现异常。

(3)安装交叉编译链

cd /opt/sudo tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

然后修改环境变量,在~/.bashrc或/etc/profile最后加上这句话

export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin

重启终端或机器,然后通过arm-linux-gnueabihf-gcc -v查看安装效果

安装成功

自此交叉编译链安装成功,在Ubuntu下编译树莓派程序,拷贝到树莓派下运行,经测试可以正常编译在树莓派上运行,如果遇到拷贝失败,多是路径或者权限不对。

九、设置开机自启动

检测程序依赖openvino,普通的修改开机自启动的方法会遇到openvino环境问题,因此修改/etc/rc.local添加以下内容:

echo 'passwd' | su - user /bin/bash -c "/your bash path/autostart.sh &"

其中user和passwd是用户名和密码 这样就能以user用户执行你的自启动脚本。 autostart.sh如下

#!/bin/bash whoami echo "========start EleSentry" source /opt/intel/openvino/bin/setupvars.sh ./EleSentry & python3 /home/zkzy/workspace/dzsb/object_detection_sample_ssd/object_detection_sample_ssd.py -m person-vehicle-bike-detection-2002.xml -d MYRIAD & 附录

安装所需文件已上传百度网盘: 链接:https://pan.baidu.com/s/1FuOkP2szAMyrnUhbuKppJQ 提取码:6yue 网盘中的opencv4.2.0.zip和opencv_contrib4.2.0.zip是opencv官网下载的原始文件,opencv.tgz和opencv_contrib.tgz是我编译后的文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3