发布人:Google 产品经理 Megha Malpani 和软件工程师 Ard Oerlemans
珊瑚礁是世界上最为多样和重要的生态系统之一,对海洋生物乃至更广泛的人类社会来说都是如此。健康的珊瑚礁不仅对渔业和食品安全至关重要,它们还可以保护海岸线免受风暴潮的影响、支持旅游经济推动药物研发等带来诸多益处。
珊瑚礁面临着许多日益升级的威胁,其中最明显的是气候变化、污染和过度捕捞。仅在过去的 30 年里,大堡礁 (GBR) 的珊瑚覆盖率和栖息地都已遭遇巨大的损失,其他珊瑚礁也经历了类似的衰退。在澳大利亚,以珊瑚为食的棘冠海星 (COTS) 的爆发已被证实会导致大量珊瑚遭遇损失。虽然棘冠海星是自然存在于印太海域的生物,但天然捕食者数量的减少和径流营养物的过剩导致其大规模的爆发,进而对已然脆弱的珊瑚群落造成了毁灭性的破坏。因此,控制棘冠海星种群对于促进珊瑚生长和恢复至关重要。
大堡礁基金会发起了一个创新项目,以开发新的调查和干预方法,进而从根本上提升对棘冠海星的控制。Google 与澳大利亚国家级科技研究机构——联邦科学与工业研究组织 (CSIRO) 合作,开发创新的机器学习技术,用以准确、高效且近乎实时地分析视频序列。
大堡礁基金会
https://www.barrierreef.org/
创新项目
https://www.barrierreef.org/what-we-do/reef-trust-partnership/crown-of-thorns-starfish-control
联邦科学与工业研究组织 (CSIRO)
https://www.csiro.au/en/about
合作目标在于大规模改造对珊瑚礁的水下调查、监控和测绘,以助于快速识别并优先关注棘冠海星的爆发。该项目是 Google 在澳大利亚所开展的“数字未来计划”下,与 CSIRO 建立更广泛合作伙伴关系的一部分。
数字未来计划
https://blog.google/intl/en-au/company-news/outreach-initiatives/digital-future-initiative/
CSIRO 在 NVIDIA Jetson AGX Xavier 的基础之上开发出了一个边缘 ML 平台,该平台可以分析水下图像序列,并近乎实时地绘制出检测结果。我们的目标是使用 CSIRO 在多次实地考察中构建的带注释的数据集,在性能多方面受限的条件下,开发出适用于各种环境、天气状况和棘冠海星种群的目标检测模型,并呈现出最准确的效果,更值得注意的是,该模型能够在功率不到 30 瓦的设备上,实现以 10 FPS 以上的速度处理数据。
NVIDIA Jetson AGX Xavier
https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-xavier/
为此,我们举办了一次 Kaggle 竞赛,利用开源社区的洞见来推动实验项目。共有 2,000 多个团队提交了 61,000 余份作品,这一数量远超我们预期自行实验的数目,从这些作品的成败中,我们也收获良多。我们借助参赛者的洞见定义了实验路线,并最终在 Google TPU 上运行了数百个实验。
Kaggle 竞赛
https://www.kaggle.com/c/tensorflow-great-barrier-reef
我们以 TensorFlow 2 的 Model Garden 库为基础,利用其中经扩展的 YOLOv4 模型和相应的训练流水线实现。我们的建模专家团队随即开始行动,修改流水线,使用不同的图像分辨率和大小各异的模型开展实验,并应用各种数据增强和量化技术,创建可在性能受限情况下呈现最准确效果的模型。
Model Garden 库
https://github.com/tensorflow/models/tree/master/official
经扩展的 YOLOv4
https://github.com/tensorflow/models/tree/master/official/vision/beta/projects/yolo
由于注释数据的数量有限,解决问题的关键是找出最有效的数据增强技术。借助从 Kaggle 竞赛提交的作品中所获得的知识,我们进行了数百次实验,以确定哪些技术组合能够最有效地提高模型的准确率。
在建模工作流程中,我们尝试了批处理、XLA 和自动混合精度(将部分模型转换为 fp16)等方法,以试验和提高模型的性能,所有这些方法让模型的 FPS 提升了 3 倍。然而,我们发现,在 Jetson 模块上,单独使用 TensorFlow-TensorRT(将整个模型转换为 fp16)实际上可让总速度提高 4 倍,因此我们仅使用 TF-TRT 推进实验。
在视频特定帧中检测到海星后,系统中的追踪器会随着时间推移关联检测结果。这意味着系统会为检测到的各个海星分配一个唯一 ID,只要对应的海星在视频中可见,这一 ID 便会一直保留。我们首先使用光流来预测海星在下一帧中的位置,然后根据其交并比 (IoU) 得分关联检测结果与预测结果,从而关联后续帧中的检测结果。
在这样的任务中,召回比精度更重要(即我们更关心有没有遗漏棘冠海星,而非误报),因此考虑使用 F2 指标 (F2 metric) 来评估模型准确率很有用。该指标可用于评估模型在单个帧上的表现。但我们的最终目标,是确定视频串流中出现的棘冠海星总数。因此,我们更关心对整个流水线准确率的评估(模型与追踪器),而非逐帧性能(也就是说,只要流水线能够准确识别海星的整体存在与位置,即使模型在一帧或两帧上的预测结果不准也无妨)。我们最终使用了基于序列的 F2 指标,来确定在某个平均 IoU 阈值下存在的“赛道”数量。
我们当前使用 TensorFlow TensorRT 的 1080p 模型,在 Jetson AGX Xavier 上的运行速度为 11 FPS,基于序列的 F2 得分达到 0.80!我们还训练了一个 720p 模型,该模型在 Jetson 模块上的运行速度为 22 FPS,基于序列的 F2 得分为 0.78。
Google 和 CSIRO 很高兴地宣布,对这两个棘冠海星目标检测模型进行开源,并创建了一个 Colab notebook 来演示服务器端推理工作流程。我们的 Colab 教程,可以让学生、海洋研究人员或数据科学家,在无需任何配置和零 ML 基础的情况下,使用图像序列评估我们的棘冠海星 ML 模型。此外,本教程还提供了为边缘 ML 平台(例如 Jetson 模块)实施优化推理流水线的蓝图。我们计划持续更新模型和追踪器,最终开源完整的 TFX 流水线和数据集,以便世界各地的保护组织和政府部门可以使用他们自己的数据集重新训练和修改我们的模型。敬请继续关注。如果您有想要合作的具体用例,欢迎联系我们!
Colab notebook
https://colab.sandbox.google.com/github/tensorflow/models/blob/master/official/projects/cots_detector/crown_of_thorns_starfish_detection_pipeline.ipynb
致谢
向努力推动实现这一项目的所有人表示衷心的感谢!
这一项目的成功离不开以下诸位的参与:CSIRO 的合作伙伴 Brano Kusy、Jiajun Liu、Yang Li、Lachlan Tychsen-Smith、David Ahmedt-Aristizabal、Ross Marchant、Russ Babcock、Mick Haywood、Brendan Do、Jeremy Oorloff、Lars Andersson 和 Joey Crosswell;优秀的 Kaggle 社区;以及同样重要的 Google 团队成员 Glenn Cameron、Scott Riddle、Di Zhu、Abdullah Rashwan、Rebecca Borgo、Evan Rosen、Wolff Dobson、Tei Jeong、Addison Howard、Will Cukierski、Sohier Dane、Mark McDonald、Phil Culliton、Ryan Holbrook、Khanh LeViet、Mark Daoust、George Karpenkov 和 Swati Singh。