在计算机视觉领域,图像标注一直是训练模型过程中耗时且成本高昂的一环。每个需要识别的对象都需要精确标注,这对特定领域的模型和追求广泛类别高性能的大型通用模型都是一个限制。例如,OpenAI的CLIP模型,它能够根据图像预测最相关的文本片段,虽然非常有用,但是模型训练需要4亿对文本图像对,需要大量的标注工作。这不仅在数据收集和标注上花费时间,而且与图像的丰富内容相比,标签的精确性也有限。DINOv2的出现是一个突破性进展,值得研究它如何改进计算机视觉流程。
自然语言处理(NLP)领域多年来已经有了丰富的特征提取方法,如Word2Vec到BERT的向量嵌入。这些基础嵌入为广泛的应用铺平了道路。同样,新的图像嵌入模型将为新的计算机视觉应用奠定基础。在本指南中,将讨论DINOv2是什么,它如何工作,可以用它做什么,以及如何开始使用DINOv2。
DINOv2是由Meta Research开发的自监督方法,用于训练计算机视觉模型,并于2023年4月发布。由于DINOv2是自监督的,输入数据不需要标签,这意味着基于这种架构的模型可以学习图像内容的更丰富信息。Meta Research已经开源了DINOv2背后的代码和模型,展示了用于各种任务类型的架构,包括深度估计、语义分割和实例检索。DINOv2的训练方法在Meta Research发布的项目论文中有详细记录。
DINOv2利用了一种称为自监督学习的技巧,其中模型使用无标签的图像进行训练。模型不需要标签有两个主要好处。首先,模型可以在不投入大量时间和资源进行数据标注的情况下进行训练。其次,模型可以从图像输入数据中提取更有意义和丰富的表示,因为模型是直接在图像上训练的。通过直接在图像上训练模型,模型可以学习图像中的所有上下文。
在为模型准备数据时,Meta研究人员使用了来自策划和非策划数据源的数据。这些图像随后被嵌入。非策划图像被去重,然后去重后的图像与策划图像结合,创建了用于训练模型的初始数据集。在DINOv2之前,构建嵌入整个图像语义的通用计算机视觉模型的常见方法是使用图像-文本对的预训练步骤。例如,OpenAI的CLIP模型,它可以处理从图像检索到分类的任务,是在4亿图像-文本对上训练的。CLIP根据文本对学习图像内容的语义信息。相比之下,DINOv2是在1亿4210万9386张图像上训练的。
DINOv2可以用于预测图像中每个像素的深度,在NYU Depth和SUN RGB-D深度估计基准数据集上评估时,达到了最先进的性能。Meta Research在他们的代码库中创建了一个带有DPT解码器的深度估计模型,尽管这不是开源的。因此,需要编写代码,使用模型主干构建深度估计模型。
DINOv2能够分割图像中的物体。Meta Research在ADE20K和Cityscapes基准上评估了DINOv2,并在模型游乐场中的实例分割示例中表示,与其他相关模型相比,在没有任何微调的情况下取得了“有竞争力的结果”。官方没有提供用于分割的图像分割头部,这意味着需要手动编写代码才能使用DINOv2进行分割任务。
DINOv2适用于图像分类任务。根据Meta Research的说法,DINOv2的性能在“广泛的任务上与文本-图像模型如CLIP和OpenCLIP的性能相当或更好”。例如,如果想对建筑工地上的车辆图像进行分类,可以使用DINOv2通过最近邻方法或线性分类将车辆分类到指定的类别中。话虽如此,需要一个定制的分类器头部才能与DINOv2嵌入一起工作。
DINOv2可以作为图像信息检索系统的一部分,该系统接受图像并返回相关图像。为此,需要在数据集中嵌入所有图像。对于每次搜索,提供的图像将被嵌入,然后返回与嵌入查询图像具有高余弦相似度的图像。在Meta Research的DINOv2模型游乐场中,有一个系统可以检索与地标相关的图像。这用于找到与图像相似的艺术作品。可以使用加载模型的现成代码和使用模型编码图像来构建图像到图像的实例检索系统。然后,可以使用像faiss这样的向量存储来存储图像库的嵌入,并使用余弦度量等距离度量来找到与另一张图像相关的图像。
要开始使用,DINOv2论文背后的代码可以在GitHub上找到。代码附带了四个检查点,大小从最小的模型84MB到最大的模型4.2GB不等。还有训练脚本,可以用它们在不同的数据集上训练模型。DINOv2代码库在Creative Commons Attribution-NonCommercial 4.0 International许可下授权。