1. 引言
受疫情的影响,测温仪已经成为生活必备的一种设备。非接触式温度测温因为对测温者的束缚较小,测温方式简单快速而成为首选的测温设备,但是非接触测温仪也存在不足会受到目标体表面反射率、发射率、环境温度和仪器测温系统的影响 [1]。测量距离的不同和测温区域的不同像素点 [2] 测量的温度值也会引起误差。所以如何获得高精度测温结果 [3],是红外测温仪发展必须要解决的问题。魏鹏绪、辛随成写的经络和穴位的皮肤温度测量中提到穴位温度在中医学中反应“寒热”现象具有明显的优势 [4],法国J. Bor-Sarello通过红外热像图技术发现面部等温线与人体经络线存在相似 [5]。芹泽胜助发现穴位处温度比周围温度高0.5℃~1.0℃。西条一止提出温度差,在对5例健康人经络线及周围皮温进行检测后发现经络处温差点的出现频率比非经络处高5.2倍,这一结果与红外热成像相吻合。本山博 [6]、刘绍安 [7] 对使用液晶显示方式显示经络走行方式进行过研究。国内学者张栋在内脏疾病患者的背部用红外热像仪观察到背俞定部位出现高温区域,会比周围温度高0.5℃以上 [8]。李自双对40例肝实热患者太冲、肝俞穴进行过检测,结果显示患者穴位处温度同样高于健康者 [9]。蒋来等提出穴位注射后,发现对于出现循经感传的病例,其走行与经络走行基本吻合 [10]。陈振湘发现在红外热像图中人体部分经络与古典经络基本吻合。何广新 [11]、刘瑞庭 [12]、张栋 [13] 也提出过类似发现。上述研究不仅证明了穴位与五脏六腑之间的关系,更加表明,穴位有助于更好地分析疾病人病理以及解决方法,可以作为一种判断治疗效果的辅助指标来指导治疗。
本文提到的面部穴位的温度检测,基于红外成像仪的非接触式体温检测可以作为判断疫情的辅助手段。人体的红外图像除了提供基本的温度信息外,还蕴含了大量信息可以提取。测温仪以检测整个面部的温度为主,但中医学穴位可以更精准地呈现人体的身体状况,所以对基于面部各穴位的温度变化为人体健康状况的判断所提供的基础数据进行了研究。在非接触情况下得到客观的数据,相比较传统的中医方法,如舌诊、脉枕,得到的数据更加科学和成熟。因此,对穴位进行温度检测有效性更高并可以更好地提高与针灸等医学领域的结合度。
2. 非接触式面部穴位温度检测系统设计方案
2.1. 系统总体架构
本系统由客户端和服务端两部分组成,客户端对应于图像采集、显示温度信息、设备管理和参数配置。服务端应用于图像信息处理,检测人脸并测温。以VS为开发环境,具备支持测温仪运行的深度图像处理和TCP/UDP协议传输的能力。
体温检测界面有三部分,左上区域显示的是实时视频,左下区域显示正常的体温抓图,右侧区域显示异常体温抓拍,如图1所示。
2.2. 系统运作流程
系统正常工作流程如下:首先可见光摄像头捕捉到人脸,系统将对可捕获到的视频帧进行预处理,使用回归算法预测每一个点在图像当中的位置,对检测到的框进行遍历,找到脸颊区域进行关键点定位进而确定额头区域。通过调用进程,将该帧额头左上角和右下角坐标在红外数据帧中取到额头区域温度并计算平均温度,最终返回温度显示在标记区域,如图2所示。
3. 算法研究与设计
与非接触式测温系统相比,进行了面部测温到穴位测温的改变。穴位温度检测主要从人脸捕捉、穴位标注方面入手,故本文基于Dlib人脸检测算法根据已有的目标检测模型以获取其在图像下的穴位坐标信息。
3.1. Dlib人脸检测算法
在人脸68个关键点检测的dat模型库结合patrikhuber的eos分支项目组成用于图像处理的开源库 [14],使用这个模型库可以很方便地进行人脸检测,并进行简单的应用,81个点最终以坐标的形式来返回。与人脸识别有区别的是,需要加上一个形状检测器shape_predictor_81_face_landmarks.dat,可以直接使用。基于dlib的shape_predictor_81_face_landmarks模型检测人脸的81个特征点,每个特征点指定一个特定的索引,由索引标来提取特定的脸部结构。用到的两个关键函数 [14]:dlib.get_frontal_face_detector()和dlib.shape_predictor(predictor_path)。第一个是使用HOG pyramid的一个内置人脸检测算法,得到人脸框。第二个是用来标记人脸关键点,返回人脸关键点预测值。使用开源模型shape_predictor_81_face_landmarks.dat,可以得到81个特征点位置的坐标。
3.1.1. 算法改进
1) 本文主要是使用人脸检测算法确定穴位坐标点,考虑到人脸的穴位数目过多选择了穴位比较集中的额头区域。本文对算法区域定位进行改进,使用回归算法预测每一个点在图像当中的位置,对检测到的框进行遍历,找到脸颊区域进行关键点定位,同时打印出左上角(索引76)和右下角(索引78)坐标位置。保留原算法对面部的定位,确定坐标点的输出让该算法更适合小区域的确定,额头坐标如表1所示。

