[Day 29] tinyML应用实例分享

话说受到火鸡姐的鼓舞(其实是逃命),我来到了中国厨艺学院(其实是少林寺的伙房)拜师学艺,没想到得罪了方丈和十八铜人,根本就离开不了这个如地狱般的地方。直到有一天我伤心到一夜白发,唱出了鸡姐最爱的「情和义值千金,上刀山下地狱去有何憾!」才得到大师的首肯,让我参加食神大赛。当我和唐牛正面对决「佛跳墙」时,他还不服的说我抄袭,还好评审主持公道说:「比赛是这样啦!就好像游泳跑步一般,不就是你做什麽他也做什麽,有啥好抗议呀?抗议无效!」。没想到最後佛跳墙还被搞到爆炸,害我只好使出少林绝学「火云掌」做出那碗看似简单但吃了令人落泪的「黯然销魂饭」才结束这一回合。

相信跟了28天的伙伴们,学了一大堆招式却不知如何施展,内心一定很烦燥,想着到底这麽阳春的开发板、这麽少的算力和这麽简单的模型到底能做出什麽有趣的AI应用。各位有福了,今(2021)年tinyML基金会Hackster.io及多家赞助厂商(还包含台湾奇景光电和原相科技)一同举办「Eyes on Edge: tinyML Vision Challenge!」,如图Fig. 29-1所示。

Eyes on Edge: tinyML Vision Challenge
Fig. 29-1 Eyes on Edge: tinyML Vision Challenge。(OmniXRI整理绘制, 2021/10/13)

这场比赛从今(2021)年4月开始,一直到9月结束,10/5才公布得奖名单,还热腾腾地。接下来就各位简单介绍一下这六个精彩的作品,如图Fig. 29-2所示,希望让大家从模仿自学作起(别人做什麽,我也做什麽),当搞清楚这些门道後,就能独立创作出属於个人风格的作品(黯然濑尿牛丸面?)。完整作品说明,包括使用情境、相关领域知识理论、硬体零件、电路连接、工作源码(Github)等,可参考每个作品简介的「原文出处」连结。

tinyML Vision Challenge 2021得奖作品
Fig. 29-2 tinyML Vision Challenge 2021得奖作品。(OmniXRI整理绘制, 2021/10/13)

(a) TinyML Aerial Forest Fire Detection

TinyML Aerial Forest Fire Detection
[原文出处]

空中森林火灾侦测」,主要用到Arduino Nano 33 BLE Sense、ArduCam 2640摄影机模组及GPS相关元件,搭配「The Flame Dataset」公开资料集,通常这类应用多半时搭配红外线(温度感测)摄影机,但其重量会严重影响空拍机飞行时间,所以改用一般摄影机模组可以大幅简轻重量,同时搭配间歇性取样分析(每拍一次休息500ms)可更节省空拍机的电力耗损。他们使用了小型CNN模型,训练了100次得到了96%的精确度,同时也确保能布署到BLE Sense开发板中。最後再搭配GPS卫星导航路线巡检,就能更确保森林火灾发生时能即早被通知及扑灭,以免造成更大的伤亡及财产损失。

(b) WorkSafe: CV based multiparameter monitoring and diagnostics

WorkSafe
r-PPG_1
r-PPG_2
[原文出处]

WorkSafe:基於电脑视觉的多参数监控和诊断」,主要用到乐鑫的ESP32 Cam及Node MCU、HC-SR04超音波测距模组及MLX90614红外线(体温)感测器,该团队参考「Non-Contact Physiological Parameters Extraction Using Facial Video Considering Illumination, Motion, Movement and Vibration」论文从远程光体积描记(r-PPG)方法来估测HR(心率)、SPO2(饱和氧)和 CBT(核心体温),即以非接触的方式,用红外线反射及面部皮肤颜色变化来量测患者的重要生理资讯。由於红外线测温模型极容易受距离影响,所以这里使用超音波测距方式来校正,该团队相关研究也在IEEE Xplore发表「Enhanced Pyrometric device with Long Range for mass screening based on MLX90614」。该系统经实测已接近传统接触式仪器,有机会发展成较为平价且普及的设备。

(c) TinySewer - Low Power Sewer Faults Detection System

TinySewer_1
TinySewer_2
TinySewer_3
[原文出处]

