• 下载数据-19.3 MB
  • 下载模型-43.5 MB
  • 下载结果-36.66 MB

在本系列的上一篇文章中,我们已经在Raspberry Pi设备上启动了人体检测软件。在这一本文中,我们将比较Raspberry Pi 3B设备上的两种SSD模型(MobileNet和SqueezeNet),以提高准确性和性能。我们将选择一个更好的视频片段,以用于实时模式。

首先,让我们创建一个实用程序类,以评估函数执行的时间和FPS:

import timeclass FPS:def __init__(self):self.frame_count = 0self.elapsed_time = 0def start(self):self.start_time = time.time()def stop(self):self.stop_time = time.time()self.frame_count += 1self.elapsed_time += (self.stop_time-self.start_time)def count(self):return self.frame_countdef elapsed(self):return self.elapsed_timedef fps(self):if self.elapsed_time==0:return 0else:return self.frame_count/self.elapsed_time

上面的类仅在调用start方法时保存执行的开始时间,并评估消耗的时间直到调用stop方法为止。知道总耗用时间和函数执行的次数,我们可以计算出较长计算过程的平均FPS。

现在,让我们修改Python代码以评估检测的检测时间(此处仅显示修改的部分):

fps = FPS();
fps.start()
obj_data = ssd.detect(image)
persons = ssd.get_objects(image, obj_data, person_class, 0.5)
fps.stop()
person_count = len(persons)
print("Person count on the image: "+str(person_count))
print("FPS: "+str(fps.fps()))

通过在几张图像上运行代码,我们可以估计设备的处理单元检测帧中人的平均时间。我们已经为MobileNet DNN模型完成了此操作,并且获得了1.25 FPS的平均值。这意味着设备可以在约0.8秒内处理一帧。

要测试SqueezeNet SSD模型,让我们再次修改代码。一个明显的变化是模型加载的路径:

proto_file = r"/home/pi/Desktop/PI_RPD/squeezenet.prototxt"
model_file = r"/home/pi/Desktop/PI_RPD/squeezenet.caffemodel"

另一个重要的修改是切换到具有不同缩放参数的帧处理器。SqueezeNet模型已经使用其自己的缩放系数进行了训练,因此我们必须为模型指定适当的值:

# frame processor for SqueezeNet
ssd_proc = FrameProcessor(proc_frame_size, 1.0, 127.5)

在用于MobileNet的相同图像上测试SqueezeNet模型,我们获得了略高的处理速度,约为1.5 FPS(或每帧约0.67秒)。看起来SqueezeNet模型比Raspberry Pi设备上的MobileNet更快。速度是主要问题,我们可能应该使用速度更快的模型。

但是在用术语或精度测试模型之前,我们不要得出结论。我们需要比较阳性检出率。为什么在这里很重要?当我们以实时模式测试人员检测时,这将是完全清楚的。显而易见的原因是,如果检测率很高,则在视频流上找到人的可能性就会增加。

要估计模型的检测率,我们应该针对许多图像运行代码并评估正确检测的次数。这是两个图像的实验结果:

如您所见,MobileNet SSD在两个图像上都发现了该人,并且报告的可能性很高——超过90%。SqueezeNet模型仅在其中一张图像上找到该人,置信度很低,只有57%。因此测试表明,使用SqueezeNet SSD进行人检测的可能性比MobileNet模型低约两倍。

考虑到速度估计和准确性评估这两个实验,我们宣布MobileNet DNN为最终获奖者。我们将对该模型进行所有进一步的实验。注意,如果我们改变主意,则所有代码都可以轻松地适用于SqueezeNet模型。

下一步

在本系列的下一篇文章中,我们将开发用于在视频流中进行人员检测的Python代码。它将使用OpenCV库从视频文件中读取帧。然后,我们将了解检测算法如何处理流数据以及如何将其适配于实时视频。

