在这个项目中,我构建了一个设备,该设备可用于从热像仪读数中检测面部,并可以通过推断面部皮肤温度来准确测量人的温度。如果检测到高温,人们可以使用他们的智能手机扫描二维码(显示在屏幕上)以获取更多信息。此外,还会显示当地求助热线电话号码,该人可以联系以进行查询。
balenaFin v1.0 套件与 Raspberry PI Compute Module 3+ 一起使用。
Gameduino 3 shield 用作显示器。对于热像仪 Pimoroni MLX90640 传感器,其分辨率为 32x24 像素。
连接图可在原理图部分获得。
要使用容器在 balenaFin 上设置应用程序,我们需要注册并登录 balenaCloud。登录后,我们可以通过单击显示如下表单的创建应用程序按钮来创建应用程序。我们应该选择Balena Fin (CM3)作为Default device type和Starter作为Application type 。
单击创建的应用程序链接,然后单击添加设备按钮后,我们可以填写设备信息。我们应该选择Development作为版本,并选择带有 ssid 和密码的 Wifi + E以太网连接用于家庭/工作路由器。
我们现在可以通过单击底部的按钮来下载 balenaOS。
要将 balenaOS 刷入 balenaFin,我们可以使用 balenaEcther,可以从这里下载https://www.balena.io/etcher。我们应该使用 USB 电缆将计算机连接到 balenaFIn 并连接电源适配器。
刷机完成后,我们应该拔下 USB 线并断开/重新连接电源适配器。几分钟后,我们应该能够在 balenaCloud 仪表板中看到该设备。
MLX90640 传感器使用 I2C 获取热读数。为了快速读取数据,我们应该在设备配置中更新将 DT 参数定义为“i2c_arm=on”、“spi=on”、“audio=on”、“i2c1_baudrate=1000000” 。
我们现在可以将应用程序容器部署到设备上。我们将启用本地模式,如下所示,以便我们可以使用 balena CLI(一个命令行工具)与 balenaCloud 交互以进行快速开发和部署。balena CLI 安装说明可以在这里找到https://github.com/balena-io/balena-cli/blob/master/INSTALL.md 。
以下是部署命令。
$ balena login
$ git clone https://github.com/metanav/thermal_face_detection
$ cd thermal_face_detection
$ sudo balena scan
Reporting scan results
-
host: df0925a.local
$ balena push df0925a.local
Dockerfile 中提到了所有先决条件和依赖项,该文件可以在上面克隆的存储库的根目录中找到。一切都会自动安装并部署到目标设备。
公共领域可用的深度学习模型主要用于照相机拍摄的图像。通常他们需要配备显卡或神经网络加速器的高端计算机才能以高帧速率运行。对于这个项目,我想保持低成本,但仍然开发一种可以以相当快的速度准确使用的设备。为此目的,使用了 BlazeFace 模型,该模型在低分辨率热像仪图像中检测人脸时表现出相当高的准确性。该模型与默认的训练权重一起使用,无需对热图像进行任何迁移学习。
主应用程序有两个部分。第一部分是用 Python 3 编写的,主要是关于从热像仪获取数据并进行人脸检测和温度测量。第二部分是用 C 语言编写的,主要用于处理 Gameduino 3 TFT 显示器以显示热图像和信息。该代码可在代码部分中提到的 Github 存储库中获得。
BlazeFace TensorFlow Lite 模型是从https://github.com/google/mediapipe 下载的。TensorFlow Lite Runtime Python API 用于在设备上运行推理。
人脸检测(常温)
带口罩的人脸检测(常温)
人脸检测(高温)
它是一种易于使用的低功耗设备,可以安全使用,因为所有操作都是非接触式和离线的。该设备不使用照相机来检测人脸,而是使用热传感器生成热图像并使用现成的本地部署深度学习模型检测人脸。使用此设备没有隐私威胁,因为它不会捕获用户的任何真实图像,也不会将任何数据发送到云或任何其他位置。互联网连接仅用于部署和更新。该设备可以安装在商场、学校和办公室。此外,在发展中国家,该设备可用于电力和互联网稀缺的贫困地区。在这些区域,它可以使用电池进行操作,并且可以在安装前进行部署。
通过使用热像仪图像进行迁移学习,可以进一步提高人脸检测的准确性。目前该设备只显示英文信息,可以支持多国语言。帮助热线电话号码和二维码 URL 是针对我所在地区的硬编码,但它可以基于设备的地理位置,并且可以使用balenaCloud 中的设备环境变量进行设置。
所有说明都可以在代码部分提到的 Github 存储库中找到。我要感谢Hackster.io和本次比赛的所有赞助商,感谢 Balena 提供 balenaFin 开发工具包。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !