使用自定义AI模型在Agent DVR中检测包裹

在本文中,将探讨如何将自定义AI模型应用于Agent DVR和CodeProject.AI Server中,以检测快递包裹,并在检测到包裹时自动开始录像。本文假设已经设置并运行了与Agent DVR和CodeProject.AI Server配合使用的摄像头。如果还没有完成这一步,请参考另一篇文章《如何在Windows上使用Wyze Cam设置Agent DVR和CodeProject.AI Server》。

获取自定义模型

首先,需要一个能够检测包裹的自定义AI模型。本文中,将使用由CodeProject社区工程师Mike Lud训练的模型。Mike Lud开发了一个能够检测包裹的模型。因此,第一步是下载这个模型,并将文件放入CodeProject.AI Server的自定义模型文件夹中。访问Mike Lud的GitHub页面,下载名为package.pt的文件。然后,将package.pt复制到CodeProject.AI Server的自定义模型文件夹中,路径为C:\Program Files\CodeProject\AI\modules\ObjectDetectionYolo\custom-models

Agent DVR中设置自定义AI模型

首先,通过在浏览器中输入http://localhost:32168来打开CodeProject.AI Server。在本文中,使用YOLOv5 6.2来检测物体,因此请确保激活了对象检测(YOLOv5 6.2)。不需要其他模块,所以关闭了所有其他模块。

现在,启动Agent DVR。转到服务器菜单,位于左上角。本文假设CodeProject.AI Server已经设置好了,因此点击Configuration下的Settings。然后从General下拉菜单中选择AI Settings。点击Configure旁边的...按钮。

接下来,点击Edit图标以更新AI服务器设置。这里有两个需要更新的地方。首先,默认的Endpoint/v1/vision/detection。当使用自定义模型时,这需要修改为/v1/vision/model-name。在例子中,使用的是package.pt,因此这需要是/v1/vision/package

接下来要更新的是Object Classes。每当添加自定义模型时,这个对象列表需要更新以包括正在检测的项目。在这种情况下,是“包裹”。默认列表是:

person,bicycle,car,motorcycle,airplane,bus,train,truck,boat,traffic light, fire hydrant,stop sign,parking meter,bench,bird,cat,dog,horse,sheep,cow,elephant, bear,zebra,giraffe,backpack,umbrella,handbag,tie,suitcase,frisbee,skis, snowboard,sports ball,kite,baseball bat,baseball glove,skateboard,surfboard, tennis racket,bottle,wine glass,cup,fork,knife,spoon,bowl,banana,apple,sandwich, orange,broccoli,carrot,hot dog,pizza,donot,cake,chair,couch,potted plant,bed, dining table,toilet,tv,laptop,mouse,remote,keyboard,cell phone,microwave,oven,toaster,sink, refrigerator,book,clock,vase,scissors,teddy bear,hair dryer,toothbrush

这需要更新为:

person,bicycle,car,motorcycle,airplane,bus,train,truck, boat,traffic light,fire hydrant,stop sign,parking meter,bench,bird,cat,dog,horse,sheep, cow,elephant,bear,zebra,giraffe,backpack,umbrella,handbag,tie,suitcase,frisbee, skis,snowboard,sports ball,kite,baseball bat,baseball glove,skateboard,surfboard, tennis racket,bottle,wine glass,cup,fork,knife,spoon,bowl,banana,apple,sandwich, orange,broccoli,carrot,hot dog,pizza,donot,cake,chair,couch,potted plant,bed, dining table,toilet,tv,laptop,mouse,remote,keyboard,cell phone,microwave,oven,toaster,sink, refrigerator,book,clock,vase,scissors,teddy bear,hair dryer,toothbrush,package

点击接下来的四个提示中的OK按钮以接受AI服务器设置。

现在转到摄像头设置,点击实时馈送页面左下角的编辑图标。然后从General下拉菜单中选择Object Recognition。点击Configure前面的...按钮。

现在“包裹”已经添加到Object Classes列表中,有一个按钮供它使用。通常包裹是由人送来的,所以设置对象检测为两项,即人和包裹是个好主意。要么输入“person,package”,或者简单地从列表中选择personpackage按钮。点击这个菜单和下一个菜单中的OK按钮以接受这些设置。

在尝试让自定义模型工作时,遇到了许多问题。错误是忘记了在AI服务器设置中设置Endpoint,但在这个过程中,出于绝望实施了所有能想到的,以让Agent DVR检测到包裹。尝试的一件事是实施蒙版。因此,转到摄像头设置,从General下拉菜单中选择Alert Filter。然后,点击Configure旁边的...按钮。

在这里,可以添加一个蒙版。这对当前设置来说不是必需的,但如果有一个静态摄像头指向门,而只想在有人走到台阶上而不是街上时触发,这可能会有所帮助。用鼠标左键点击并拖动摄像头图像可以指定要忽略的区域。用鼠标右键点击将允许擦除蒙版选择。

无论是否添加了蒙版,在Find字段中,确保列出了“person,package”。点击两次OK按钮以接受这些设置。

现在需要更改检测器设置。转到摄像头设置,从下拉菜单中选择Detector。将Detector类型更改为“Simple”。简单的检测器意味着AI检测将在运动时被触发。希望它非常容易检测到包裹,所以将这个设置设置为简单,并点击OK以接受设置。

最后,希望有人在摄像头领域留下包裹时触发一个事件。在写的另一篇文章中,有人问如何在检测到时触发录像,所以将在这里演示。转到摄像头设置,选择Actions。然后点击Add。从If下拉菜单中选择Object Found,在Then下拉菜单中选择Start Recording On。相机应该在这样做之后自动被选中,但请确保相机(在例子中是Eye Spy)在Device部分,然后点击OK。再次点击OK以接受这些操作。

好了!让把一个包裹放入这个坏小子的摄像头领域,看看效果如何!为了说明目的,Action将触发对象检测,可以展示一个包裹被检测到。

KA-BLAM!终于做到了!包裹被检测到。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485