边缘设备上的实时AI人员检测:在Raspberry Pi上测试SSD模型相关推荐

  1. 边缘设备上的实时AI人员检测:使用预先训练的SSD模型检测人员

    下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的上一篇文章中,我们选择了两种SSD模型进行进一步工作,一种基于MobileNet,另一种基于SqueezeNe ...

  2. 边缘设备上的实时AI人员检测:入门

    下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 得益于深度学习(DL),实时视频流中的人的实时检测几年前就已经解决了.但是,在边缘和物联网设备上并不总是那么容易,因为它 ...

  3. 边缘设备上的实时AI人员检测:在Raspberry Pi上启动SSD

    下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的最后一篇文章中,我们编写了Python代码,用于使用SSD模型检测图像中的人物.在本文中,我们将介绍在Rasp ...

  4. 边缘设备上的实时AI人员检测:选择深度学习模型

    下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的介绍性文章中,我们讨论了为边缘设备创建DL人员检测器的简单方法,该方法是找到合适的DNN模型并编写代码以在设备 ...

  5. 边缘设备上的实时AI人员检测:以实时模式检测视频中的人员

    下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 这是七篇系列文章中的最后一篇.到目前为止,我们已经有了用于人员检测的DNN模型和用于在Raspberry Pi设备上启动 ...

  6. 边缘设备上的实时AI人员检测:检测视频中的人员

    下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 从本系列的前几篇文章中,我们获得了使用SSD DNN模型检测图像中人物的Python代码.而且我们已经展示了该代码可以在 ...

  7. (四)Raspberry Pi上的人工智能人脸检测

    目录 介绍 在Raspberry Pi上安装组件 在Raspberry Pi上运行检测器 性能注意事项 下一步 在这里,我们解释了用于人脸识别的简单人脸数据库的结构,然后开发了将人脸添加到人脸数据库的 ...

  8. raspberry pi_在Raspberry Pi上使用TensorFlow进行对象检测

    raspberry pi The following post shows how to train and test TensorFlow and TensorFlow Lite models ba ...

  9. (六)使用Coral USB Accelerator在Raspberry Pi上部署YOLOv5模型

    目录 介绍 Raspberry Pi的初始步骤 准备目录并创建虚拟环境 在Raspberry Pi上安装TFLite解释器和PyTorch 在Raspberry Pi上安装Coral USB Acce ...

最新文章

  1. 看网友如何定义C++
  2. FlashInspector 【Firefox浏览器插件,flash分析工具】
  3. mybais传入多个参数的方法
  4. 电脑壁纸知乎_电脑壁纸(个人向
  5. 【若依(ruoyi)】数据选择对话框
  6. mysql数学函数名_MYSQL 常见数学函数说明
  7. java处理json的工具类(list,map和json的之间的转换)
  8. springBoot整合redis使用介绍(详细案例)
  9. linux 学习 个人总结笔录(五)
  10. (Hopcroft-Carp二分图匹配)Rain on your Parade
  11. Java 多个pdf合并成一个pdf
  12. Debian 11 安装,超详细!
  13. ECU安全访问系列_2(代码篇)
  14. 关于CSDN获取博客内容接口的x-ca-signature签名算法研究
  15. 18 岁清华毕业,95后博士生杨幻睿将深度学习 “单核” 变“多核”,显著提高 “对抗性攻击” 防御力-1
  16. 常见的五种排序,冒泡排序,选择排序,插入排序,并归排序,快速排序
  17. 阿兰•图灵与人工智能
  18. sata学习5:常用的概率函数
  19. Problem D: 零起点学算法24——判断奇偶数
  20. elasticsearch优化之多字段搜索multi_match查询

热门文章

  1. python将字典写入csv_Python如何把字典写入到CSV文件的方法示例
  2. java父类引用子类_java多态,如何理解父类引用指向子类对象
  3. html文本框 控件,标签和文本框都用于显示文本
  4. 干干净净用java_十四步 干干净净卸载Oracle
  5. java xmpp消息推送_基于XMPP协议(openfire服务器)的消息推送实现
  6. 双十一要来了,如何设计出那些牛X的促销页面?
  7. 电商促销海报BANNER设计要点,万能套用PSD分层模板,先收好!
  8. UI 实用素材|可视化后台系统UI视觉界面
  9. python所有变量更新_python更新全局变量
  10. memcpy 作用(C++)