DINOv2 用于自定义数据集分割:一份全面的教程
DINOv2自定义数据集分割:一份全面教程
YOLOv8 和 SAM (Segment Anything Model) 之后,最受期待的计算机视觉模型是 DINOv2。我从这个 GitHub 仓库得到了这个教程的灵感:https://github.com/NielsRogge/Transformers-Tutorials/tree/master,在运行代码时,由于这个,我发现了 2 个错误,训练模型时遇到了一些烦人的错误(在他的教程中,他在一些步骤和训练的最后一步骤之间停止了训练,并且在其中出现了错误)。整个代码都是从他的笔记本中拿来的(除了一些更改 🙂 ),下面是攻击的计划:
攻击计划
- DINOv2 简介
- 库安装
- 加载数据集
- 创建 PyTorch 数据集
- 创建 PyTorch 数据加载器
- 定义模型
- 训练模型
DINOv2 简介
DINOv2 是一个完全自我监督训练的视觉 transformer,使用一个精心策划的包含 1.42 亿个图像的数据集进行训练。它提供了最佳的图像特征或嵌入,可用于图像分类、图像分割和深度估计等下游任务。
图1 描述了这种方法,本教程中,我只是在一个冻结的 DINOv2 骨干网络之上训练一个线性变换(1*1 的 CNN 层)。这个变换将把特征(patch embeddings)映射到 logits(神经网络输出的未归一化分数,表示模型的预测)。在语义分割的上下文中,logits 的形状将是 (batch_size, num_classes, height, width),对应于每个像素的预测类别。
库安装
下面是两个主要的库:
- 《顶级7个必备备考表,让你在数据科学面试中出类拔萃》
- Gary Huestis, Powerhouse Forensics的所有者和董事 – 采访系列
- 五个步骤,在不拖累经济的情况下在您的企业中实施人工智能
!pip install -q git+https://github.com/huggingface/transformers.git datasets!pip install -q evaluate
加载数据集
接下来,让我们加载一个图像分割数据集。在这个例子中,我们将使用 Foodseg 数据集。
from datasets import load_dataset#datasetdataset = load_dataset("EduardoPacheco/FoodSeg103")#lables…