在ssd中显示map tensorflow代码_树莓派安装Tensorflow利用MobileNet实现objectdetection小白教程(一)...

树莓派安装Tensorflow并利用SSDLite-MobileNet实现object detection小白教程

简介

对象检测是机器视觉领域最常用的功能之一,即对探测的目标分辨出是何物,本教程使用当前最常用的单片机树莓派3B+,设置安装tensorflow并实现利用较小的神经网络SSDLite-MobileNet进行识物。

本教程参考了国外一个大神的GitHub,并对其中的相关错误进行纠正以及补充,主要工作有利用虚拟环境实现更好的python环境管理,纠正相关错误。这篇教程适合深度学习初学者,通过这篇教程,你将实现tensorflow的安装、opencv的安装、虚拟环境的使用、深度网络的调用与使用,最终实现让你的树莓派实现辨物的智慧。

[video(video-R4fDqIni-1589249261544)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=668130487)(image-https://ss.csdn.net/p?http://i0.hdslb.com/bfs/archive/ad66a99e38a4c8b96d0f53c4e5ca963218ca6ac2.jpg)(title-树莓派安装Tensorflow并利用SSDLite-MobileNet实现object detection效果)]

情按照一下教程步骤实现,如不意外时间约为半天。update(2020.5.12)

  1. 更新你的树莓派(pi3B+/4B)
  2. 安装虚拟环境
  3. 安装tensorflow以及opencv
  4. 编译安装protobuf以及设置PYTHONPATH变量
  5. 对象检测!

步骤

0. 更新你的树莓派(pi3B+/4B)

首先,Raspberry Pi需要完全更新。打开终端并发出:

sudo apt-get update
sudo apt-get upgrade

根据您更新Pi的时间长短,升级可能需要一分钟到一个小时。

036ee51cd5e7c249fa2120bec0fea36e.png

1. 安装虚拟环境

在您的主目录,创建一个名为“ tensorflow”的目录,并将其cd进入。

mkdir tensorflow
cd tensorflow1

通过git clone命令从GitHub下载tensorflow存储库:

git clone --depth 1 https://github.com/tensorflow/models.git

本指南的其余部分将在此/ home / pi / tensorflow目录中工作。下一步是创建一个称为“ tf-env”的虚拟环境。

在本指南中使用的是虚拟环境,==因为它可以防止您的Pi上已经安装的软件包库版本之间发生任何冲突。将其安装在自己的环境中可以避免此问题。==

通过发出以下命令安装virtualenv:

sudo pip3 install virtualenv

然后,通过发出以下命令来创建“ tf-env”虚拟环境:

python3 -m venv tf-env

这将在tensorflow目录中创建一个名为tf-env的文件夹。tf-env文件夹将包含此环境的所有软件包库。接下来,通过发出以下命令激活环境:

source tf-env/bin/activate

每次打开新的终端或者重启工作时需要重新激活环境,需要在/ home / pi / tensorflow目录中发出上述命令。

63db1bdc162278c6d7077571de1c8906.png

2. 安装tensorflow以及opencv

按照原教程走下来会有几个bug,经过多次实践已经一一排除,为了简化操作,我仿照EdjeElectronics的GitHub编写了一个Shell脚本,该脚本将自动下载并安装所有软件包和依赖项。 首先需要下载bash文件

git clone https://github.com/xxlbigbrother/TensorFlow-Object-Detection-on-Raspberry-Pi-Embedded-Visual-Hardware.git

打开文件夹复制tf_get_pi_requirements.sh以及Object_detection_picamera.py到/home/pi/tensorflow/models/research/object_detection目录下。

通过发出以下命令运行bash文件自动安装tensorflow以及opencv:

bash tf_get_pi_requirements.sh

将下载超过200M的文件,需要一段时间,如果运行bash tf_get_pi_requirements.sh命令时遇到错误,则可能是由于Internet连接超时或下载的软件包数据已损坏。如果出现错误,请尝试重新运行该命令几次。

这里温馨提示:深夜或者大清晨下载速度较快,达到20~30k/s.

d72beda7f8af5873d79270138ae32304.png

3. 编译安装protobuf以及设置PYTHONPATH变量

TensorFlow对象检测API使用Protobuf,这是一个实现Google协议缓冲区数据格式的软件包。您以前需要从源代码进行编译,但是现在安装很简单!

sudo apt-get install protobuf-compiler

完成后通过下述命令验证其是否安装成功。您应该得到libprotoc 3.6.1或类似的答复。

protoc --version

接下来,我们需要修改PYTHONPATH环境变量以指向刚下载的TensorFlow信息库内的某些目录。我们希望每次打开终端时都设置PYTHONPATH,因此我们必须修改的.bashrc文件。通过发出以下命令打开它:

sudo nano ~/.bashrc

移至文件末尾,并在最后一行添加:

export PYTHONPATH=$PYTHONPATH:/home/pi/tensorflow1/models/research:/home/pi/tensorflow1/models/research/slim

158c76cd162c3b2c3128584469886a71.png

然后,保存并退出文件。这样一来,每次您打开新终端时都会调用“ export PYTHONPATH”命令,因此将始终正确设置PYTHONPATH变量。关闭,然后重新打开终端。 现在,我们需要使用Protoc来编译对象检测API使用的协议协议(.proto)文件。.proto文件放在/ research / object_detection / protos中,但是我们需要从/ research目录执行命令。执行以下命令:

cd /home/pi/tensorflow1/models/research
protoc object_detection/protos/*.proto --python_out=.

此命令将所有“名称” .proto文件转换为“ name_pb2” .py文件。接下来,进入object_detection目录:

cd /home/pi/tensorflow1/models/research/object_detection

现在,我们将从TensorFlow检测模型库中下载SSD_Lite模型。模型动物园是谷歌的预训练对象检测模型的集合,这些模型具有不同水平的速度和准确性。树莓派的处理器较弱,因此我们需要使用处理能力较小的模型。尽管该模型将运行得更快,但要以降低精度为代价。在本教程中,我们将使用SSDLite-MobileNet,这是最快的模型。 Google不断发布具有改进速度和性能的模型,经常回访模型库,看看是否有更好的模型。 下载SSDLite-MobileNet模型并通过发出以下命令解压缩:

wget http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz
tar -xzvf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz

现在,该模型位于object_detection目录中,可以使用了。

4. 检测物体!

好的,现在一切就绪,可以在Pi上执行对象检测!此存储库中的Python脚本Object_detection_picamera.py用于检测来自Picamera或USB网络摄像头的实时供稿中的对象。基本上,脚本会设置模型和标签映射的路径,将模型加载到内存中,初始化Picamera,然后开始对Picamera中的每个视频帧执行对象检测。

  • 如果您使用的是Picamera,请确保在Raspberry Pi配置菜单中将其启用。

80558b67267ac38ee60627c98434e44b.png

在/object_detection目录下发出命令

python Object_detection_picamera.py 
  • 若你使用的是USB摄像头,则在上述命令添加--usbcam
python3 Object_detection_picamera.py --usbcam

脚本初始化后(最多可能需要30秒),您将看到一个窗口,显示相机实时取景。视图内的公共对象将被识别并在其周围绘制一个矩形。

5a99b548f6a96394a86e5825ca63e8a4.png

注意事项:

  • 判断tensorflow是否安装成功,在tf-env虚拟环境下输入:
python
import tensorflow as tf

若无报错,即安装成功,若错误,请重新运行bash脚本,可能是下载时间过长断开。

  • 判断opencv是否安装成功,在tf-env虚拟环境下输入:
python
import cv2

若无显示导入cv2错误,即安装成功,若错误,请重新运行bash脚本,可能是下载时间过长断开。

==该教程识别帧率过低,在0.8帧左右,建议在树莓派使用tensorflowlite以及corel tpu加速器,帧率较高。==

f0de2784131df452e03f62a5066f0960.png

博主会录制一期帧率以及效果对比视频,欢迎关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值