零样本目标检测模型的应用与使用指南

零样本目标检测是一种先进的计算机视觉技术,它使得模型能够在没有针对特定类别进行训练的情况下,识别和定位图像中的目标。这种模型通过在大规模数据集上的训练,能够识别出广泛的对象,从而在没有定制模型训练的情况下实现目标的定位。

零样本目标检测模型接受一个或多个文本提示(例如“汽车”),并尝试识别出所有列出的感兴趣的对象的位置。这些模型旨在识别广泛的图像,例如使用Grounding DINO模型来识别太阳能电池板,可以使用文本提示“太阳能电池板”来进行识别。

尽管Grounding DINO和其他零样本模型功能强大,但它们体积庞大,需要大量的计算资源来运行,与微调模型相比。因此,许多最先进的零样本模型在大规模、实时或边缘环境中运行是不切实际的。零样本模型可以跨图像进行分析运行,或者可以使用零样本模型自动标记数据以供训练更小的、微调模型使用。Autodistill框架使能够用几行代码完成此操作。可以使用Grounding DINO或OWLv2模型来标记数据,然后训练一个更小的模型,如YOLOv8,对标记数据集进行训练。生成的模型适合实时边缘部署,与大型零样本模型不同。

让讨论如何使用零样本目标检测模型。在本指南中,将通过Autodistill生态系统使用Grounding DINO。请注意,Grounding DINO的推理速度可能在支持CUDA的GPU设备上约为每秒1帧。Grounding DINO在识别常见对象(例如汽车、人、狗等)方面最有效。但是,该模型在识别不常见对象(例如特定类型的汽车、特定人、特定狗等)方面效果较差。

要开始使用,安装以下依赖项:

pip install autodistill autodistill-grounding-dino

然后,创建一个新的Python文件并添加以下代码:

from autodistill_grounding_dino import GroundingDINO from autodistill.detection import CaptionOntology from autodistill.utils import plot import cv2 base_model = GroundingDINO(ontology=CaptionOntology({"deer": "deer"})) results = base_model.predict("image.jpg") plot(     image = cv2.imread("image.jpg"), detections = results, classes = ["deer"] )

在这段代码中,使用本体加载了Grounding DINO。这个本体描述了想要识别的类别以及想要保存每个类别的方式。在这种情况下,使用本体:

“deer”: “deer”

第一个值是将发送给Grounding DINO的提示。第二个是将记录的类别名称。然后,显示一个预测。以下是脚本在图像上运行的示例:

零样本模型是视觉领域的新前沿。这些模型拥有大量的知识,因此不需要微调即可使用。然而,零样本模型速度较慢。因此,建议使用零样本模型来训练一个可以更快运行并在边缘部署的微调模型。零样本检测模型无法识别每个对象。对于这些用例,训练一个微调模型是唯一的可用选项。此外,零样本模型可能在数据上表现不佳;如果出现这种情况,建议训练一个微调模型,并尽可能使用该模型进行标记。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485