30分钟跑通 DINOv3 零样本语义分割:dinotxt 部署实战教程

发布时间:2026/9/15 15:57:51

30分钟跑通 DINOv3 零样本语义分割:dinotxt 部署实战教程 30分钟跑通 DINOv3 零样本语义分割dinotxt 部署实战教程【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3DINOv3 零样本语义分割实战教程主题是 dinotxt 部署传入类别名直接输出像素级 mask不训练、不用标注数据。下文按最短路径跑通、整图与滑窗推理怎么选、提示模板、mIoU 评估怎么读的顺序展开。️ 先看效果零样本分割输出什么先说清楚零样本分割的输入输出建立预期不训练没有标注数据没有要微调的 head模型参数不动。输入一张图 一组类别名例如(road, car, sky)。输出每个类别一张得分图沿类别维取 argmax 就是逐像素 mask。官方仓库自带一份可直接运行的推理 notebooknotebooks/dinotxt_segmentation_inference.ipynb里面写好了 Cityscapes 19 类和 ADE20K 150 类的类别定义、两种推理模式与指标统计。本文所有代码都取自这份 notebook照着交叉阅读即可。 环境搭建与最短路径跑通第一步clone 仓库并用 conda.yaml 建环境git clone https://gitcode.com/GitHub_Trending/di/dinov3 cd dinov3 micromamba env create -f conda.yaml micromamba activate dinov3conda.yaml 固定了 python 3.11、torch/torchmetrics以及 dino.txt 依赖的 ftfy 和 regex。验证方式新环境里执行python -c import torch打印版本号即成功。两点提醒dinotxt 入口会同时加载 ViT-L/16 主干权重权重需先按 README 的 Pretrained models 一节申请下载已有本地权重时用backbone_weights参数传入。图像要按 ImageNet 均值方差归一化且 H、W 拉伸到 16patch 大小的整数倍这两步在 notebook 的encode_image和ShortSideResize里。第二步一个脚本完成加载、文本编码、图像编码和取 maskmodel, tokenizer dinov3_vitl16_dinotxt_tet1280d20h24l() model.to(cuda).eval() tokenizer tokenizer.tokenize feats model.encode_text(tokenizer([a photo of a road., a photo of a car.]).to(cuda)) text_feats F.normalize(feats[:, feats.shape[1]//2:], dim-1) # [2, D] h, w img.shape[-2]//16, img.shape[-1]//16 grid F.normalize(model.visual_model.get_class_and_patch_tokens(img[None])[2].reshape(h, w, -1), dim-1) mask torch.einsum(cd,hwd-chw, text_feats, grid).argmax(0)这段做的事dinov3_vitl16_dinotxt_tet1280d20h24l()返回模型和分词器encode_text的输出一半对应 CLS token丢弃一半对应 patch 侧取后半并归一化即得文本特征get_class_and_patch_tokens的第三个返回值是骨干的 patch tokenreshape 成网格就是图像侧特征einsum算余弦相似度后逐点 argmax。mask形状是[h, w]即每个 16×16 块一个类别判断双线性插值到原图尺寸就是最终 mask如果全图只判出一类先检查归一化和 16 倍数拉伸。原理一句话版mask 是怎么来的整个机制只有一条dinotxt 用图文对比的方式训练视觉端给每个 16×16 patch 输出一个向量文本端给每个类别名输出一个向量两者落在同一特征空间余弦相似度就是这块像这个类别的分数分割 全图像素逐个 argmax。由此有两个直接推论不需要额外分类头mask 质量完全由骨干的密集特征决定。类别列表可以运行时任意增删不用动模型换场景只改那组字符串。⚡ 整图与滑窗推理怎么选两种模式对应两种分辨率场景整图predict_whole整张图一次过模型输出低分辨率得分图再插值放大。快、稳短边 512 以内的图选它。滑窗predict_slide按side×side的窗口、stride步长切片每块走一遍整图流程再按重叠加权拼回原图分辨率。细节更好短边 1024 以上的街景、遥感图选它。notebook 的参考参数是side384, stride19250% 重叠。显存紧张时优先调小side而不是压缩类别数。跑滑窗前先用短边 512 的 resize 把图缩小最终 mask 分辨率与输入图一致。调用本身是一行predict_slide(model, img, text_feats, side384, stride192)返回与输入同尺寸的逐像素得分argmax 即 mask。提示模板怎么写与组合为什么模板有用单句 a photo of a car 只覆盖一种说法类别表示容易被措辞带偏。notebook 用 80 条模板变体模糊照片、渲染图、特写、涂鸦、黑白照等分别编码后取平均类别表示更稳、覆盖面更全。组合方式默认全量使用notebook 报数字就是这个配置。时间紧时挑 8~10 条覆盖普通照片 / 低画质 / 渲染三类即可。类别名保持名词不要塞颜色、尺寸修饰词。平均之后必须重新归一化否则余弦相似度退化成模长比较。 mIoU 怎么看评估只看一个指标mIoU即各类别 IoU交并比的宏平均是语义分割的标准口径。notebook 用 torchmetrics 的MulticlassJaccardIndex(num_classes, averagemacro, ignore_index255)统计255 是忽略标签。看数三点总分定能不能用分类别看哪里不行。小目标类别如交通标志通常拖分总分高不代表安全。对比不同配置的数字前先固定 resize、side、stride否则不可比。关键文件索引dinov3/eval/text/dinotxt_model.py组装 visual_model 与 text_model 两个塔encode_text与 patch 提取入口。dinov3/eval/text/vision_tower.py视觉端定义骨干加两个附加块。dinov3/hub/dinotxt.py模型加载入口weights与backbone_weights参数在这里。能力边界街景、室内等常见场景零样本直接可用长尾领域与极小目标上训练过的模型仍更强。 下一步先复现 notebook 的 Cityscapes 数字再换自己的类别列表需要训练侧看dinov3/eval/text/train_dinotxt.py。【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 15:52:50

vectorbt向量化回测实战:从环境踩坑到千策并发

1. 为什么“一晚跑上千个策略”听起来很爽,但很多人装上vectorbt后连第一个回测都跑不起来?vectorbt 这个名字在量化圈子里最近两年确实火得有点突然。你刷技术社区、看知乎问答、甚至翻 GitHub Trending,总能看到它被冠以“向量化回测天花板…

2026/9/15 16:12:53

速腾Helios-16P与Lego-loam实战:从编译到点云地图全流程指南

速腾Helios-16P配Lego-loam这套组合,前阵子我又重新捡起来完整跑了一遍。说实话,现在网上讲Lego-loam原理的文章不少,讲速腾雷达驱动的也算多,但能把这两样东西放在一起、从零编译到真正把点云地图跑出来一条龙说清楚的&#xff0…

2026/9/15 16:12:53

CSV清洗正确顺序:先标准化再去重,留下可追溯报告

上个星期我又踩了一次数据清洗的老坑。手里一份三十多万行的渠道商名单CSV,从两个系统导出后直接拼接,然后我习惯性地先做了个整行去重。等统计完给业务方一看,对面直接说数不对——同一个门店,在A系统里联系电话是“138-0000-000…

2026/9/15 16:12:53

一条配置上手抖音批量下载:douyin-downloader 实用指南

一条配置上手抖音批量下载:douyin-downloader 实用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码