随着人工智能技术的飞速发展,图像标注和数据集转换的效率得到了显著提升。本文将介绍如何利用Grounding DINO和SAM这两个先进的AI模型来加速图像标注过程,并将目标检测数据集转换为实例分割数据集。为此准备了一份Jupyter Notebook,可以在本地或Google Colab中打开,边阅读本文边跟随操作。
使用Grounding DINO和SAM进行图像标注
Grounding DINO和SAM是两个强大的AI模型,它们可以协助完成数据集的标注工作。Grounding DINO能够实现图像中任何物体的零样本检测,而SAM则可以将这些边界框转换为实例分割掩码。之前已经发布了详细介绍这些模型的博客文章,并提供了安装和使用它们的逐步指导。为了节省时间,鼓励参考这些博客文章以获取深入的信息和指导。
首先,准备想要标注的图像。然后,使用Grounding DINO模型生成图像中物体周围的边界框。这些初始边界框将作为实例分割过程的起点。左侧是源图像,右侧是Grounding DINO推理结果。
有了边界框之后,现在可以使用SAM模型将它们转换为实例分割掩码。SAM模型接受边界框数据作为输入,并输出图像中每个物体的精确分割掩码。左侧是SAM推理输入提示,右侧是SAM推理结果。
在获得初始实例分割掩码之后,清理数据至关重要。这可能涉及删除重复检测、合并重叠的多边形或拆分覆盖多个物体的多边形。仔细的数据清理确保最终的注释准确无误,并且可以用于各种目的。在转换为Pascal VOC XML之前,可视化原始掩码。保存生成的掩码有两个原因:一是在像Roboflow Annotate这样的注释工具中完善注释,它允许轻松编辑和验证数据;二是使用注释来训练其他模型,如实时目标检测器YOLOv8,为它们提供坚实的注释数据基础。
import supervision as sv
dataset = sv.Dataset(...)
dataset.as_pascal_voc(
annotations_directory_path='path/to/annotations/directory',
min_image_area_percentage=0.002,
max_image_area_percentage=0.80,
approximation_percentage=0.75
)
通过调整这些参数,可以控制自动化注释的质量,并根据特定需求微调结果。
自动化标注过程完成后,将希望清理数据以确保注释满足需求。Roboflow Annotate提供了一个基于Web的平台来完成这项任务,它支持由SAM驱动的一键多边形标注。在Roboflow UI中加载后自动生成的注释。
如果已经有一个用边界框标注的数据集,并希望将其转换为实例分割数据集,可以单独使用SAM,因为该模型可以处理现有的边界框。首先,将目标检测数据集下载到Python环境中。如果数据集存储在Roboflow中,可以手动导出它,或者使用roboflow包来完成。然后,遍历每张图像的边界框,分别查询SAM以生成实例分割掩码。最后,保存生成的掩码和注释。左侧是带有边界框注释的源图像,右侧是SAM生成的掩码的相同图像。
使用Grounding DINO和SAM获得的标签质量在很大程度上取决于想要标注的类别。对于在流行数据集中出现的常见类别,可以期待出色的结果。然而,对于不常见的类别,注释的质量可能较差。为了评估这些模型对特定用例的有效性,建议从数据集中开始使用一小套代表性图像。
需要注意的是,尽管计算机视觉领域取得了最新的突破,仍然没有准备好完全自动化标注过程。人类验证和策划对于确保最佳结果至关重要。尽管如此,利用像Grounding DINO和SAM这样的模型可以显著节省整个数据集标注的时间,让专注于完善结果和训练更准确的机器学习模型。
令人兴奋的公告
很高兴地宣布,正在开发一个Python库,以简化从像Grounding DINO、SAM、CLIP等强大的零样本计算机视觉模型向像YOLOv8这样的实时检测器转移知识的过程。这一创新将彻底改变数据集标注,并加速计算机视觉项目。通过订阅每周通讯,不要错过即将发布的版本,并不要错过计算机视觉领域的这一激动人心的发展!