介绍mPOD DxTrack。一个使用TensorFlow Lite Micro的低成本医疗设备

mPOD公司首席执行官Jeffrey Ly和CMOJoanna Ashby的特邀文章。

mPOD是一家由美国国立卫生研究院资助的种子期初创企业,总部设在纽约市强生公司的创新部(JLABS)。在这篇文章中,我们想与你分享我们在mPOD独立开发的一个硬件设备,利用TensorFlow Lite Micro(TFLM)作为核心技术,称为DxTrack。

mPOD DxTrack利用TFLM和低成本的硬件,在10秒内对目前可用的侧向流检测(LFAs)进行准确、快速和客观的解释。LFAs作为诊断工具,因为它们成本低,使用简单,无需专门的技能或设备。最近,COVID-19快速抗原检验得到推广,LFAs也被广泛用于测试怀孕、疾病追踪、性病、食物不耐受和治疗性药物,以及大量的生物标志物,每年售出的检验总数达数十亿。mPOD Dxtrack适用于任何类型的目测侧流检测,展示了TFLM的医疗用途,可以直接影响我们的日常生活。

LFA开始时,样品(鼻拭子、唾液、尿液、血液等)在下图的(1)处装载。一旦样品流向绿色共轭区(2),它就被贴上了一个信号基团。通过毛细管作用,样品将继续流动,直到被固定在(3)处,对于这些LFA测试,两条线表示阳性结果,一条线表示阴性结果。

图1.侧面(A)和顶部(B)的侧流检测(LFA)样品,在(1)处,样品(鼻拭子、唾液、尿液、血液等)被加载,然后流向绿色区域(2),那里的目标被标记为信号基团。通过毛细管作用,样品将继续流动,直到它在(3)处被固定,形成测试线。多余的物质在(4)处被吸收。
图2.这是侧流检测(LFA)试验的3种可能的类结果。
图3.这是NOWDiagnostics ADEXUSDx侧流检测法(LFA)的示意图,设计用于在医疗点(POC)和非处方药(OTC)环境下收集和运行唾液样本。

如果使用得当,这些测试是非常有效的;然而,自我测试给非专业用户的解释带来了挑战。不同设备之间存在明显的差异性,因此很难分辨你看到的测试线是阴性......还是微弱的阳性?

图4.mPOD DxTrack突破上的TinyML模型如何解释和分类不同的侧流检测(LFA)结果的可视化。

为了应对这一挑战,我们开发了mPOD DxTrack,这是一款非处方(OTC)LFA读取器,通过一个简单的、低于5美元(商品成本)的全球可部署的设备实现快速和客观的读数,提高了侧流测定的效用。mPOD DxTrack旨在用ML读取侧流测定测试,以实现两个目标。1)实现对LFA的快速和客观的读取;2)简化数字报告。 最关键的是,TinyML允许mPOD DxTrack上的软件部署在低成本(低于5美元)的硬件上,可以广泛传播--这对现有的LFA读取器来说是困难的,这些读取器依赖于高成本/高复杂度的硬件,每台成本为几百到几千美元。 最终,我们相信TinyML将使mPOD DxTrack通过消除人为偏见,增加对侧流设备测试的信心,减少用户错误,提高整体结果的准确性,从而捕捉到漏报的阳性测试结果。

图5.带有侧流检测(LFA)盒的mPOD DxTrack的装配图。

技术探讨

关键考虑因素

  • 在解释现场运行的LFA条时,实现了99%的总体准确率,(99%的敏感性,99%的特异性)的模型性能的高准确率。
  • 确保模型能够保持该水平的性能,同时适合硬件约束。

TinyML的模型尺寸限制

在Pico4ML开发套件上部署DxTrack TinyML模型受到2个硬件的限制。闪存和SRAM。Pico4ML开发套件有2MB的闪存,用于存放.uf2文件,264kb的SRAM,用于容纳模型的中间阵列(以及其他东西)。确保模型的大小保持在这些范围内是至关重要的,因为虽然代码可以成功地编译,在主机上运行,甚至在Pico4Ml Dev Kit上成功地闪存,但在设置过程中会挂起,不执行主循环。

