树莓派实时目标检测(训练自己的数据集)

0.背景

本科毕设做的是嵌入式系统的实时目标检测,具体点就是在树莓派4B上训练自己的轻量化目标检测网络。
网上用树莓派做目标检测的资料很多,但是要做实时检测,资料就少的可怜了。

这是个无脑冲的版本,实现起来最简单最快捷,甚至不需要写代码(可见现在CV的门槛有多低),方便大家看。在性能上、检测物体数量上、尺寸上等个性化修改优化不被包含在这个博客里。

1.数据集的准备

目标检测就是用方框框定图片位置,这里使用labelimg软件。
开源软件,windows系统直接到github上下载zip文件就行。链接在下面:
tzutalin/labelImg/Release
在这里插入图片描述
标注的过程没得说,体力活,但是掌握一些技巧能够显著提升标注效率。提供几点建议:

  • 这里我们先把图片文件夹和注释文件夹分开设置,否则标注会默认放到图片同一个文件夹。
  • Open Dir设置的是图片文件夹,Change Save Dir设置的是标签文件夹。
  • 在软件菜单栏的View中,选择Auto Saving和Single Class Mode,这样的话就不必每张图都点确认保存,同时我们每一轮只标注一种类别,这样会大大减少选择多标签的过程。
  • 基本的快捷键:W- 绘制矩形框; A-前一张图片; D-后一张图片;

等到绘制完成,我们得到两个文件夹,一个是图片文件夹,一个是包含对应名称的标签xml文件夹;

例如:
|–dataset
|------Images
|------Labels

2.树莓派端环境准备

2.0连接树莓派

方便高速地用网线有线树莓派连接电脑,
参考我这个博客:树莓派有线SSH连接电脑(PC开发+树莓派调试+管理文件)

2.1检查默认Python版本

为了统一后续的操作,先看一下自己的树莓派默认的python版本。如果是2.x版本,改成3比较好一点,不改的话后面统一用python3命令也未尝不可。
如果这个树莓派还有其他乱七八糟的用途,最好装个miniconda来创建虚拟环境。

2.2安装TFLite

虽然现在社区热度上Pytorch占优,但是对于部署应用,TF还是比较有优势的。这部分参考的是Tensorflow官网参考文档。树莓派快速部署TFlite (直接看我节就行)

值得一提的坑是,如果你看的是中文版文档,大概率已经很久没更新了,我在写这篇文章的时候英文指导已经到2.5版本,而中文文档还让你安装2.1版本。对于TFlite来说,安装版本还是比较重要的,因为Tensorflow光卷积这个算子就有很多个版本,如果Tflite版本低了,可能跑不起来你的训练的模型。

安装就一行代码:

pip install xxxxxx.whl

这里的whl文件,在这个网站tflite/Release里面找。
要安装tflite_runtime 开头,armv7l(树莓派4的处理器架构)结尾的
例如:tflite_runtime-2.5.0-cp36-cp36m-linux_armv7l.whl 就是tflite2.5,python版本3.6的,armv7架构。

2.3下载示例并且测试是否能运行

在根目录下,git TFlite提供的demo:

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

测试:

cd examples/lite/examples/object_detection/raspberry_pi

# 下载已经训练好的coco模型到/tmp文件夹,也可改成固定文件夹
bash download.sh /tmp

# 运行
python3 detect_picamera.py \
  --model /tmp/detect.tflite \
  --labels /tmp/coco_labels.txt

3. 训练自己的模型

4. 模型的转换和量化

结果

在树莓派4B上目前能跑个4 FPS左右(注意!没有用什么Movidus或者Coral加速器哦)
效果视频如下:

版权声明:本文为CSDN博主「PeilinWu99」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_22945165/article/details/114393592

PeilinWu99

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

YOLOv4 介绍及其模型优化方法

YOLOv4 介绍及其模型优化方法一、YOLOv4 介绍2020 年 4 月,YOLOv4 在悄无声息中重磅发布,在目标检测领域引起广泛的讨论。在 YOLO 系列的原作者 Joseph Redmon 宣布退出 CV