查看 Markdown

许可证

LibreYOLO 里装着三样各自单独许可的东西:它自己的代码、内置进某个模型家族的上游代码,以及预训练检查点。它们的许可证往往并不相同。

LibreYOLO 自己的代码

这个库采用 MIT 许可。它覆盖 Python API、CLI、训练器、验证器和导出器、数据集加载器, 以及 weights/ 下的转换脚本。你可以把它用在商业或闭源产品里,在你再分发的每一份副本里 保留版权行和许可证文本,义务到此为止。

这份许可到代码为止。 LICENSE 里只有 MIT 文本,而 NOTICE 开头关于权重的 说明说得很直白:

那些许可证各不相同,也并非都是宽松许可:部分已发布的权重是非商用的,或者受到其他 限制,本 MIT 许可证并不延伸到它们身上。选一个模型,就是选它的许可证。

上游代码,按家族

大多数家族是对已发表研究的移植,其中有几个直接内置了上游源码。内置进来的文件保留它原本的 版权头和原本的许可证。MIT 不会覆盖它,LibreYOLO 也不会给任何人的作品重新许可。出现得最多的 是 Apache-2.0 和 BSD-3-Clause 这两个。

Apache-2.0 覆盖 DETR 这条线和大部分 transformer 相关的工作:Meta AI(FAIR)的 DETR、 商汤(SenseTime)的 Deformable DETR、百度的 LW-DETR、Leilei Wang 和合作者的 OV-DEIM、 LibreYOLO 从 Hugging Face Transformers 移植的 SegFormer 实现、PaddlePaddle Authors 的 PP-OCRv5、苏黎世联邦理工学院(ETH Zurich)计算机视觉实验室的 SwinIR,以及字节跳动 Seed 的 Depth Anything 3。它还覆盖派生自 timm 的那些分类器,timm 出自 Ross Wightman 和 timm 贡献者之手,其中包括 ResNet、DeiT、EfficientNetV2、MobileNetV4 和 Swin, 它们的模块名与 timm 保持一致,因此 timm 的 ImageNet 张量可以原样加载。

BSD-3-Clause 覆盖所有派生自 torchvision 的部分:Faster R-CNN、Mask R-CNN、FCOS、 RetinaNet、SSD300、AlexNet、VGG、FCN 和 DeepLabv3。

MIT 覆盖的是更小的一组,包括旷视(Megvii)的 NAFNet、Xingyi Zhou 的 CenterNet,以及由 原作者 Kin-Yiu Wong 和 Hao-Tang Tsui 在 MultimediaTechLab 重新发布的 YOLOv7 和 YOLOv9。YOLOv9 的构建模块、YOLO9-E2E 和 YOLO9-P2 共用的检测 head 塔、PGI 分支以及 YOLOv9 的 mixup 混合都移植自这个 MIT 版本。YOLOv1 到 YOLOv4 这几个家族复现的是 Darknet 项目里的架构,作者是 Joseph Redmon,YOLOv4 那部分 则是 Alexey Bochkovskiy。Darknet 属于公有领域,所以它们完全不带任何义务。

有一个随包附带的子树用的不是开源许可证。DEIMv2 家族附带了来自 Meta Platforms 的 DINOv3 骨干代码,依据的是 DINOv3 License Agreement,一份自定义的非 OSI 许可证。再分发这段代码 就意味着要随附一份该协议的副本,而协议禁止将其用于受 ITAR 管制的活动、军事或战争用途、 核工业、间谍活动以及武器研发。这些条款只约束那一个子树。

仓库里有两个文件给出了完整的图景。 NOTICE 列出 每一个随包附带的第三方子树,以及它的路径、许可证文件和上游来源。 THIRD_PARTY_NOTICES.txt 列出 LibreYOLO 所派生的上游项目,并完整复制每一份许可证文本。

权重,按检查点

包里不附带任何预训练权重文件。已发布的检查点(checkpoint)放在 Hugging Face 上的 LibreYOLO 组织下,每个仓库都带着自己的 LICENSE 和署名信息,对应权重所出自的那个项目。

那个仓库才是这些条款的权威来源。不是这一页,不是模型页面,也不是源码树里的摘要。文件如何 命名、从哪里下载,见检查点与权重。

许可证在不同家族之间不一样,在同一个家族内部的不同文件之间也不一样。后者的两个例子:

  • YOLO9 COCO 检查点采用 MIT。LibreYOLO9P2s-visdrone.pt 在 VisDrone2019-DET 上训练,采用非商用的 CC BY-NC-SA 3.0。
  • RF-DETR 检测检查点采用 Apache-2.0。旋转框检查点仓库声明采用 CC BY 4.0。

