边缘设备上的实时AI人员检测:在Raspberry Pi上测试SSD模型
- 下载数据-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模型相关推荐
- 边缘设备上的实时AI人员检测:使用预先训练的SSD模型检测人员
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的上一篇文章中,我们选择了两种SSD模型进行进一步工作,一种基于MobileNet,另一种基于SqueezeNe ...
- 边缘设备上的实时AI人员检测:入门
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 得益于深度学习(DL),实时视频流中的人的实时检测几年前就已经解决了.但是,在边缘和物联网设备上并不总是那么容易,因为它 ...
- 边缘设备上的实时AI人员检测:在Raspberry Pi上启动SSD
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的最后一篇文章中,我们编写了Python代码,用于使用SSD模型检测图像中的人物.在本文中,我们将介绍在Rasp ...
- 边缘设备上的实时AI人员检测:选择深度学习模型
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的介绍性文章中,我们讨论了为边缘设备创建DL人员检测器的简单方法,该方法是找到合适的DNN模型并编写代码以在设备 ...
- 边缘设备上的实时AI人员检测:以实时模式检测视频中的人员
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 这是七篇系列文章中的最后一篇.到目前为止,我们已经有了用于人员检测的DNN模型和用于在Raspberry Pi设备上启动 ...
- 边缘设备上的实时AI人员检测:检测视频中的人员
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 从本系列的前几篇文章中,我们获得了使用SSD DNN模型检测图像中人物的Python代码.而且我们已经展示了该代码可以在 ...
- (四)Raspberry Pi上的人工智能人脸检测
目录 介绍 在Raspberry Pi上安装组件 在Raspberry Pi上运行检测器 性能注意事项 下一步 在这里,我们解释了用于人脸识别的简单人脸数据库的结构,然后开发了将人脸添加到人脸数据库的 ...
- raspberry pi_在Raspberry Pi上使用TensorFlow进行对象检测
raspberry pi The following post shows how to train and test TensorFlow and TensorFlow Lite models ba ...
- (六)使用Coral USB Accelerator在Raspberry Pi上部署YOLOv5模型
目录 介绍 Raspberry Pi的初始步骤 准备目录并创建虚拟环境 在Raspberry Pi上安装TFLite解释器和PyTorch 在Raspberry Pi上安装Coral USB Acce ...
最新文章
- 看网友如何定义C++
- FlashInspector 【Firefox浏览器插件,flash分析工具】
- mybais传入多个参数的方法
- 电脑壁纸知乎_电脑壁纸(个人向
- 【若依(ruoyi)】数据选择对话框
- mysql数学函数名_MYSQL 常见数学函数说明
- java处理json的工具类(list,map和json的之间的转换)
- springBoot整合redis使用介绍(详细案例)
- linux 学习 个人总结笔录(五)
- (Hopcroft-Carp二分图匹配)Rain on your Parade
- Java 多个pdf合并成一个pdf
- Debian 11 安装,超详细!
- ECU安全访问系列_2(代码篇)
- 关于CSDN获取博客内容接口的x-ca-signature签名算法研究
- 18 岁清华毕业,95后博士生杨幻睿将深度学习 “单核” 变“多核”,显著提高 “对抗性攻击” 防御力-1
- 常见的五种排序,冒泡排序,选择排序,插入排序,并归排序,快速排序
- 阿兰•图灵与人工智能
- sata学习5:常用的概率函数
- Problem D: 零起点学算法24——判断奇偶数
- elasticsearch优化之多字段搜索multi_match查询
热门文章
- python将字典写入csv_Python如何把字典写入到CSV文件的方法示例
- java父类引用子类_java多态,如何理解父类引用指向子类对象
- html文本框 控件,标签和文本框都用于显示文本
- 干干净净用java_十四步 干干净净卸载Oracle
- java xmpp消息推送_基于XMPP协议(openfire服务器)的消息推送实现
- 双十一要来了,如何设计出那些牛X的促销页面?
- 电商促销海报BANNER设计要点,万能套用PSD分层模板,先收好!
- UI 实用素材|可视化后台系统UI视觉界面
- python所有变量更新_python更新全局变量
- memcpy 作用(C++)