该项目的硬件是SeeedSenseCAPK1100/A1100中的GroveVisionAI模块。官方商店有单机版的GroveVisionAIModule。
上面的工作流程很常见,也很清晰。我们只讨论一些有趣的需求:
这避免了样本太少或代表性不足的常见问题。
因为我们没有足够的资源来对完整的9.6GB训练进行完整的训练。因此,选择了animals-80数据集的一个子集。
事实上,这个结果接近于不起作用。
让我们将可识别的动物种类减少为四种:蜘蛛、鸭子、喜鹊和蝴蝶,这当然是郊区野外最常见的动物。
注意,重新运行准备脚本以生成正确的data/animal.yaml.
我们将在后期推理试验和评估中回顾该模型的性能。可以只进行二元分类:一种动物和一种动物。但在这个项目中,我更期待在更复杂的场景下评估识别效果。
上面的结果是从官方yolov5n6模型中得到的epochs=150.结果很好。因为,
不幸的是,基于官方训练的最终模型yolov5n6接近4MB,而GroveAI模块的约束模型大小不超过1MB。因此,我们不能使用任何此类更大的模型(已尝试)。一些建议将在最后一节中讨论。推论
经过以上训练,我们进行图片仿真,初步评估模型的效果。让我们看例子。
以上是GroveAI模块的输出。分类指数在中间,置信度在旁边。对应指标的动物名称可以在上面的训练图中看到。
第一次和第二次检测是正确的,第三次检测是错误的。第三张图是一只喜鹊在天上飞,推理结果是蝴蝶。我们只是在后面的real-wprld评估中看到这个分类模型的影响。
现实世界中的推理比实验室中的推理更具挑战性。因为测试时所处的环境或测试者或被测对象的状态都会对结果产生很大的影响。这就是我们在工作流程部分进行规划的原因。
我们通过TinyWild项目中的郊野公园野生动物调查进行了真实世界的评估。执行两种类型的检测:
基本结论是,对于个体识别来说,不是特别理想,但是收集到的定性信息是有效的。
这似乎是喜鹊被识别为缓冲蝇,如上面推理部分的分析所示。它们的共同点是,它们经常在空中飞行。三个真实世界的因素:移动的相机、移动的物体和低分辨率,对识别结果有很大的影响。
为减少移动因素的影响,还在湖边开展了野鸭(野鸭)专项观测。
在上面的第一个捕获中,我们前端UI中鸭子的数量(其中一个有趣的地方是UI中的动态表是由SQL查询驱动的,请参阅我们未来项目中的更多信息)。突然,两个鸭子游入镜头范围。鸭子的数量已经增加到13。考虑到原来的鸭子是被数过的,13是当时精确的数。发现GroveAI对附近的动物检测非常有效,就像我们在湖边所做的那样:当三只鸭子突然以相对静态定位游入相机范围时,我们得到了三个计数。(注:在TinyWild项目中,我们说有四项计数,但根据我们的录音应该更正为三项计数。)
基于以上实践,我们针对廉价边缘人工智能硬件上的EdgeML或TinyML给出以下建议:
即观察者不做大动作。
例如,只做二元分类:人或没有人,猴子或没有猴子,鸟或没有鸟。
例如,precision>0.8,recall和mAP_0.5>0.6。
廉价的边缘ML硬件通常资源有限,例如GroveAI模块的约束模型大小不超过1MB,低于yolov5官方yolov5n预训练网络训练的模型大小。发现较小的模型会显着影响模型的主要指标。
资料--|积分--
下载发烧友APP
电子发烧友观察
长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)