农业对你今天的生活有什么影响果你住在城市里,你可能会觉得你与生产你食物的农场和田地脱节了。农业是我们生活的一个核心部分,我们却常常认为这是理所当然的。
农业机器人
在蓝河科技,我们正在制造下一代智能机器。农民使用我们的工具来控制杂草和降低成本,以促进农业可持续发展。
我们的除草机器人集成了摄像头、计算机视觉、机器学习和机器人技术,制造了一款智能喷雾器,可以在田间行驶(使用AutoTrac将驾驶员的负载降至最低),并快速锁定目标并喷洒杂草,使作物完好无损。
- AutoTrac:https://www.deere.com/en/technology-products/precision-ag-technology/guidance/auto-trac/
这台机器需要实时决定什么是庄稼什么是杂草。当机器在野外行驶时,高分辨率相机以高帧速率采集图像。
我们开发了一个卷积神经 络(CNN),使用Pytorch分析每一帧,并生成一张像素精确的农作物和杂草所在的地图。一旦所有的植物都被识别出来,每个杂草和作物都被映射到田间位置,机器人只喷洒杂草。
整个过程在几毫秒内完成,因为效率很高,农民就可以覆盖尽可能多的土地。
这是一个很棒的See&Spray视频,详细介绍了该过程。
- https://youtu.be/XH-EFtTa6IU
为了支持机器学习(ML)和机器人技术,我们基于NVIDIA Jetson AGX Xavier Edge AI平台构建了一个令人印象深刻的计算单元。
因为我们所有的推断都是实时进行的,上传到云端需要的时间太长,所以我们将服务器场带到现场。
专门用于视觉推理和喷雾机器人的机器人的总计算能力与IBM的超级计算机Blue Gene(2007)相当。这使它成为全球移动机械中具有最高计算能力的机器!
杂草检测模型的建立
我的研究人员和工程师团队负责训练识别作物和杂草的神经 络模型。这是一个具有挑战性的问题,因为许多杂草看起来就像庄稼。专业的农学家和杂草科学家训练我们的标签工作人员正确地标记图像——你能发现下面哪些是杂草吗/p>
机器学习栈
在机器学习方面,我们有一个复杂的堆栈。我们用Pytorch训练我们所有的模特。我们在Pytorch上建立了一组内部库,允许我们进行可重复的机器学习实验。我的团队职责分为三类:
-
建立生产模型以部署到机器人上
-
以不断提高模型性能为目标,进行机器学习实验和研究
-
与机器学习、A/B测试、流程改进、软件工程相关的数据分析/数据科学
我们选择Pytorch是因为它非常灵活且易于调试。新的团队成员可以很快跟上进度,而且文档非常详尽。
在使用PyTorch之前,我们的团队广泛使用Caffe和Tensorflow。2019年,我们决定改用Pytorch,过渡顺利。同时也为工作流的研究提供了支持。
例如,我们使用Torchvision库进行图像变换和张量变换。它包含了一些基本的功能,并且与像imgauge这样的复杂的增强包进行了很好的集成。torchvision 中的变换对象与imgauge的集成就是小菜一碟。
下面是一个使用Fashion MNIST数据集(https://github.com/zalandoresearch/fashion-mnist) 的代码示例。
名为CustomAugmentor的类将初始化构造函数中的iaa.Sequential对象,然后在call方法中调用invoke_image()。然后,在ToTensor()之前,将CustomAugmentor()添加到对transforms.Compose()的调用中。
现在,当加载批次进行训练和验证时,train和val数据加载器将应用CustomAugmentor()中定义的增强。
此外,PyTorch已成为计算机视觉生态系统中最喜欢的工具(请参阅https://paperswithcode.com/,PyTorch是常见的提交)。这样一来,我们就可以轻松地尝试诸如Debiased Contrastive Learning之类的新技术进行半监督式训练。
在模型训练方面,我们有两个正常的工作流程:生产和研究。
对于研究应用程序,我们的团队在内部本地计算群集上运行PyTorch。在本地群集上执行的作业由Slurm管理,Slurm是基于HPC批处理作业的调度程序。它是免费的,易于设置和维护的,并且提供了我们小组运行数千个机器学习作业所需的所有功能。
对于基于生产的工作流程,我们在AWS托管的Kubernetes(K8s)集群之上利用Argo工作流程。我们的PyTorch训练代码是使用Docker部署到云中的。
从图1非常清楚,动量值越大,f1分数越高。最佳值0.9447在动量值0.999时出现,在动量值0.9999时下降到0.9394。数值如下表所示。
结果在图2中以图表形式显示,在表2中以表格形式显示。完整的 告也可以在线获得。
- https://app.wandb.ai/blueriver/blog-post/reports/AI-For-AG-Production-ML-for-Agriculture–VmlldzoxNTA1MDgccessToken=icdp45djyu5zxey5h0sa41bdvoncfqp1buga0h2fnj6cgf6cs8xsg23hiar8qr14
你可以看到,仅通过SGD调整动量值就无法击败Adam。动量设置为0.999可以得到非常相似的结果,但Adam运行的方差更小,平均值也更高。因此,Adam似乎是解决我们的植物分割问题的一个好选择!
W&B实验跟踪还可以使Pytorch模型在训练期间更容易可视化,因此你可以在中央仪表板上实时查看损失曲线。我们在团队会议中使用这些可视化效果来讨论最新结果并共享更新。
在这里,我们可以快速浏览正确标注,预测以及两者之间的差异。我们将农作物标记为绿色,将杂草标记为红色。如你所见,该模型在识别图像中的农作物和杂草方面做得相当合理。
以下是如何在W&B中使用数据帧的简短代码示例:
可复制模型
再现性和可追溯性是任何ML系统的关键特性,而且很难得到正确的结果。当比较不同的 络体系结构和超参数时,输入数据必须相同才能使运行具有可比性。
通常ML团队中的个体实践者都会保存YAML或JSON配置文件——要找到团队成员的运行记录并仔细查看他们的配置文件以找出使用了什么训练集和超参数,这是一件非常痛苦的事情。我们都做过,我们都讨厌。
W&B刚刚发布的一个新特性解决了这个问题。工件(Artifact)允许我们跟踪训练和评估运行的输入和输出。这对我们的可重复性和可追溯性有很大帮助。我可以知道使用了哪些数据集来训练模型,生成了哪些模型(来自多次运行)以及模型评估的结果。
典型的用例如下。数据暂存过程将下载最新和最大的数据,并将其暂存到磁盘上进行训练和测试(每个数据集都是单独的)。这些数据集被指定为工件(Artifact)。
训练运行将训练集工件(Artifact)作为输入,并将经过训练的模型输出为输出工件(Artifact)。评估过程将测试集工件(Artifact)与训练的模型工件(Artifact)一起作为输入,并输出可能包含一组度量或图像的评估。
有向无环图(DAG)是在W&B中形成和可视化的。这是很有帮助的,因为跟踪将机器学习模型发布到生产中所涉及的工件(Artifact)非常重要。这样的DAG很容易形成:

Artifacts特性的一大优点是可以选择上载所有工件(Artifact)(数据集、模型、评估),也可以选择只上载对工件(Artifact)的引用。这是一个很好的特性,因为移动大量数据既耗时又慢。对于数据集工件(Artifact),我们只需在W&B中存储对这些工件(Artifact)的引用,这就允许我们保持对数据的控制(并避免长时间的传输),并且在机器学习中仍然可以获得可追溯性和再现性。
领导ML团队
回顾我领导机器学习工程师团队的这些年,我看到了一些常见的挑战:
效率:当我们开发新模型时,我们需要快速试验并分享结果。Pytorch使我们很容易快速添加新特性,W&B为我们提供了调试和改进模型所需的可见性。
灵活性:与我们的客户合作,每天都会带来新的挑战。我们的团队需要能够满足我们不断变化的需求的工具,这就是为什么我们选择Pytorch作为其蓬勃发展的生态系统,选择W&B作为轻量级的模块化集成。
性能:归根结底,我们需要为我们的农业机器人建立最精确和最快的模型。Pytorch使我们能够快速迭代,然后将模型产品化并部署到现场。我们在W&B的开发过程中具有完全的可视性和透明度,使我们很容易确定性能最好的模型。
原文链接:https://medium.com/pytorch/ai-for-ag-production-machine-learning-for-agriculture-e8cfdb9849a1
磐创AI博客站: http://panchuang.net/
sklearn机器学习中文官方文档: http://sklearn123.com/
磐创博客资源汇总站: http://docs.panchuang.net/
文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树首页概览11206 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!