与其猜测和检查中间数组的大小(我们最初采取的过程几乎没有可重复的成功),我们最终开发了一个工作流程,使我们能够通过首先使用解释器函数来量化模型的竞技场大小。见下图,在设置过程中,这个函数被调用。

TfLiteStatus setup_status = ScreenInit(error_reporter);if (setup_status != kTfLiteOk){while(1){TF_LITE_REPORT_ERROR(error_reporter, "Set up failed\n");}; }arena_size = interpreter->arena_used_bytes();printf("Arena_Size Used: %zu \n", arena_size);
复制代码

当打印出来时,这就是Pico4ML开发工具包启动时来自解释器函数的值应该有的样子。

DEV_Module_Init OK                                                              Arena_Size Used: 93500                                                          sd_spi_go_low_frequency: Actual frequency: 122070                               V2-Version Card                                                                 R3/R7: 0x1aa                                                                    R3/R7: 0xff8000                                                                 R3/R7: 0xc0ff8000                                                               Card Initialized: High Capacity Card                                           SD card initializedSDHC/SDXC Card: hc_c_size: 15237                                                Sectors: 15603712                                                               Capacity: 7619 MB                                                           sd_spi_go_high_frequency: Actual frequency: 12500000
复制代码

有了这个值,我们就可以设置适当的TensorArenaSize。正如你从上面看到的,该模型使用了93500字节的SRAM。通过将TensorArenaSize设置为略高于这一数额的99x1024=101376字节,我们能够分配足够的内存来承载该模型而不超过硬件限制(这也导致Pico4ML开发工具包冻结)。

// An area of memory to use for input, output, and intermediate arrays.constexpr int  kTensorArenaSize =  99* 1024; // 136 * 1024; //81 * 1024;static uint8_t tensor_arena[kTensorArenaSize];
复制代码

从未量化的模型转变为量化的模型

现在我们有了一个可重复的方法来量化和部署模型到Pico4ML Dev Kit上,我们的下一个挑战是确保模型能够达到我们所要求的精度,同时还能适应硬件所限制的尺寸。作为参考,mPOD DxTrack平台被设计用来解释96x96的图像。在最初的模型设计中,我们的模型能够达到>99.999%的精度,但中间层是96x96x32的fp32,这需要超过1MB的内存--它绝对不适合Pico4ML开发套件的264KB的SRAM。为了达到模型的大小要求,我们需要将模型从未量化到量化;我们最好的选择是利用全int8量化。实质上,我们不是把张量值当作浮点(float32),而是把这些值关联到整数(int8)。不幸的是,这使模型的大小减少了4倍,使其能够适应Pico4ML开发工具包从fp32到int8的四舍五入误差,导致模型性能急剧下降。

ALT TEXT

为了应对模型性能的下降,我们研究了两种不同的量化策略对提高性能的影响。训练后量化(PTQ)和量化意识训练(QAT)。

下面,我们比较了3个不同的模型,以了解哪种量化策略是最好的。供参考。

  • 模型1:2层卷积网络
  • 模型2:3层卷积网络
  • 模型3:4层卷积网络

我们可以看到,量化感知训练(QAT)统一击败了训练后量化(PTQ)方法,它成为我们前进的工作流程的一部分。

我们现在能达到什么性能?

在超过800个真实世界的测试运行中,mPOD DxTrack初步可以达到98.7%的整体准确性。这个版本的模型目前正在由我们的制造伙伴网络进行评估,我们与他们密切合作。目前,我们正在组装一个独特的图像数据集,作为以病人为中心的数据管道的一部分,从每个制造伙伴那里学习,并建立定制的模型。

我们的初步工作也帮助我们将模型性能与适当的大数据集规模相关联,以实现我们的医疗保健应用的性能足够高的精度。根据附图,该模型需要在至少15,000张图片的高质量数据集上进行训练。我们的商业目标可能需要大于10万张图像的数据集。

ALT TEXT

要了解更多关于mPOD公司的信息,请访问我们的网站:www.mpod.io。如果你有兴趣了解更多关于TinyML的信息,我们建议你看看这本书和这个课程

猜你喜欢

转载自juejin.im/post/7125720422032637988
今日推荐