前言
近日携好友完成了一个厨房油烟机场景智能化的应用,在此向大家分享下该项目的构建历程。希望大家的对此过程中能够对这个里面做的不够周到的地方多多批判!
项目
简介
项目背景: 油烟机场景智能化
项目职责: 进行油烟机环境下的【手势识别】和【油烟识别】
项目目标: 完成10+类手势的定位及识别;完成3类油烟浓度识别
项目职责: 进行数据集的采集、数据标注、模型设计、训练、优化及部署工作
痛点: 原始油烟数据集标注(PS:后期通过自动化标注节省了不少时间)
业绩:
- 锅具位置检测和手势识别基于轻量级RFBNet-Slim模型,模型大小1.11Mb,在PX30(Android、四核Cortex-A35)利用MNN框架推理速度达到了3.3FPS,mAP@ 0.5为98.5%;
- 油烟浓度识别采用轻量级12层CNN网络,所设计架构模型大小为300KB(MNN),基于PX30端侧推理速度为58FPS,测试集准确率为92.7%
实现步骤及思路
1.初始标注:
利用标注工具(labelimg)进行图像标注;
2.规模标注:
基于前期少量数据集初步训练复杂模型,利用复杂模型构造更多标注数据集,微调后合并为大数据集。
3.模型训练:
基于RFBNet-Silm模型进行手势与锅具数据集训练,采用随机调节亮度对比度和通道交换的方式进行图像增强。
4.油烟数据集制作:
利用YOLOV4检测模型进行锅具位置的检测,将检测到的锅具ROI作为油烟浓度数据集的来源;
5.网络设计:
设计12层CNN网络进行训练,采用采样均衡化(weightSampler)及label smoothing策略进行数据集的均衡化采样;
6.长短窗滤波:
设计长短窗滤波减少结果跳变,提高结果稳定性。
7.模型移植:
协助部署基于MNN推理框架的端侧(PX30)部署工作。
结束
上述为实现油烟机场景智能化应用的概述,大家可以借鉴参考, 欢迎大家对 上述步骤中提出批评!