基于OpenHarmony的智能野外相机项目分享

参加本次OpenHarmony的学生挑战赛,项目为智能野外动物监测相机。

1. 应用领域

  主要是针对珍稀动物数量稀少、不易监测的问题,系统可以对途经指定区域的 动物进行监测与识别,而对于无检测需求时又可以自动调节为低功耗模式, 保证长时间的设备运行。另一方面,全智能化的硬件设备无需人类的过多参 与,该设备可由无人机部署在野外环境,同时小体积、轻噪声等特点可以最 大程度减少以动物保护为目的的人类活动对野生动物的影响。
在这里插入图片描述

地球生命力报告

2. 系统结构及工作流程

  系统主要由海思HI3516DV300和海思HI3861V100组成。
在这里插入图片描述

系统硬件结构

在这里插入图片描述

工作流程图

  当红外传感器判断到有物体靠近时,相机开始工作。通过目标检测算法对拍摄区域内的物体进行检测。 ①若是需要识别的目标,则正确识别并分类,将实时视频流传回控制端,并将分类信息传回HI3861,在屏幕上显示。 ②若没有需要识别的目标,则继续进入低功耗模式;

3. AI模型训练及部署

OpenHarmony的环境搭建请参考OpenHarmony官方教程。

3.1 模型训练

  首先需要准备数据集,这里使用的是开源数据集,地址为: https://www.kaggle.com/datasets/minhhngchong/animal-detection
  数据集一共有 3008 张图片,4 个野生动物种类分别为 buffalo、elephant、rhino、zebra。使用 python 脚本对数据集图片数据做重命名处理,并将图片 Size 保持一致,同时将 VOC 格式的 label 转化成 YOLOv2 所以需要的标签格式。数据集的 2408 张作为 训练集,600 张作为测试集。
在这里插入图片描述

制作数据集

  制作完数据集后,就需要搭建模型网络结构。这里我们使用的是修改后的resnet18网络。

在这里插入图片描述

resnet18网络region参数

  然后对模型进行训练,我这边是用的一张NVDIA GeForce RTX3060 GPU训练了7小时左右,最后loss在0.52%,停止训练,得到训练好的resnet18_last.weights也就是最后训练好的权重文件。

3.2模型部署

  由于在模型的量化和转换阶段,需要caffe模型,所以我们需要用yolo2caffe的开源代码将.weights权重文件转换caffe模型。

在这里插入图片描述

模型转换

  得到caffemodel后,使用Ruyi Studio对模型进行校准量化,并且输出最终在板端运行的二进制文件Wildlife_inst.wk。

在这里插入图片描述

在模型上运行的二进制文件

  最后需要在推理代码中修改classes类别,对齐region中的anchor参数。

在这里插入图片描述

在推理代码中对齐参数

4. RTSP实时视频流移植

  这里是移植的第三方RTSP源码,理解完RTSP通信协议的基本原理后,主要需要注意的点是SAMPLE_COMM_VENC_GetVencStreamProc()函数中,把数据放入环形缓冲数据流

在这里插入图片描述

数据放入环形缓冲数据流中

5.低功耗模式

  低功耗模式主要是依赖红外传感器配合目标检测算法实现。当有物体接近时,会引起红外传感器信号的变化,使其输出的电平发生变化,HI3861,随后对目标区域进行目标检测,若没有需要检测的目标,则休眠;若有,则进行后续工作。

在这里插入图片描述

低功耗实现过程

6. 实际效果演示

OpenHarmony学生挑战赛-智能野外动物监测系统-视频

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