跨家族来看,范围还要更宽,有几个已发布的检查点不能用在商业产品里:

  • SegFormer 是这两层之间分得最清楚的例子。它的实现是对 Hugging Face Transformers 代码的 Apache-2.0 移植。已发布的 ADE20K 检查点则是从英伟达在 NVIDIA Source Code License 下的 发布转换而来,那份许可证允许再分发,但把使用限制在非商业的研究或评估,并把这条限制一路 带进衍生作品。这些检查点不在 LibreYOLO 的宽松许可覆盖范围之内。
  • OV-DEIM 的检查点采用 CC BY-NC 4.0,这一点得到了上游作者的确认。每次预测还会加载 Apple 的 MobileCLIP-B(LT) 文本塔,它的许可证把使用限制在研究用途,比检查点自身的条款 更严。
  • SenseNova-Vision 的代码采用 Apache-2.0,权重采用 CC BY-NC 4.0。加载器会在每次自动下载 之前打印那条非商用提示。

SAM 3 使用 Meta 自定义 SAM License 下的受限上游快照。MiDaS s/l 和六个 Dome-DETR 检查点现在使用 LibreYOLO 镜像;MiDaS 保留 MIT,Dome-DETR 保留仅限学术研究的条款。其他家族可能需要本地上游产物。各模型页面分别说明获取方式和发布者声明的许可证。

有几个 torchvision 检查点自己没有许可证文件。LibreYOLO 按发布项目所用的许可证来对应它们, 在每张模型卡上说明这个依据是推定出来的、而不是逐个检查点授予的,并重复 torchvision 自己的 提醒:预训练模型的条款可能来自训练数据。

ConvNeXt V2 和 LeVJEPA 预训练权重采用 CC-BY-NC-4.0。Moondream 3 使用 BSL 1.1,Dome-DETR 镜像仅限学术研究,EdgeCrafter obj2coco 变体和 DetAny3D 的权重带有限制性条款。SANA-Sprint 自带的 Gemma 2 文本编码器仍适用 Google 的 Gemma 使用条款,Speridlabs Idol 从 LibreYOLO/LibreDINOv3vith16plus 镜像读取的 DINOv3 编码器仍适用 Meta 的 DINOv3 许可证。各模型页面在代码许可旁列出这些声明。原始 EdgeCrafter COCO 检查点保留记录的 Apache-2.0 授权。MiDaS 镜像保留发布者的 MIT 授权。

权重摘要以检查点发布者声明的许可证为准。训练数据集名称不能确定额外的检查点许可。

查清某一个模型的条款

模型页面的头部带着一行 Licenses,形式是 Code X, weights Y,它会向下链接到该页的 Licensing 小节。那一节会列出原始工作及其作者、上游许可证、上游来源、LibreYOLO 的代码 许可证、权重,以及对这些条款允许做什么的一份解读。同一页上的 Checkpoints 表格有一列 Weights license,每个已发布文件占一行,所以条款混杂的家族会逐个文件把它们摆出来。

这一切都由校验这个库时所用的同一份数据渲染出来,这也是本页不再用一张表格重复一遍的原因。 手敲的许可证矩阵在一个版本之内就会出错,而在这件事上出错代价很高。

在源码树里,与之对应的是:随包代码看 NOTICE,上游项目及其许可证文本看 THIRD_PARTY_NOTICES.txt,已发布检查点的按家族摘要看 weights/LICENSE_NOTICE.txt。

然后去查你正要下载的那个文件对应的 Hugging Face 仓库。它才是权威的,而且它可能变,文档 页面不一定跟着变。

商用

代码很少是问题所在。MIT、Apache-2.0 和 BSD-3-Clause 都允许商用和闭源使用。它们都要求你在 再分发的副本里保留各自的许可证文本和署名声明,Apache-2.0 还额外授予一份专利许可,而且没有 哪一个会对你自己的应用代码提出条件。

产品真正卡住的地方是检查点。不管外围的代码有多宽松,非商用的检查点仍然是非商用的,转换文件 也不会改变它适用的条款,weights/LICENSE_NOTICE.txt 里就是这么直说的。从一个受限检查点 构建出来的 ONNX 或 TensorRT 产物会继承那份限制。

如果一份许可证像 NVIDIA Source Code License 那样把限制带进衍生作品,那么微调也躲不掉。用 你有权使用的数据从头训练同一个架构则可以:代码是宽松许可的,所以你自己训练出来的模型就是 你的,预训练检查点的条款从来不会进到里面。SegFormer 页面针对它自己的权重把这一点讲得很 清楚;你打算发布哪个家族,就去读那一页的 Interpretation 行。

许可证的问题要在挑模型的时候定下来,而不是在发布的时候,并且要读你实际下载的那个文件上的 条款,因为一个家族里有一个宽松许可的检查点,旁边就可能摆着一个受限的。

本页描述的是其中涉及的许可证。它是一份描述,不是法律意见,也不构成任何担保。如果这个答案在 商业上很重要,请自己去读那些许可证,并咨询你自己的法律顾问。

已针对 LibreYOLO v1.6.0 验证。