TinySewer - 低功耗下水道故障检测系统」,主要使用Arduino Portenta H7及Protenta Vision shield搭配Edge Impulse一起开发。藉由这个作品可搭载於小车上,取代工作人员在下水道中移动,利用视觉记录影像同时辨识主要缺陷,包括裂缝(断裂、塌陷)、根部侵入、阻塞(障碍物)、位移,透过移动的时间线,还可推算出大概的位置,方便检修。透过Edge Impulse的迁移学习建立模型,使用MobileNetV2 96x96 Dropout 0.35,学习率为 0.35,最後一层有 40 个神经元。经过50个训练周期後可得94%的精确度。最後生成OpenMV格式的标签档、模型档及Python脚本档,并修改部份内容後烧录回Arduino Portenta中。

(d) Plant Growth Estimation for High Throughput Phenotyping

Plant Growth Estimation_1
CNN
Plant
[原文出处]

高吞吐量表型的植物生长估计」,主要使用SONY Spresense及配套摄影机模组,搭配Edge Impulse进行开发,利用影像来观察植物叶子的外观变化(表型)来推估植物生长的状况。这个作品使用了Growth monitoring of greenhouse lettuce文中提供的3种资料集,为了扩增资料集,还加入缩放、旋转等处理,而在资料集的多样性上也考虑了光照、亮度、饱和度、品种、拍摄角度及运动取像模糊度等问题。SONY Spresense开发板上自带1536kB RAM和 8192kB ROM (Flash),所以可以容纳较大的模型,较适合影像类的tinyML应用。在模型选用部份CNN架构,两组卷积池化层,分别使用32和16个特徵图,最後展平及搭配0.25随机丢弃(dropout)得到输出结果。经过训练两种不同模型,第一种通过植物分割计算的实际叶面积指数(LAI)作为标签。第二个模型包括对应於植物生长阶段的Day-wise标签。最後得出合理的回归值,

(e) Flat Tire Detection Using Machine Vision

Flat Tire Detection_1
Flat Tire Detection_2
Flat Tire Detection_3
[原文出处]

使用机器视觉检测爆胎」,主要使用OpenMV Cam H7(自带摄影机模组),配合Edge Impulse进行开发。这个作品利用机器视觉来查看汽车轮胎是满还是漏气,可应用於地磅站、自驾车车队及租车归还。在资料集建构上分为三个类别包括正确充气(约45 psi)、扁平轮胎(约10 psi)及非轮胎(或无轮胎),原始影像尺寸为240x240像素之灰阶影像。每个类别约取300张,接着使用Edge Impulse迁移学习模型MobileNet V2 96x96 0.35进行训练,最後得出不错的精确率。未来可加入更多的压力区间,做为分类依据,即有机会取代人力或专业仪器量测。

(f) Smart Bird Feeder

Smart Bird Feeder_1
Smart Bird Feeder_2
Smart Bird Feeder_3
[原文出处]

智能喂鸟器」,主要使用Arduino Nano 33 BLE Sense及OV7675摄影机模组,搭配Edge Impulse进行开发。这个作品是一群小朋友完成的,主要是为了防止松鼠偷吃小鸟的食物,利用机器视觉来辨识是否为小鸟。这里使用了2912张影像来训练,而模型则采用Mobilenetv1_0.25_96修改後进行训练。最後布署到开发板後,如果侦侧到松鼠还会发出噪音来吓跑它们,反之是小鸟时就安静。由於这项设备非常省电,所以只需简单太阳能板就能供应足够的电力。

小结

看完这麽多有趣的作品,是否心动了呢?这些作品都附有完整源码及制作说明,「照图施工、保证成功」,如不成功,请直接在作品网页上留言和原作者聊聊,或许还可多交个朋友。

参考连结

Hackster.io - Eyes on Edge: tinyML Vision Challenge!

ps. 为让文章更活泼传达硬梆梆的技术内容,所以引用了经典电影「食神」的桥段,希望小弟戏剧性的二创不会引起电影公司的不悦,在此对星爷及电影公司致上崇高的敬意,敬请见谅。


<<:  Day29 Android - 简易内嵌网页(webview)

>>:  【Day29 #1】企业数位治理议题2:企业经营流程之数位化整合

第二十七天:不规则边缘

金鱼都能懂的网页切版:21 不规则边缘 https://codepen.io/mikeyam/pen...

[Day 07] 透过 DAO 和资料库进行互动

除了使用 DSL 的方式和资料库进行互动之外,我们还可以透过更加物件导向的方式,来和资料库进行沟通。...

Node套件运用测试

因为我看到说node可以利用套件来使撰写程序较简单方便些,所以我这边就想用express套件来做个简...

第十六天:复数专案架构

之前在看别人的 JVM 专案时,有时会发现数个不同的 Module 原始码却都指向同一个 Repos...

Day07 UIKit 06 - 在 Storyboard 上设计多页面

记得前面讲过,Storyboard 里面可以放置多个页面(ViewController),页面之间的...