基于摄像头与投影仪的智能空调面板开关
2023-04-26沈颂龙陈杰李郎尼
沈颂龙 陈杰 李郎尼
【摘 要】本文开发一款投影式空调面板开关,利用投影仪将界面的内容投射到物体表面,结合摄像头的卷积神经网络视觉检测,可直接完成界面操作,实现功能交互。本投影开关具有很强的适配性,可在多种物体表面成像,具有使得内饰简约和科技感强等特点。
【关键词】机器视觉;投影界面;卷积神经网络
中图分类号:U463.851 文献标志码:A 文章编号:1003-8639( 2023 )04-0041-04
【Abstract】This paper develops a projection air conditioning panel switch based on the traditional image algorithm of vision. The content of the interface is projected onto the surface of the object by the projector. Combined with the visual detection of the camera,the interface operation can be directly completed to achieve functional interaction. Projection switch has strong adaptability,can be in a variety of object surface imaging,with the interior simple and strong sense of science and technology.
【Key words】computer vision;projection interface;convolutional neural network
1 背景描述
本投影开关主要由投影仪、摄像头、视频转接板、核心处理板等组成。投影区域尺寸与投影角度有关,需按投影区域尺寸选择合适的投影模组以及投影安装距离;操作界面通过投影模组投射至内饰表面。投影开关如图1所示。
与传统面板开关相比,具备以下优点。
1)极简化:投影开关为隐藏式安装,在投影开关未工作时,无开关式样,内饰简约。
2)高度集成化:投影开关可以根据整车需求,切换各种产品的功能界面,使得功能产品集成化。
3)成本优化和轻量化:集成整车内饰开关功能,精简整车开关,成本下降,整车开关质量下降。
4)升级简約化:无需重新开内饰开关,只需要根据需求,更新投影组件的内存信息和软件部分即可完成产品迭代。
与智能表面相比,具备以下优点:①适配性强,成像在内饰表面,可以适配大多数的内饰材料;②功能丰富,投影功能丰富,可根据整车需要,除了作为普通内饰开关使用之外,亦可进行视频播放、游戏投屏等影音娱乐。
2 系统框架描述
2.1 硬件架构描述
硬件描述框图如图2所示,其主要硬件模块介绍如下。
1)树莓派:树莓派是一款基于ARM的单板卡片式电脑,以SD卡为内存硬盘,卡片主板周围有USB接口和网口,拥有视频模拟信号的电视输出接口、HDMI高清输出接口以及无线网卡,支持Linux系统,拥有活跃的开源社区。本投影开关利用树莓派进行图像采集处理和完成界面交互功能等任务。
2)ICN6211:一款MIPI-DSI视频信号转RGB888视频信号转换芯片,需要在树莓派中适配对应的设备驱动才能使用。
3)投影仪:型号OPD2x,是720P TRP系列光机,可通过I2C命令进行配置投影亮度、投影区域矫正等。
4)摄像头:为双目摄像头,可多角度拍摄手势姿态,画面具有自适应白平衡等功能。
运行流程如下:①树莓派运行空调界面程序,通过ICN6211芯片,将MIPI-DSI信号转换为RGB888视频输出信号,最后由投影仪接收并进行实时投屏显示;②双目摄像头捕获投屏画面,经树莓派对数字图像进行处理,后台程序提取出交互操作信息,控制界面程序完成功能显示;③树莓派将当前界面状态通过UART反馈到MCU端,然后由CAN信号转发出去,同时MCU也会控制投影仪电机的转动实现对焦功能。
2.2 软件架构描述
软件描述框图如图3所示,其中包含几类开源库,比如Qt、OpenCV、Eigen、Linux、DRM等。
Qt是基于C++跨平台的应用程序开发框架,拥有丰富的API,既可以开发GUI程序,也可用于开发非GUI程序。QML(Qt Meta-Object Languaage,Qt元对象语言)是一种用于描述应用程序用户界面的声明式编程语言,其使用一些可视组件以及这些组件之间的交互来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且允许组件在用户界面中很容易实现复用和自定义。新版本的Qt加强了JavaScript和QML的功能。目前,Qt的主流开发方式是:界面采用QML和JavaScript进行开发,后台业务逻辑采用C++开发,这种混合编程方式可以极大拓展脚本语言的便利和C++语言的高效性。
OpenCV(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,可实现图像处理和计算机视觉方面的很多通用算法,底层采用C和C++编写,可以在各种主流平台上运行。本文利用OpenCV库进行图像处理和分析。
ONNX Runtime:ONNX Runtime是微软推出的一款推理框架,用户可以非常便利地用其运行一个ONNX模型。ONNX Runtime支持多种运行后端,包括CPU、GPU、TensorRT、DML等。
Linux DRM(Direct Rending Manger)表示直接渲染管理器,是目前Linux下主流的显示框架。DRM框架涉及到的元素很多,本文主要是使用了MIPI DSI接口用于显示输出,需要DRM驱动支持。
3 投影界面
投影界面的设计框架是:QML负责界面设计(布局、显示效果),JavaScript负责界面逻辑(按键触发、长短按等),C++负责后台逻辑(网络通信)。
3.1 基于QML的界面设计
图4是设计的空调界面,包含POWER按键、温度+/-按键、风量+/-按键、AUTO按键和模式按键。温度和风量按键包含长短按功能,为了便于投影交互,当按键触发时,对应的字符图标会隐藏,而松开按键会显示字符。温度按键、风量按键以及模式按键包含挡位显示,POWER按键和AUTO按键包含指示灯显示。
3.2 扩展QML功能
QML对于界面的设计比较方便,有专门设计好的组件可以使用,但对于网络、文件处理等较为底层的功能则需要通过C++自定义组件来完成。例如界面程序需要一个服务端网络进行通信,那么接口部分只需要定義几个主要的元素即可,如服务端Port口、接收和发送的数据流以及是否对重复接收数据进行过滤等,先通过C++完成这个ServiceNetwork类的编写,然后注册进QML系统中使用。
qmlRegisterType
在QML中通过如下方式声明一个ServiceNetwork对象,端口号为8000,允许重复接收相同的数据,并对接收到的数据进行处理。当有客户端成功连接后,就可以进行网络数据收发。
import ServiceNetwork 1.0
ServiceNetwork{
id:net
port:8000
repeat:true
onRecvArrayChanged:{
doSomething();
}
}
界面启动后获得的投影界面效果如图5所示。
4 指尖搜索模型介绍
由于本模型被部署在嵌入式设备上,整机算力十分紧张,无法支撑大型模型的实时运算,所以本文无法直接使用手势姿态检测模型,而是使用了2个小型的指尖检测模型。通过将2个小模型级联使用,降低整体计算量,提高整体判断准确度。
4.1 训练平台
本文使用的训练平台如下:①软件,PyTorch 1.11,CUDA 10.4;②硬件,CPU Intel i5,GPU Nvdia 1050TI。
4.2 模型结构
4.2.1 指尖判断器
模型1为指尖判断器,判断目标区域内是否有指尖。输入原始RGB图像,输出值为一个0~1之间的浮点数,代表目标区域指尖的概率,输出值为0代表有指尖概率为0%,输出值为1代表有指尖概率为100%。
指尖判断器模型结构如图6所示。输入图像,先经过一次步长为2的卷积模块,尺寸会缩小一半,然后经过一个残差模块,再经过池化,尺寸再次缩小一半,最后经过全连接层输出的是手指的概率。
4.2.2 姿态判断器
模型2为姿态判断器,用于精细检测指尖的具体位置。其输出值为一张热力图,图中每个点都为一个0~1的浮点数,代表指尖出现在该位置的概率。
姿态判断器的模型结构图7所示。输入原始RBG数据后,首先经过一个卷积层,然后经过一个沙漏模块,再经过一个卷积层,得到最终的热力图。其中沙漏模块是由多个不同尺度的残差模块堆叠而成,可以从多个分辨率尺度上预测指尖位置。
4.3 训练流程
深度神经网络的学习过程比较类似。基本流程如下:①将原始数据集分成测试集和训练集;②初始化网络结构、网略参数;③定义损失函数,预测函数,学习率;④在训练集上,计算损失;⑤使用梯度下降算法更新网络参数;⑥在测试集上计算预测正确率;⑦重复步骤④~⑥,直到正确率不再提升。
4.4 模型部署与推理
4.4.1 模型部署流程
本文采用ONNX(Open Neural Network Exchange)开放神经网络交换格式作为中间表示,ONNX Runtime作为最终运行框架。
1)ONNX:ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如Pytorch、MXNet)可以采用相同格式存储模型数据并交互。ONNX的规范及代码主要由微软、亚马逊、Facebook和IBM等公司共同开发,以开放源代码的方式托管在Github上。
2)ONNX Runtime:ONNX Runtime是微软推出的一款推理框架,用户可以非常便利地用其运行一个ONNX模型。ONNX Runtime支持多种运行后端包括CPU、GPU、TensorRT、DML等。可以说ONNX Runtime是对ONNX模型最原生的支持。
4.4.2 推理流程
实践中,推理流程如图8所示。实际使用中,首先使用指尖判断器,对所有按键区域进行一次初筛,将存在指尖概率高的图像输入姿态判断器进行细化分析,姿态判断器的输出结果是热力图,从中既可以得到指尖位置信息,也可以得到指尖概率信息。实际判断按键按下,需要同时满足指尖判断器概率高于阈值、姿态判断其概率高于阈值、指尖停留在目标位置超过100ms3个指标,才认为按键确实被按下。
由于2个判断器均为计算量很小的小型判断器,各自的判断准确率均为95%左右,并不算高,但将2个判断器级联使用后,判断召回率有所降低,但是精确度提升到了99.75%。换句话说,级联2个判断器后会略降低灵敏度,漏掉一些手指,但是一旦被判定为手指,准确率接近100%。如此设计,可以有效降低误触。另外,在实际使用时,可以灵活调节2个判断器的阈值,调节准确率和灵敏度之间的平衡,并且由于只有经过指尖判断器的初筛图像,才会送入姿态判断器,大大降低了整机的计算量。
推理效果如图9所示。图中,绿色方框为目标按键区域,紧贴方框上方的数字代表指尖判断器输出的概率,右下角存在指尖的按键框内的红色代表指尖的概率高,蓝色代表指尖的概率低,第2排数字代表姿态判断器输出的热力图的最大值。
5 总结与展望
应用了卷积神经网络后的投影开关效果如图10所示,整体按键操作效果已经十分接近触摸按键面板。同时又能适应各种材质的界面,自由扩展操作内容,做到传统触摸面板无法做到的高自由度。
由于时间和工作环境限制,本文在数据集准备时,缺乏白人、黑人、老人、小孩等的数据,需要在后续继续采集和添加相应的数据。另外对于美甲、手套等非裸手的情况,也未进行有效支持,是后续进一步改进的一个方向。
参考文献:
[1] HE K,ZHANG X,REN S,et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition,2016:770-778.
[2] NEWELL A,YANG K,DENG J. Stacked hourglass networks for human pose estimation[C]//European conference on com-puter vision,2016:483-499.
(编辑 凌 波)