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

在本系列的最后一篇文章中,我们编写了Python代码,用于使用SSD模型检测图像中的人物。在本文中,我们将介绍在Raspberry Pi设备上安装Python-OpenCV,然后查看如何在该设备上启动Python代码。

首先,下载并安装Raspberry Pi OS – Pi设备系列的官方操作系统。我们将Raspberry Pi OS32位)与台式机和推荐软件一起使用。可以使用磁盘映像程序将OS安装在设备的SD卡上。对于Windows桌面,我们使用Win32DiskImager。首次启动时,系统会要求更新所有预安装的系统软件包——我们建议您这样做。更新可能需要几分钟。

现在是时候在设备上安装Python-OpenCV了。为此,有两个主要选项:在设备上编译OpenCV源或在系统上安装现有软件包。为了简单起见,我们使用了后一种选项。幸运的是,Raspberry PiPython有很好的支持。在安装OpenCV库之前,我们需要安装一些先决条件,例如HD5Qt软件包。此后,您需要设置虚拟环境以进一步使用OpenCV软件包。我们已经安装了virtualenvvirtualenvwrapper工具,然后激活了一个名为cv的虚拟环境。然后,我们在该环境中安装了opencv-contrib-python软件包。强烈推荐该软件包,因为它包含所有必需的OpenCV模块。

现在,我们可以使用虚拟环境在Pi设备上启动我们在上一篇文章中开发的用于人员检测的Python代码。这些类与桌面应用程序相同。我们只需要更改DNN模型的路径和图像位置即可。这是为Pi 3设备修改的代码:

# testing SSD
proto_file = r"/home/pi/Desktop/PI_RPD/mobilenet.prototxt"
model_file = r"/home/pi/Desktop/PI_RPD/mobilenet.caffemodel"
ssd_net = CaffeModelLoader.load(proto_file, model_file)
print("Caffe model loaded from: "+model_file)
 
proc_frame_size = 300
# frame processor for MobileNet
ssd_proc = FrameProcessor(proc_frame_size, 1.0/127.5, 127.5)
person_class = 15
 
ssd = SSD(ssd_proc, ssd_net)
 
im_dir = r"/home/pi/Desktop/PI_RPD/test_images"
im_name = "woman_640x480_01.png"
im_path = os.path.join(im_dir, im_name)
image = cv2.imread(im_path)
print("Image read from: "+im_path)
 
obj_data = ssd.detect(image)
persons = ssd.get_objects(image, obj_data, person_class, 0.5)
person_count = len(persons)
print("Person count on the image: "+str(person_count))
Utils.draw_objects(persons, "PERSON", (0, 0, 255), image)
 
res_dir = r"/home/pi/Desktop/PI_RPD/results"
res_path = os.path.join(res_dir, im_name)
cv2.imwrite(res_path, image)
print("Result written to: "+res_path)

如果我们的代码驻留在单个Python文件中,例如pi_rpd_run_img.pi3.py,我们可以使用两个后续命令从终端启动它:

workon cv
python /home/pi/Desktop/PI_RPD/pi_rpd_run_img.pi3.py

这是终端响应的屏幕截图:

从上图可以看到,该代码在Pi设备上的工作方式与在台式计算机上相同。而且,正如预期的那样,它会在测试图像中产生相同的人检测:

因此,我们证明了可以在Raspberry Pi设备上使用SSD模型检测图像中的人物,其精度与台式机或笔记本电脑相同。区别在于速度。是的,边缘设备的性能可能是一个问题。

下一步

接下来的文章中,我们将测试树莓派设备的精度和MibileNet的性能和SqueezeNet模型。我们将选择更好的选项,并将其用于在视频剪辑上的进一步测试,然后在实时模式下进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值