目录
到目前为止,我已经成功地在 CodeProject.AI Windows上设置了代理DVR,并在Agent DVR中使用了面部识别。在本文中,我将介绍如何在代理DVR和CodeProject.AI服务器中使用自定义AI模型。更具体地说,我演示如何使用代理DVR和CodeProject.AI服务器来检测交付包,并在检测到包裹时进行记录。
本文假设您已经设置了摄像机,并使用了代理DVR和CodeProject.AI服务器。我不会在这里重复介绍,所以如果你需要先这样做,请查看我的文章如何使用Wyze Cam在Windows上设置代理DVR和CodeProject.AI服务器。
获取自定义模型
首先,我们需要一个自定义的AI模型。在本文中,请使用检测包的自定义 AI 模型。伟大的 Mike Lud,CodeProject社区工程师正在训练许多模型,并开发了一个检测包的模型。所以第一步是下载包模型,并将其放在自定义模型文件夹中。转到Mike Lud的GitHubM,并下载 package.pt。然后,package.pt复制到CodeProject.AI服务器的自定义模型文件夹中,该文件夹为 C:\Program Files\CodeProject\AI\modules\ObjectDetectionYolo\custom-models。
在代理DVR中设置自定义AI模型
首先,通过将 http://localhost:32168 放入浏览器中来打开CodeProject.AI服务器。在本文中,我们使用YOLOv5 6.2来检测对象,因此请确保对象检测(YOLOv5 6.2)处于活动状态。我们不需要任何其他模块,所以我关闭了所有其他模块。
现在,启动代理DVR。转到左上角的服务器菜单。
本文假设CodeProject.AI服务器已经设置,因此请点击配置下的设置。
然后从“常规”下拉列表中,选择“AI设置”。
然后单击“配置”旁边的“...”按钮。
然后点击 编辑 图标以更新AI服务器设置。
这里有两件事需要更新。首先,默认终结点是/v1/vision/detection。每当你做一个自定义模型时,都需要将其修改为/v1/vision/model-name。在我们的例子中,我们使用的是 package.pt,所以这需要是/v1/vision/package。
接下来要更新的是对象类。每当添加自定义模型时,都需要更新此对象列表以包含您正在解制的项目。在本例中为“包”。默认列表为:
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
在接下来的四个提示中点击确定以接受AI服务器设置。
现在,通过在实时源上单击左下角的编辑图标转到相机设置。
然后从“常规”下拉列表中,选择“对象识别”。
单击“配置”前面的“...”按钮。
现在“包”已添加到对象类列表中,有一个按钮。通常,包由人员交付,因此最好为两个项目(人员和包)设置对象检测。输入“人员,包”,或者直接从列表中选择人员和包按钮。点击此菜单上的确定,然后点击下一步接受这些设置。
在尝试让自定义模型工作时,我遇到了很多问题。我的错误是我忘记在AI服务器设置中设置端点,但在此过程中,我出于让代理DVR检测包的绝望而实现了我所能实现的一切。我尝试的一件事是实现Mask。因此,请转到相机设置,然后从常规下拉列表中选择警报过滤器。然后,点击配置旁边的...。
在这里您可以添加掩码。这对于我目前的设置不是必需的,但是如果您有一个指向您门的静态摄像头,并且您只想在有人走到台阶而不是街道上时触发,这可能会有所帮助。左键单击鼠标并将其拖动到相机图像上将指定要忽略的区域。右键单击鼠标将允许您擦除蒙版选择。
无论是否添加掩码,在“查找”字段中,请确保列出“人员,包”。点击确定两次以接受这些设置。
现在我们需要更改检测器设置。转到相机设置,然后从下拉列表中选择检测器。
将检测器类型更改为“简单”。简单检测器意味着AI检测将在运动时被触发。我希望它非常容易检测包,所以我将此设置设置为“简单”并点击“确定”接受设置。
最后,我们希望有人在相机字段中留下包裹以触发事件。在我写的另一篇文章中,有人问如何在检测时触发录音,所以我将在这里演示。转到相机设置,然后选择操作。然后单击“添加”。从“如果”下拉列表中,选择“找到对象”,然后在下拉列表中选择“开始录制”。在此之后,应自动选择相机,但请确保相机(在我的案例中,Eye Spy)位于“设备”部分中,然后单击“确定”。再次点击确定以接受这些操作。
检测包
好吧!让我们把一个包放进这个坏男孩的相机领域,看看吧!为了便于说明,我的操作将触发对象检测,以便我可以证明检测到包。
哗啦啦!我终于做到了!检测到包。
嗯,就是这样!此过程也适用于其他自定义模型。现在,我们已经展示了如何在自定义AI模型上设置代理DVR,并在检测到包时触发记录。
https://www.codeproject.com/Articles/5352147/How-to-Setup-a-Custom-AI-Model-in-Agent-DVR-Using