Table 1. Multiple detection of the coordinates of the upper left and lower right corners of the forehead
表1. 多次检测额头左上角、右下角坐标
2) 在Dlib人脸检测实现穴位标注,类似于形成一个热成像单元,对应index值通过UDP协议在红外温度数据进行相应的转化 [15]。
3) 引用UDP协议,为了匹配仪器实现可见摄像头和红外摄像头信息转换。对温度值提出接收请求、接收和接收额头两个坐标的字符串。
4) 增加红外温度存放模块,完成16位二进制数据转换。改进的算法增加了与设备的契合度,保证了数据的正常传输,是温度检测精度提高的基础,温度数据转化如图3(a)、图3(b)所示。
3.1.2. 实验数据集
为了保证算法的可行性,本文使用的是81面部地表形状预测器,在给定任何图像的情况下可以找到81个面部特征界标。在68个面部地标外添加了13个覆盖额头区域的地标,额头的13点是参考了patrikhuber的eos分支项目,其他68个点是在300W和WFLW数据集上进行的实验。300 W是现在使用比较广泛的人脸关键点检测基准数据集,在数据集中每个图像上包含多张人脸,但只标注一张。包括 [14]:AFW (337),Helen (train 2000 + test 330),IBUG (135),LFPW (train 811 + test 224)。3148张图像,测试集是554 + 135 = 689张。室外环境搜集的数据集中表情、光照条件、姿态、遮挡导致脸部大小变化非常大。在该数据集中,每张人脸图像被标注了68个关键点如图4所示。

Figure 4. Different points marked by different data sets
图4. 不同的数据集标记不同的点
WFLW包含了10,000张脸部图片(7500张用于训练的图像和2500张用于测试)图b标注有98个关键点,关键点是对人脸形状的稀疏表示。除了地标标注外还包含丰富的属性标注,即遮挡、光照、姿态、模糊和现有的综合分析算法的表达 [16]。在使用的Dlib人脸检测开源数据中 [4],300W数据集平均误差为3.60%,WFLW数据集平均误差为5.50%,并且只有2.81M的参数量,减少了计算资源的消耗同时保证了高精度,具有很大的实用价值。
3.2. 数据传输
UDP协议是一种无连接的网络协议 [17]。数据传输之前,服务端和客户端不会建立连接,在需要它传输数据的时候直接简单的抓取来自应用程序的数据即可。UDP不属于连接型协议,不需要去维护连接状态,具有资源消耗小,处理速度快的特点而且一台服务集可以向多个客户机去传输相同的数据,具有较好的实用性。提供的是一种面对面的连接,是一种可靠的字节流服务。在正式进行通讯之前首先通过一些握手机制确认双方通讯意向并建立一条认为可以传输的概念通道。发送端只负责发送数据不会对字节数据做出任何解释,解释均由接收端来完成。在进行传输完毕之后还要断开连接。
UDP协议发送数据主要步骤 [18]:
1) 创建发送端的Socket对象;
2) 获取输出流,写数据;
3) 释放资源。
UDP协议接收数据 [17]:
1) 创建接收端的Socket对象;
2) 绑定套接字;
3) 获取输入流,读取数据显示在控制台。
3.3. 几种人脸检测算法对比
本文选取Haar级联人脸检测算法和Dlib人脸检测算法在本文自建的带有人脸的图片上进行目标检测任务的测试,其中检测速度测试在本文的测试结果选取平均检测人脸个数与检测速度两项指标进行对比分析评价,速度测试在计算机上进行。如表2中展示了单个人脸目标检测算法的对比实验结果。

