AI 模型与平台
朱利安·雷贝兹,Picterra 的首席机器学习工程师 – 采访系列

朱利安·雷贝兹是 Picterra 的首席软件和机器学习工程师。Picterra 提供一个专门为训练深度学习检测器而设计的基于地理空间的云平台,能够快速、安全地训练和部署模型。
无需编写一行代码,仅需少量人工注释,Picterra 的用户就可以构建和部署独特的、可用的深度学习模型。
它自动分析卫星和航空影像,允许用户识别物体和模式。
是什么吸引你进入机器学习和人工智能领域?
我最初开始编程是因为我想制作视频游戏,并对计算机图形学产生了兴趣。这让我接触到了计算机视觉,这是一种计算机感知真实环境的过程。在我的学习过程中,我参加了一些机器学习课程,并对机器学习的计算机视觉方面产生了兴趣。我认为机器学习有趣的地方在于它是软件工程、算法和数学的交叉点,当它工作时,它仍然感觉有些神奇。
您已经从事分析卫星图像的机器学习工作多年了。您的第一个项目是什么?
我第一次接触到卫星图像是在 Terra-i 项目中(用于检测森林砍伐),我在学习期间参与了该项目。我对各个空间机构(NASA、ESA 等)生产的免费卫星数据量感到惊讶。您可以每天或每隔几天获得地球的图像,这是许多科学应用的伟大资源。
您能否分享更多关于“Terra-i”项目的详细信息?
Terra-i 项目(http://terra-i.org/terra-i.html)由瑞士 HEIG-VD 的安德烈·佩雷斯-乌里韦教授发起,目前由哥伦比亚 CIAT 的路易斯·雷蒙丁领导。该项目的想法是使用免费的卫星图像来检测森林砍伐。在那时,我们使用 MODIS 图像(250m 像素分辨率),因为它提供了统一的和可预测的覆盖范围(空间和时间)。我们每隔几天就会为每个像素获得一次测量,从这些测量的时间序列中,我们可以尝试检测异常或新颖性,如我们在机器学习中所说的那样。
这个项目非常有趣,因为数据量在当时是一个挑战,而且还有一些软件工程工作需要完成,以便在多台计算机上运行等等。从机器学习的角度来看,它使用了贝叶斯神经网络(当时不太深)来预测像素的时间序列应该是什么样子。如果测量结果与预测不符,那么我们就会有一个异常。
作为这个项目的一部分,我还致力于云去除。我们采用了一种传统的信号处理方法,即时间序列测量,其中一些测量结果将完全偏离正常值,因为有云层。我们使用了一种基于傅立叶变换的方法(HANTS)来清理时间序列,然后在清理后的时间序列中检测新颖性。其中一个困难之处在于,如果我们清理得太彻底,我们也会去除新颖性,因此我们需要进行大量的实验来找到合适的参数。
您还设计并实施了一个用于从农田航空(无人机)图像自动分类作物类型的深度学习系统。那个时候的主要挑战是什么?
这是我第一次真正接触深度学习。在那时,我认为主要的挑战更多地在于让框架运行并正确使用 GPU,而不是机器学习本身。我们使用了 Theano,它是 TensorFlow 的一个前身。
该项目的目标是根据无人机图像对农田中的作物类型进行分类。我们尝试了一种方法,即深度学习模型使用颜色直方图作为输入,而不是使用原始图像。为了使其能够合理快速地运行,我记得我不得不实现一个自定义的 Theano 层,甚至需要编写一些 CUDA 代码。那是一个很好的学习经验,也让我深入了解了深度学习的技术细节。
您现在是 Picterra 的首席软件和机器学习工程师。您如何描述您的日常工作?
这真的很有变化,但大部分时间都花在关注系统和产品的整体架构以及与各个利益相关者进行沟通。虽然机器学习是我们的核心业务,但您很快就会意识到,大部分时间并没有花在机器学习本身上,而是花在了机器学习周围的所有事情上:数据管理、基础设施、用户界面、原型设计、了解用户等等。这与学术界或之前在大公司的经验有很大不同,在那里您更专注于特定的问题。
关于 Picterra 的有趣之处在于,我们不仅为用户运行深度学习模型,而且还允许他们自己训练模型。这与许多典型的机器学习工作流程不同,在那里,机器学习团队训练一个模型,然后将其发布到生产环境中。这意味着我们不能手动调整训练参数,如我们经常做的那样。我们必须找到一种训练方法,可以适用于所有我们的用户。这导致我们创建了所谓的“实验框架”,它是一个模拟我们用户在平台上构建的训练数据的数据集仓库。然后,我们可以轻松地测试对我们的训练方法的更改,并评估它们是否有帮助。因此,我们不仅仅是在评估一个模型,而是在评估一个架构和训练方法论。
另一个挑战是我们的用户不是机器学习从业者,因此他们可能不了解什么是训练集、什么是标签等。构建一个允许非机器学习从业者构建数据集和训练机器学习模型的用户界面是一个持续的挑战,我们的 UX 和机器学习团队之间有很多来回的沟通,以确保我们引导用户朝着正确的方向前进。
您的一些职责包括原型设计新的想法和技术。您曾经参与过的一些最有趣的项目是什么?
我认为最有趣的项目是在 Picterra 中是自定义检测器的原型。1.5 年前,我们在平台上有“内置”的检测器:这些是我们自己训练并使其可供用户使用的检测器。例如,我们有一个建筑物检测器、一个汽车检测器等等。
这是典型的机器学习工作流程:您有一个机器学习工程师为特定用例开发一个模型,然后将其提供给客户。
但我们想做一些不同的事情,推动边界。所以我们说:“如果我们允许用户直接在平台上训练自己的模型呢?”有几个挑战需要解决:首先,我们不希望这需要几个小时。如果您希望保持这种交互的感觉,训练应该最多需要几分钟。其次,我们不希望需要成千上万个注释,这通常是大型深度学习模型所需的。
所以我们从一个非常简单的模型开始,在 Jupyter 中进行了一些测试,然后尝试将其集成到我们的平台中,并测试整个工作流程,包括基本的用户界面等。起初,它在大多数情况下都不能正常工作,但有一些情况下它可以工作。这给了我们希望,我们开始迭代训练方法和模型。几个月后,我们能够达到一个很好的状态,现在我们的用户经常使用它。
关于这件事有趣的是,保持训练速度快(目前几分钟)并且模型不太复杂,但同时又足够复杂以解决用户的问题的双重挑战。另外,它可以在大多数情况下使用少于 100 个标签来工作。
我们还应用了谷歌的“机器学习规则”中的许多规则,特别是关于实现整个管道和指标的规则,然后再开始优化模型。这让我们进入了“系统思维”模式,我们意识到并非所有问题都应该由核心机器学习来处理,一些问题可以推到用户界面,一些问题可以预处理或后处理等等。
您能否讨论一下 Picterra 使用的机器学习技术?
在生产环境中,我们目前使用 PyTorch 来训练和运行我们的模型。我们也偶尔使用 TensorFlow,用于为客户开发的特定模型。除此之外,我们使用的是标准的科学 Python 堆栈(numpy、scipy),并添加了一些地理空间库(gdal)。
您能否讨论一下 Picterra 的后端工作原理,当有人上传图像并希望训练神经网络来正确注释对象时?
当然,当您上传图像时,我们会处理它并将其存储在“云优化 GeoTIFF”(COG)格式中,我们的 Blob 存储(Google Cloud Storage)中,这允许我们快速访问图像的块,而无需下载整个图像。这是一个关键点,因为地理空间图像可能非常大:我们有用户经常处理 50000×50000 像素的图像。
然后,要训练您的模型,您需要通过我们的 Web 界面创建训练数据集。您需要定义三种类型的区域:
- “训练区域”,您将在其中绘制训练标签
- “测试区域”,模型将在其中预测以可视化一些结果
- “准确率区域”,您将在其中绘制标签,但这些标签仅用于评分,而不是用于训练
一旦您创建了这个数据集,您可以简单地点击“训练”,我们就会为您训练一个检测器。接下来发生的事情是,我们将一个训练作业加入队列,让一个 GPU 工作器拾取它(如果有许多并发作业,新的 GPU 工作器将自动启动),训练您的模型,将其权重保存到 Blob 存储中,最后在“测试区域”中预测以在用户界面上显示。从那里,您可以迭代您的模型。通常,您会在“测试区域”中发现一些错误,并添加“训练区域”以帮助模型改进。
一旦您对模型的评分感到满意,您就可以在大规模运行它。从用户的角度来看,这很简单:只需点击要运行的图像旁边的“检测”按钮。但在后台,如果图像很大,这就有点复杂了。为了加快速度、处理故障并避免检测需要几个小时,我们将大型检测分解为网格单元,并为每个单元运行一个独立的检测作业。这使我们能够运行非常大规模的检测。例如,我们有一个客户在丹麦的 25 厘米分辨率图像上运行了检测,数据量达到 TB 级别 – 只针对一个项目。我们在 Medium 上发表了一篇关于类似项目的文章:Medium 文章。
您是否还有其他关于 Picterra 的信息想要分享?
我认为 Picterra 的伟大之处在于,它是一个独特的产品,处于机器学习和地理空间技术的交叉点。我们与其他处理地理空间数据的公司不同之处在于,我们为用户提供了一个自助平台。他们可以轻松找到位置,分析模式,并在地球观测图像上检测和计数对象。没有机器学习,这将是不可能的,但我们的用户甚至不需要基本的编码技能 – 平台会根据少量人工注释执行工作。对于那些希望更深入地学习地理空间领域机器学习核心概念的人,我们推出了一个全面在线课程。
值得一提的是,Picterra 的可能应用是无穷无尽的 – 在平台上构建的检测器已被用于城市管理、精确农业、林业管理、人道主义和灾害风险管理、农业等领域,仅举几例。我们每天都被用户尝试使用我们的平台做的事情所惊讶。您可以试试看,并在社交媒体上告诉我们它的效果如何。
感谢这次精彩的采访,并感谢您与我们分享 Picterra 的强大功能,希望了解更多的读者可以访问 Picterra 网站。












