在树莓派上运行TensorFlow-Lite实现对象检测(持续更新)
简介
博主借鉴了目前tensorflow lite运行在树莓上的教程,参考写出了这篇可能是小白最容易理解与上手tensorflow以及对象检测的博客。按照步骤走下来运气好的情况大概半天左右,主要取决于网速是否流畅。你将学会有关如何在Raspberry Pi上设置TensorFlow Lite并使用它运行对象检测模型的分步说明(Part1)。如何在Pi上设置Coral USB Accelerator并运行Edge TPU检测模型(这部分将在下篇博客介绍Part2)。
TensorFlow Lite(TFLite)模型的运行速度比Raspberry Pi上的常规TensorFlow模型快得多。这里有一篇科技文章可以看一下。
Part1-如何在Raspberry Pi上设置和运行TensorFlow Lite对象检测模型
在Raspberry Pi上设置TensorFlow Lite比普通TensorFlow容易得多!这些是设置TensorFlow Lite所需的步骤:
- 1a. 更新Raspberry Pi
- 1b. 下载此存储库并创建虚拟环境
- 1c. 安装TensorFlow和OpenCV
- 1d. 设置TensorFlow Lite检测模型
- 1e. 运行TensorFlow Lite模型!
步骤1a. 更新Raspberry Pi
首先,需要对Raspberry Pi进行全面更新。打开终端并发出:
sudo apt-get update
sudo apt-get upgrade
该更新可能需要一分钟到一个小时。
可以在更新过程中,请确保在“ Raspberry Pi配置”菜单中启用了相机界面。单击屏幕左上角的Pi图标,选择“Preferences”->“ Raspberry Pi Configuration”,然后转到“接口”选项卡,并验证“相机”已设置为“已启用”。如果不是,请立即启用它,然后重新启动Raspberry Pi。
步骤1b. 下载此存储库并创建虚拟环境
接下来,通过发出以下命令来克隆此GitHub存储库(资源还没上传)。该存储库包含我们将用于运行TensorFlow Lite的脚本以及一个使安装一切变得容易的shell脚本:
git clone https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi.git
这会将所有内容下载到名为TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi的文件夹中。需要一点时间,所以将文件夹重命名为“ tflite1”,然后将其cd入:
mv TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi tflite1
cd tflite1
本指南的其余部分将在此/ home / pi / tflite1目录中工作。下一步是创建一个称为“ tflite1-env”的虚拟环境。
我正在本指南中使用虚拟环境,因为它可以防止您的Pi上已经安装的软件包库版本之间发生任何冲突。将其安装在自己的环境中可以避免此问题。例如,如果您已经使用其他指南在Pi上安装了TensorFlow v1.8,则可以按原样保留该安装,而不必担心会覆盖它。
通过发出以下命令安装virtualenv:
sudo pip3 install virtualenv
然后,通过发出以下命令来创建“ tflite1-env”虚拟环境:
python3 -m venv tflite1-env
这将在tflite1目录中创建一个名为tflite1-env的文件夹。tflite1-env文件夹将包含此环境的所有软件包库。接下来,通过发出以下命令激活环境:
source tflite1-env/bin/activate
您需要source tflite1-env/bin/activate在/ home / pi / tflite1目录中发出命令,以在每次打开新的终端窗口时重新激活环境。您可以通过检查(tflite1-env)是否出现在命令提示符路径之前来确定环境何时处于活动状态,如下面的屏幕快照所示。
此时,输入
ls
便可看到tflite1目录的外观。
如果您的目录看起来正确,那么该进入第1c步了!
步骤1c. 安装TensorFlow Lite依赖项和OpenCV
接下来,我们将安装TensorFlow,OpenCV以及两个软件包所需的所有依赖项。运行TensorFlow Lite不需要OpenCV,但是此存储库中的对象检测脚本使用它来获取图像并在其上绘制检测结果。
为了简化操作,这里编写了一个Shell脚本,该脚本将自动下载并安装所有软件包和依赖项。通过发出以下命令运行它:
bash get_pi_requirements.sh
这将下载大约400MB的安装文件,因此需要一段时间。工作时去喝杯咖啡!如果您想查看已安装的所有内容,只需打开get_pi_dependencies.sh即可查看软件包列表。
注意:如果在运行bash get_pi_requirements.sh命令时遇到错误,则可能是由于Internet连接超时或下载的软件包数据已损坏。如果出现错误,请尝试重新运行该命令几次。
另一个注意事项:shell脚本会自动安装最新版本的TensorFlow。如果要安装特定版本,pip3 install tensorflow==X.XX请在运行脚本后发出问题(将X.XX替换为要安装的版本)。这将覆盖具有指定版本的现有安装。
那很简单!继续下一步。
步骤1d. 设置TensorFlow Lite检测模型
使用Google的示例TFLite模型
Google提供了样本量化的SSDLite-MobileNet-v2对象检测模型,该模型经过MSCOCO数据集的训练,并转换为可在TensorFlow Lite上运行。它可以检测和识别80种不同的常见物体,例如人,汽车,杯子等。
通过发布以下内容下载样本模型(可在TensorFlow官方网站的“对象检测”页面上找到):
wget https://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip
unzip coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip -d Sample_TFLite_model
好的,示例模型已经准备就绪!
步骤1e. 运行TensorFlow Lite模型!
现在该来看一下TFLite对象检测模型了!首先,通过关闭所有不使用的应用程序来释放内存和处理能力。另外,请确保已插入网络摄像头或Picamera。
通过从/ home / pi / tflite1目录中发出以下命令来运行实时网络摄像头检测脚本。(在运行命令之前,通过检查(tflite1-env)是否出现在命令提示符之前,确保tflite1-env环境处于活动状态。)TFLite_detection_webcam.py脚本可与Picamera或USB网络摄像头一起使用。
python3 TFLite_detection_webcam.py --modeldir=Sample_TFLite_model
初始化几分钟后,将出现一个窗口,显示网络摄像头。检测到的对象将实时显示边界框和标签。
转载:https://blog.csdn.net/weixin_42673396/article/details/105525863