尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

DINOv3零样本分割:不训练也能出像素级语义分割图

DINOv3零样本分割:不训练也能出像素级语义分割图 DINOv3零样本分割不训练也能出像素级语义分割图【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3DINOv3 的 dino.txt 多模态模型支持零样本分割你只需要给出一组英文类别名它就能输出像素级的语义分割结果整个过程不标注、不训练。对需要快速验证新领域分割效果的开发者来说这是目前最省事的一条路。传统流程有三个重环节收集图像并逐像素标注、训练模型跑数天、换新数据集就得全部重来。零样本分割把这条链路压缩成一句话你列出想区分的类别模型直接给出掩码换数据集时只改类别表其余环节全部跳过。 能力总览先确认它适不适合你这一步帮你花 30 秒判断该不该往下读避免把时间花在不匹配的工具上。维度说明能做什么开放词汇语义分割Cityscapes 19 类街景、ADE20K 150 类室内外场景也可换成你自己的类别表不做什么不区分实例车 1和车 2分不开不做逐像素置信度校准不适合毫秒级延迟的实时任务适合谁需要在新领域快速出分割效果验证的开发者、要评估开放词汇基线的研究者 三步跑通环境、加载与首次推理这一步给你一个最小可运行环境十几行代码就能拿到第一张分割掩码。第一步装环境。仓库自带 conda.yaml固定 Python 3.11 与 torch、torchvision、torchmetrics 等依赖直接建环境即可git clone https://gitcode.com/GitHub_Trending/di/dinov3 cd dinov3 micromamba env create -f conda.yaml micromamba activate dinov3第二步加载模型。它会返回模型和分词器两个对象import torch from dinov3.hub.dinotxt import dinov3_vitl16_dinotxt_tet1280d20h24l model, tokenizer dinov3_vitl16_dinotxt_tet1280d20h24l() model.to(cuda, non_blockingTrue) model.eval()首次运行会自动下载 ViT-L/16 骨干权重与文本编码器权重稍等即可。第三步算出类别的文本特征。以类别 car 为例把类别名填进模板池、编码后做归一化与平均text [t.format(car) for t in PROMPT_TEMPLATES] feats model.encode_text(tokenizer(text).cuda()) feats F.normalize(feats[:, feats.shape[1] // 2 :], p2, dim-1) text_feats F.normalize(feats.mean(dim0), p2, dim-1)到这里你就有了一组类别向量图像侧特征算出来做相似度比较即可得到掩码。含 Cityscapes、ADE20K 数据集定义和评估循环的完整闭环在零样本分割 notebook里照着替换数据路径就能跑。 原理速览零样本为什么成立这一步让你明白零样本分割的内在逻辑后面调模板、调窗口时才知道改哪里能起效。视觉侧ViT 骨干把图像切成 16×16 像素的 patch每个小块产出一个特征向量整张图就变成一张与图像分辨率对应的密集特征图每个位置一个向量。文本侧每个类别名先被模板展开成几十句话再经文本塔编码成向量取平均后得到一个稳定的类别向量。匹配推理时只需计算每个 patch 向量与每个类别向量的余弦相似度衡量两个向量夹角越接近 1 越对齐哪个类别最像就判给哪个像素。关键在于两侧的向量空间是同一个训练目标对齐出来的文字和像素天然可比不需要针对你的数据再训一次零样本分割因此成立。⚖️ 两种推理模式怎么选这一步给你 whole整图与 slide滑动窗口两条路径的适用边界选对模式直接影响速度上限。whole 整图模式整张图一次前向直接输出低分辨率相似度图再双线性插值到目标尺寸。速度快短边 512 规模图像的首选。slide 滑动窗口模式以固定窗口在图上按步长滑动notebook 默认 side384、stride192逐窗口计算后按重叠次数平均。高分辨率下小目标更清楚但前向次数随窗口数增长。判断依据场景选择短边 1024 以内、速度优先whole大图且小目标路灯、标志牌重要slide验证阶段先快速看效果whole 文字提示模板怎么配这一步告诉你模板池的作用和改法效果上限有一半取决于它。模板池是 80 多条句式每个类别名填入所有模板分别编码再取平均。相当于让这个类别从多个角度被描述避免单一措辞把向量带偏做法沿袭自 CLIP 的提示工程。PROMPT_TEMPLATES ( a photo of a {0}., a bad photo of a {0}., a photo of many {0}., a photo of the {0}., )选用方法默认池直接保留面向特定领域航拍、工业质检、医疗时加两三条场景句式例如 an aerial photo of a {0}.其余不动。 效果验证mIoU 与两个基准数据集这一步给你怎么算好的标尺跑完实验才知道数字代表什么。notebook 内置两个现成评测集Cityscapes19 类街景与 ADE20K150 类室内外场景用 MulticlassJaccardIndex 按 macro 平均计算 mIoU各类别交集占并集比例的均值越高越好。先对比同数据集下 whole 与 slide 的差距确认上分辨率是否值得图越大差距越明显。再看弱类别macro 平均会被 pole、traffic sign 这类小目标拉低逐类看 Jaccard 找短板比只看总分更有用。改模板或换类别表后固定同一套配置重跑直接比较 mIoU 数值即可归因。⚙️ 部署要点问题与做法这一步是生产化前的对照清单逐项排查即可。显存不够调低短边 resizenotebook 默认 512slide 模式可减小 side、放大 stride代价是细节损失。推理太慢whole 模式用批量推理提高 GPU 利用率slide 模式瓶颈在窗口数优先减窗口。文本特征反复计算每类 text_feats 只需算一次并跨批次复用notebook 的循环就是这么写的。没有 GPU可 CPU 推理做小规模验证但耗时明显正式跑请留在 GPU 上。️ 关键路径索引这一步给你五个定位源码的入口改模型或加数据集时从这里进。dinov3/hub/dinotxt.py模型构建与权重加载入口notebooks/dinotxt_segmentation_inference.ipynb数据集、两种推理、mIoU 评估的完整闭环dinov3/eval/text/text_tower.py文本编码器dinov3/eval/text/vision_tower.py与文本对齐的视觉头部dinov3/models/vision_transformer.pyViT 骨干定义最后说三句话DINOv3 的零样本分割把语义分割从按周计的项目变成当天可验证的任务免标注、免训练类别表随时可换Cityscapes 和 ADE20K 两套评测现成可用whole 与 slide 两种模式覆盖了从快速验证到高分辨率出图的完整需求。你的下一步很明确打开那个 notebook把数据集字段换成自己的数据按默认 512 短边加 whole 模式先跑一遍拿到第一组 mIoU 数字再决定它是否符合你的场景。【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表