Table 2. Comparison of single face detection algorithm results
表2. 单人脸检测算法结果对比
通过表2对比可以发现在检测速度方面Haar级联人脸检测在本文数据集下与其他算法相比精度最高,但是在平均检测人脸个数方面确不如Dlib人脸检测算法以及本文的改进版。考虑到若将面部测温准确到穴位测温,对算力有要求,所以更轻量化的Dlib人脸检测算法改进版具有更好的实用性。本文改进的算法相比原算法虽然速度有下降但是在人脸准确捕捉方面有了较大提升,可以保证其检测准确性。综合考虑,本文改进的算法在速度与精度方面取得一定平衡,为今后部署到嵌入式设备进行应用打下基础。
3.4. 测温方法对比
本文通过四种测温方式进行测温检测。主要有温度计、点阵式红外测温仪、非接触式测温仪、非接触面部穴位温度检测仪。实验结果从测温精度、测温距离和平均测温时间作为主要评价指标。实验测得各类测温设备准确率如表3所示。

Table 3. Comparison of single face detection algorithm results
表3. 单人脸检测算法结果对比
通过表3不同测温方式之间的测温准确率对比可以看出,在开源数据集的测试结果表明本文所用的方法识别速度相对效果最优。
点阵式红外测温系统
前期研究的测温系统基于树莓派4,利用摄像头、小喇叭、显示屏,并选用红外热像仪模块,构建了一种基于红外传感器的红外测温设备。红外测温模块思路:先对测温模块初始化设置无人状态进行20次循环计算背景温度。对获取到的后十次温度数据使用缓慢平均算法得到背景温度。当被测者出现在测量区域时,记录突变点个数(当前温度与背景温度差大于30),计算被测人员距离设备的位置得出体温,设备自动进行数据保存,若体温异常语音播报报警信息。使用的测温方式是点阵式红外测温,对热源逐点测温,测得的各点温度数据结合红外热成像模组温度数据指令重新计算排列后放在光学视场中,不再将黑体作为体温筛查的标准 [17]。因为只是在可见光图像进行温度的计算无法排除外界环境和温度对测温的干扰 [19],在后期研究中添加了红外摄像头,从可见光和红外两方面入手去进行温度的测量,增加了穴位测温,帮助测温更加准确。
3.5. 实验结果分析
本测试硬件设备,包括热像仪、PC机、网线。实验开始前已完成对热像仪可见光、红外摄像头的内外参数标定,热像仪与PC机完成链接,数据可以传递到PC机。实验场景温度检测如图5所示。
实验对检测者多次进入摄像头范围进行重复测温,测温结果如表4所示。

Table 4. Temperature measurement results
表4. 测温结果
非接触式面部穴位温度检测系统通过UDP协议传输的Dlib人脸检测算法坐标点,进而获取红外数据库函数对数据转化,从而完成温度检测。但是通过在后续的实验中发现,存在导致个人整体体温升高的疾病,比如,气阴两虚型病人等,可能会导致穴位的温度略高或者略低。因为穴位的温度特性优势是相对的,并不是所有的穴位都具有这种优势,接下来的工作在于选择正确穴位提高穴位测温精确度。
4. 结论
本文提出了一种基于穴位温度的检测体温的方法,利用OpenCV实现了人脸融合技术,通过可见光图像结合红外数据检测温度,借助UDP协议和Dlib技术,改进人脸关键点算法,实现了坐标点和温度的对应,得到了温度值。实验能在单人条件下实现温度检测,下阶段需要完善算法实现多人同时检测,来提高测温检测效率。
基金项目
2017年山东省重点研发项目“基于多肽的抗污染肿瘤标志物检测仪的研制”(2017GSF218088)。