在先正达,图像分类是自动化化学配方系统中样品建模的关键,该系统已生成超过10万张图像。这些图像用于确定产品开发的下一步步骤,但仅凭肉眼解读图像非常耗时,且评估结果受评估者主观因素的影响。
适用于 JMP Pro 的 Torch 深度学习插件利用卷积神经网络和 GPU 计算的强大功能,显著简化了分析过程,并在约定的对照图像集上实现了结果的一致性。我们展示了该插件如何轻松导入和预测一组相当复杂的图像,并在几分钟内返回有意义的交互式输出。而通常情况下,手动处理和编写 Python 代码需要数小时甚至数天才能完成的任务,现在却可以快速实现。
大家好,欢迎参加我们今天的演讲。我是来自 JMP 研发部的 Russ Wolfinger,非常荣幸能与我的朋友兼同事,来自先正达的 David Barnett 一起为大家带来精彩内容。今天,我们非常激动地向大家介绍 JMP 和 JMP Pro 的一个全新应用——图像处理与分析。这对于 JMP 来说是一个全新的方向,我们对此感到非常兴奋。我记得在新冠疫情初期,我们投入了大量精力开发 JMP 的一个全新插件——Torch Deep Learning。此前,我们收到很多客户的反馈,他们对这个插件非常感兴趣。众所周知,人工智能、机器学习和深度学习在全球范围内都获得了巨大的发展。目前最流行的两个软件包可能是 PyTorch 和 TensorFlow。我们最终选择了 PyTorch,事实证明,Torch 拥有一个非常友好的 C++ 接口,我们可以深入底层进行开发。我们已经开发出一款与 JMP Pro 无缝集成的优秀插件,并已将其发布。
我记得当时我很兴奋。我想这本书才出版几周,大卫不知怎么就知道了。
大卫,我想你是最早关注这个项目的人之一。我还记得你早期取得的成功。今天很高兴听到你的故事,了解项目的缘起,以及你过去几个月使用这些数据和开发应用程序后,目前的进展情况。大卫,现在把话筒交给你,听听你最近的进展吧。
谢谢你,Russ。真的很好。不好意思,我得分享一下屏幕。希望大家都能看到。谢谢你,Russ。正如Russ所说,我在早期的一个医生培训项目中就看到了这个。这是我们一直想在图像分析方面研究的东西。我接下来会解释一下我们高通量系统背后的原理。
简单介绍一下农业综合企业,如何养活未来的世界正日益成为人们关注的焦点。到2050年,世界人口将达到约90亿,而粮食需求量将远超这个数字。作为一家企业,我们正寻求不断发展壮大。仅先正达一家就拥有约3万名员工,业务遍及90多个国家,销售额相当可观,三年前接近170亿美元。我们最大的研发中心,也是我目前所在的研发中心,位于英国伦敦郊外的杰洛特山。公司在研发方面投入了巨资。
我们拥有各种类型的化学家,包括合成化学家、计算化学家和分析化学家。我所在的配方化学部门,主要负责整合我们所有的知识并进行产品销售。由于监管压力、成本压力以及产品上市速度的限制(正如我之前提到的,为了确保产品安全,我们必须应对各种监管压力),配方的复杂性几乎呈指数级增长。我们不仅要确保生产过程的安全,还要确保使用我们产品的农民以及购买使用我们产品的消费者的安全。正因如此,我们看到了利用自动化技术来完成大量后台工作的巨大机遇。正如我所说,由于配方的复杂性,最终装瓶的产品成分也变得更加复杂。其背后的工艺流程,以及添加顺序,都至关重要。我们所得到的反馈,无论是随着时间的推移,它在瓶中是否会沉淀,是否也会随着时间的推移而变稠,通常都是非线性的,因为我们必须在瓶子里放入不同的东西。
我们看到的回报是:更大、更完整的数据集。这让我们能够更好地了解我们销售给农民的产品。它还能减少我们在实验室里为将产品推向市场而进行的重复性工作。我们还可以考虑成本方面的因素。如果我们能以更低的价格购买原材料,我们就能以更低的价格将产品推向市场,或者获得更高的利润,这通常才是我们追求的目标。
此外,产品性能也有所提升。我们可以添加一些助剂(我们称之为“助剂”),帮助产品更好地被植物或昆虫吸收。由于成分复杂,这里仅作简要说明,说明我们可以添加的成分数量。例如,假设我们有20种成分(见上排),并且我们只想进行1:1的混合,那就需要190个样品。配方化学家可以在实验室完成这项工作。如果想要更复杂的配方,并且进行纯粹的1:1混合,那就需要1100个样品。这并非配方化学家能够在合理时间内完成的工作。
您可以看到,如果我们使用的成分越来越多,样品数量就能达到近200万个,而实验室根本无法达到这个规模。大约15年前,我们投资了位于Jealott's Hill的ARTEMIS系统,这是一个高通量配方系统。您可以看到我们当时正在研发的规模。这套系统可以自动制备样品并进行表征。它每天可以制备约200个样品并进行全面表征,这与配方化学家在实验室的工作方式相比,是一次质的飞跃。
其中一项测试是观察样品倒入喷雾罐后的反应。我们使用一种标准的工业测试方法,称为“倒入克劳接收器”测试。通常我们会配制1%的溶液。我们需要手动检查溶液的扩散情况。直接倒入后,溶液的扩散情况如何?此外,还要观察其在数小时内的稳定性。这项测试可能需要持续长达24小时。
再次强调,这是一个非常主观的测试。一位化学家可能认为没问题,而另一位则可能更加细致,能够看出样品顶部是否有少量乳状物,或者底部是否有沉淀物。以下是我们要寻找的样品示例,正如辅助说明中所述。这完全是视觉上的。左侧是最佳样品。虽然还称不上完美,但也非常好。从左到右,情况逐渐变差。基本上,样品直接沉到圆筒底部,完全没有扩散。如果农民将这样的样品放入喷雾罐中,而不进行任何搅拌,那么它就无法成功喷洒到田地里,也就无法有效喷洒到作物上。
现在回到ARTEMIS的主体部分,我们来看看它的视觉分析模块VAM,这可能是它最强大的功能。它的作用是拍摄多张照片。我马上演示一下,稍后会展示图像。它利用激光、背光和前光进行成像,所有组件都集成在一个漂亮的盒子里。
这是我们实验的一个例子。这是一个样品,我们以三张为一组,每组曝光时间不同。前三张分别是正面照射、背面照射,以及激光照射进样品平面,然后从正面照射,您看到的是反射回来的光。第二组三张曝光方式不同,同样是正面照射、背面照射,激光照射进样品平面。第三组曝光时间也一样,非常长。您可以看到,正如预期的那样,随着曝光时间的延长,颜色强度也随之增加。接下来的三张是激光照射进样品后的效果。您看到的是相机实际检测到的激光照射效果。同样,激光照射进样品平面。在底部,您可以看到一些小红点,那是穿过样品的光。底部的样品透明度略低。
右边那个我们通常会忽略,因为它根本说明不了任何问题。希望我解释清楚了。这是一个例子。这是一个乳化样品。如果你仔细看图片,你会发现数字 3 左上方有一块白色的区域。在背光下,可以很清楚地看到顶部有东西。这就是我们所说的乳化样品。
我们想要的是一个成分均匀的样品。多年来,我们一直使用一款名为 ImageJ 的程序。它能给出样品的数值,但它并不关心样品的具体成分,只是返回一个数值。0 到 255 之间的任何数值都代表一种颜色,例如红色、绿色和蓝色。但这种方法无法提供易于理解的输出结果。通常需要由我来将这些数值组合起来,告诉化学家样品的成分。它是理想的白色均匀样品,还是有沉淀的黄色样品?虽然我们可以从数值中获取颜色信息,但这非常耗时。多年来,我一直想要的是一个能够真正告诉我样品外观的程序。它是否是一个理想的白色均匀样品?
我完全不需要做任何解读。或许需要做一些后台核查,但我不需要深入研究那些繁琐的数字。
作为这项工作的一部分,我们设计了一个实验,目的是筛选出一些乳化剂,并获取我们需要用来分析所有 Torch 信息以及其他一些原因的图像。我们有很多样本。大约有 800 个样本需要准备用于实验,这些样本也用于图像分析。所有图像都制备了三份。每个样本都进行了图像分析。实际上,每个样本总共有七张图像,我逐一查看并进行了解读。无论是沉淀物样本、乳霜样本,还是均匀的样本,或是少量泡沫,图像上都有各种各样的特征,我想你可以想象这非常耗时。我们需要查看超过 6000 张图像。这确实花了我不少时间。我一开始并没有完全理解。可能现在仍然不够完美,但我已经尽力了。
我出于不同的剂量原因提取了各种样本。图像会被保留下来,以备将来可能需要的其他技术使用。当你在实验室观察样本时,你的分析结果基本上会被立即丢弃,因为你只是把样本倒进了水槽,你无法再用任何图像查看它,它永远都在那里了。我们会用什么来进行图像分析呢?这是JMP中的Torch,它相当不错。我相信我们会更详细地讨论,但基本上,正如Russ刚才所说,这个程序可以查看图像,并根据我预先输入的一些知识进行解读。我用来做所有这些工作的笔记本电脑配置很高,我强烈建议你也用配置高的电脑,因为它确实会占用大量内存。我不会在这里进行任何实时演示,因为它可能需要相当长的时间,尤其是在进行更复杂的分析时。
我有一些例子,从中可以看出一些细微的差别。说实话,我们马上就要进入正题了,但首先要说明的是,我完全不是这方面的专家。我知道这些数字代表什么,但具体原理我并不了解。我引用了苏格拉底的一句话,我为此感到非常自豪。这句话是我自己找到的。我知道我对这方面一无所知,所以还是留给专家们来解释吧。那就交给你们了。另外,我这里展示的只是非常简化的结果。为了完成这项工作,我在幕后做了大量的工作,数据也会提供给你们。希望你们能仔细研究这些数据,从中获得更有价值的信息。正如我之前所说,结果并不完美。我对样本的实际外观与JMP的分析结果之间80%的相关性感到满意。
我得到的比这更高。还有其他工具可以做到这一点。实际上,你可以在 Python 的原生环境中运行这个脚本。
我们考虑过将其纳入数据网络的管道中。我们希望能够实现自动化。一旦我们对输出结果的真正含义和准确性有了更深入的了解和信心,我们就离目标更近了。
在正式开始之前,先感谢几位朋友。感谢的人很多。谢谢 Sam。还有几位来自 JMP 的同事。来自 Jealott's Hill 的 Liz Easton,她负责所有 JMP 许可证的管理;以及 Alan Brown,你们当中有些人可能还记得他,他是先正达的退休统计学家,过去几年里,他对先正达使用 JMP 产生了巨大的影响。正如我所说,他现在已经退休了,但他留下的宝贵遗产仍在延续。希望我之后也能顺利地使用 JMP。
实验设计我就不赘述了,这里只做个简化版。我们有人工智能系统、三种乳化剂(用量见下文),以及相应的溶剂(浓度范围与乳化剂相匹配),总共大约有1400个样品。我们用了三种不同的比色皿,样品就分别放入其中。
我们有纯净的样品池,也就是纯净的样品。我们还有稀释样品,在制备并倒置约五分钟后拍摄图像。此时的T值等于0。第二天,也就是大约24小时后,我们想观察这些样品在数小时内的稳定性。视觉分析和颜色是我对结果的解读。有均匀的,这是理想状态。有乳状层,表示样品上升到顶部。纯净层,应该始终与纯净的样品池一致。有沉淀,表示样品沉淀到底部。有泡沫,表示样品倒置后产生了泡沫,这对样品来说不是理想的状态。作为Torch插件的一部分,您实际上可以创建k折交叉验证列。根据建议,我们这里有三列,它们基本上是验证列,还有图像片段。它们不是全分辨率图像。它们被放入了数据表中。
你可以看到,很明显,这里面有不同品质的样本。正如我之前所说,我不会一一赘述,因为这需要相当长的时间。
希望您能看到我之前做的一些分析。我主要关注的是这些指标,即训练集 R 平方值与验证集准确率的比值。正如我之前所说,我希望预测结果与实际模型的预测结果之间达到 80% 的一致性。您可以看到,这里是 96%,那里是 97%。这里面有一些非常好的相关性。您可以尝试很多不同的图像模型。列表越往下,模型的运行时间就越长,但我过去尝试过很多模型,发现 LeNet5 实际上是一个不错的折衷方案。在分析速度和实际输出之间,随着列表的向下移动,模型的改进幅度很小。我对目前 95% 的准确率非常满意。您还可以调整层数、批大小和图像大小。再次声明,我并非专家。
我只是随意尝试这些数值,得到了不同的结果。你可以看到我在这里尝试了几种。与默认值(也就是最上面的那个)相比,并没有太大的改进。
很多优点之一就是你可以看到这个关于训练历史的图表。你可以看到,你想要的是它能更快地降下来,降得更低。你可以点击不同的模型,看看它们之间的性能对比。你可以找到一些非常优秀的模型,也可以找到一些噪声很大的次优模型。你可以改进它们,但噪声确实很大,不过你可以随着训练的进行不断改进。我还想看看这些图表。你可以看到得到正确答案的概率。虽然看起来有点杂乱,但实际数字显示,它并没有做出正确的预测。当然,这可能是我解读有误。在1500个样本中,只有33个是正确的。实际上,相关性非常好。作为证明,你还可以查看这里的混淆矩阵。它对大多数样本的预测都是正确的。
黄色占比100%。正如您所料,如果您愿意,也可以检测到其他颜色。白色占比97%,与验证结果的相关性也非常好。
您可以尝试不同的模型。沉淀物模型对特定泡沫的预测效果不太好,所以这不是一项重要的测试。至于奶油模型,预测的置信度不高,大约只有 84/1500,还算可以。这实际上表明该模型具有很高的可靠性,我们可以将其整合到分析工作流程中。我们希望能够自动识别图像,进行分析,并以易于理解的形式呈现结果。再次强调,这只是非常基础的测试。如果需要,我们可以添加更多信息,例如不同的颜色,如果我们有蓝色配方,也可以添加蓝色。
以上就是我试用JMP的Torch插件的简要介绍,其实挺有意思的。想了解更多信息,别来问我,去找像Russ这样的人,他们能提供更多细节。Russ,该你了,我就不多说了。
谢谢你,David。这真是个令人印象深刻的例子。看到这样的成果真的令人兴奋,尤其是我知道你是一位配方化学专家,但并非深度学习专家,却能成功运用它并取得成果。这正是我们设计这款软件,乃至整个 JMP 的初衷——为科学家、工程师以及现在的数据科学家而设计。我们正引领着行业新潮流。我还想从技术角度提一下,如果我没理解错的话,David,LeNet 的默认模型似乎会将你的激光图像调整为 28x28 像素。分辨率下降幅度相当大。实际上,我有一些例子表明,这种做法会严重降低性能。但就你的情况而言,这已经非常出色了。
效果非常好。
对于其他应用来说,可以使用更大的图像,虽然这会降低计算速度,但有时这样做是值得的。这时,Windows 上的 Nvidia GPU 就派上用场了。我赞同你的建议。运行这些模型需要不错的硬件。可惜的是,由于游戏行业的蓬勃发展,至少在 Windows 系统上,它们的硬件价格相当实惠。而且它们通常使用相同的芯片。问题是,如果你家有青少年之类的孩子,你们可能会为了争抢电脑而打架,但看到这个应用真的很有趣,David。恭喜你。我期待着与你进一步合作开发这些应用。我认为从某种意义上说,我们才刚刚起步。我想补充几点,以进一步阐述你刚才的观点。
首先,为了让大家了解情况,我们将进行第二次演讲,与本次演讲互为补充。根据您观看此视频的时间,第二次演讲的时间是2024年。如果您在10月17日之前观看,现在报名还来得及。如果您想观看直播,请前往LinkedIn,您可以在那里找到此广告。您也可以访问我的个人主页或Alexander Beck的个人主页进行注册。
如果现在已经过了10月17日,我想你仍然可以找到录像,了解更多细节。作为今天演讲的后续,我们也会更深入地探讨几个主题。我还想提一下,这并非个例。例如,今年刚刚发表了一篇论文,作者是来自新加坡、剑桥和巴斯夫的研究人员,他们撰写了一篇关于洗发水配方的优秀论文。他们采用了非常出色的实验设计方法,这正是我们在JMP中非常欣赏的。这正是我们擅长的领域——我们喜欢的实验和分析。他们拍摄配方照片,并尝试构建分类器模型。他们还使用了一些先进的自动化机器人来辅助图像采集。看到这些成果真是太棒了。我认为这项技术能够真正利用高质量数据,并从中获得最大价值。
值得庆幸的是,他们确实公开了数据。这里简单展示一下。我们还使用 Torch 插件处理了这些图像,构建了一个分类器。
我们甚至在论文发表的结果基础上又做了一些改进。这些模型还有很大的提升空间,它们的能力令人惊叹。当然,它们并非万无一失,有时甚至会犯一些低级错误。例如,我认为在这个例子中,裁剪就起到了很大的帮助。你必须注意图像边缘的伪影。有时,这些模型会过于贪婪,它们会关注一些你并不需要的部分。在这种情况下,我们事先进行了一些裁剪,最终得到了非常好的结果。如果你想亲自尝试一下这个插件,它可以在 JMP 社区免费获取。只需搜索一下,最简单的方法可能是在网上搜索“Torch Deep Learning JMP Pro”,你应该就能找到这个页面。你需要一个可用的 JMP Pro 18 或 19 版本,早期用户版本现在也可以下载了。
这两种方法都应该可行。然后您只需从这里下载插件即可。为了更具吸引力,我们还整理了一系列精彩的示例,名为《Torch Storybook》。
这实际上只是一个跳转表,即使不安装插件,您也可以下载查看。我们现在已经收集了 47 个示例,涵盖各种不同的应用类型。这些示例似乎更侧重于化学领域,这或许是我们最重要的行业或科学重点之一,例如,我认为我们接下来会基于此构建一个应用,而我们这里的数据就来自……这实际上是 Discovery Europe 的一篇论文。去年,或者可能是今年早些时候,他们研究了一个发酵批次过程。他们实际上有时间数据。有趣的是,我们能够使用 JMP Graph Builder 将这些数据构建成热图,然后将其导入 Torch 深度学习模型。这可能是您一开始没有想到的。事实上,如果说今天有一个主题,那就是将图像与 JMP 中的深度学习模型进行匹配的想法,开辟了一个全新的领域,并催生了各种各样的应用。
此表中的许多应用都来自图像。
我还想提一下,我们也在研究非结构化文本,例如,利用分子的微笑字符串来预测性质。这非常了不起。我希望我们能在下次的演讲中更详细地讨论这方面的内容,但只是想先抛砖引玉。请随意下载这张表格,并浏览一些可能引起您兴趣的示例。表格中包含数据下载链接,所有数据均为公开数据集。此外,还有示例输出、参考文献和背景资料。如果您想快速入门,这张表格旨在通过一系列优秀的示例帮助您做到这一点。通过实例学习总是很有帮助的。我们对这些应用感到非常兴奋。David,我希望随着研究的深入,大家都能顺利地跟上你的步伐,我们也期待着你分享其他应用。再次感谢你,David。我非常珍惜与你合作的机会。David,你对下一步的分析有什么想法?
这关乎尝试不同的样本,并确保每个人都对最终结果感到满意。这是在我们已有知识的基础上进行的。
非常好。我知道我们也有一些客户已经……他们也做了同样的事情,并且已经开始在实践中部署他们的模型了。他们中的许多人都在使用 Python,而我们现在也有一些应用程序,可以在 Torch 中训练模型,将其保存为 PyTorch 对象,然后通过 JMP 的 Python 集成将其加载到 Python 程序中。我们现在在这方面已经有了很好的连接。很多令人兴奋的事情正在发生。这只是实现这一目标的一种方式。我认为这是标准的非生成式人工智能机器学习,非常流行且实用。就你而言,David,这或许可以让你少跑几趟眼科诊所,并真正加速和改进你的工作流程和日常活动。
当然,是的。
好的。感谢大家的收看。我们希望能在探索会议或其他场合见到你们。欢迎随时通过LinkedIn或JMP邮箱联系我们。我们很乐意与你们进一步探讨JMP Pro的最新动态和其他相关事宜。