用料
示例
在这个例子中,我们将使用 BW21-CBV-Kit 开发板,通过板载摄像头传感器 (JX-F37P) 来检测 80 种不同类型的物体,例如人、自行车、汽车、笔记本电脑等。
以下示例显示了如何使用“对象检测”和“屏幕显示”。
这两个示例之间的主要区别在于 Object Detection 结果的处理位置。“ObjectDetectionCallback” 使用回调函数,而 “ObjectDetectionLoop” 处理循环函数中的结果。
- ObjectDetectionLoop 对象检测循环
- ObjectDetectionCallback 对象检测回调
实现流程
在 “文件” -> “示例” -> “AmebaNN” -> ObjectDetectionLoop“ 中打开一个 Object Detection 范例。
- 在突出显示的代码片段中,在“ssid”中填写您的 WiFi 名称,在“pass”中填写 WiFi 密码。
使用 modelSelect() 函数选择神经网络 (NN) 任务和模型,以黄色突出显示。
此函数接受 4 个参数:神经网络任务、对象检测模型、人脸检测模型和人脸识别模型。
如果所选神经网络任务不需要它们,请替换为 “NA_MODEL”。
请注意,在调用 begin() 函数之前,必须调用 modelSelect() 函数。
有效的神经网络任务:OBJECT_DETECTION、FACE_DETECTION FACE_RECOGNITION
有效的对象检测模型:
YOLOv3 模型:DEFAULT_YOLOV3TINY、CUSTOMIZED_YOLOV3TINY
YOLOv4 模型:DEFAULT_YOLOV4TINY、CUSTOMIZED_YOLOV4TINY
YOLOv7 模型:DEFAULT_YOLOV7TINY、CUSTOMIZED_YOLOV7TINY
有效的人脸检测模型:DEFAULT_SCRFD、CUSTOMIZED_SCRFD
有效的人脸识别模型:DEFAULT_MOBILEFACENET、CUSTOMIZED_MOBILEFACENET
如果您想使用自己的 NN 模型,请选择自定义选项(例如,CUSTOMIZED_YOLOV4TINY/ CUSTOMIZED_SCRFD/ CUSTOMIZED_MOBILEFACENET)。
要了解转换 AI 模型的过程,请参阅 https://www.amebaiot.com/en/amebapro2-ai-convert-model/ 。
此外,请参阅 https://www.amebaiot.com/en/amebapro2-apply-ai-model-docs/ 了解如何安装和使用转换后的模型。
请注意,对于来自 pytorch 的 Yolov7 对象检测训练,您需要执行额外的步骤进行重新参数化。对于此重新参数化步骤,Realtek 在文件夹 Yolov7_reparam_scripts 中的 ~/NeuralNetwork/Yolov7_reparam_scripts 下提供了两个脚本。
要运行的命令是:
python reparam_yolov7-tiny.py –weights weights/best.pt –custom_yaml custom/yolov7-tiny-deploy.yaml –output best_reparam.pt
- 编译代码并将其上传到 BW21-CBV-Kit 。
- 按下 复位按钮后,等待 BW21-CBV-Kit 连接到 WiFi 网络。
- 主板的 IP 地址和 RTSP 的网络端口号将显示在 Serial Monitor 中。
- 可以使用 VLC 验证检测到的对象的结果。您可以从链接下载 VLC 媒体播放器 此处。
- 软件安装完成后,打开 VLC 媒体播放器,然后转到“媒体”->“打开网络流”。
- 确保您的 PC 与 BW21-CBV-Kit 板连接到同一网络以进行串流。
- 由于 RTSP 被用作串流协议,因此在 VLC 媒体播放器中输入 “rtsp://{IPaddress}:{port}” 作为网络 URL,将 {IPaddress} 替换为 BW21-CBV-Kit 板卡的 IP 地址,
- 将 {port} 替换为 Serial Monitor 中显示的 RTSP 端口(例如,“rtsp://192.168.1.154:554”)。默认 RTSP 端口号为 554。
- 接下来,单击“播放”开始 RTSP 流式传输以查看结果。来自摄像机的视频流将显示在 VLC 媒体播放器中。
- 将在 RTSP 视频流上绘制一个包含其对象名称和置信度分数的边界框,以突出显示已识别的对象。
- 预训练模型总共可以识别 80 种不同类型的对象。可以在 ObjectClassList.h 中找到这些对象。每个对象的索引号是固定的,不应更改。要停用对某些对象的检测,请将过滤器值设置为 0。例如,将过滤器值设置为 0 以排除对自行车的检测。
程式码说明
您可以通过取消注释下面突出显示的代码,根据您的 WiFi 网络质量调整视频比特率。