溯源台账(Provenance ledger)¶
状态:人工维护的模块/文件级台账,覆盖仓库内 vendored、ported 与 architecture-reference 代码。它不是法律意见;商业发布前需法务复核。 完整非 Apache 许可文本见仓库根
THIRD_PARTY_LICENSES.md;许可边界汇总见NOTICE;权重许可见模型库。
1. 代码 lineage¶
| 组件 / 文件 | 上游 | 许可 | 方式 | 归属位置 |
|---|---|---|---|---|
tasks/shared/flat_cosine.py |
Intellindust DEIM | Apache-2.0 | 重实现(step-based 接口) | 文件头、NOTICE |
tasks/detection/shared/dfine_decoder.py、dfine_official_decoder.py、dfine_criterion.py、dfine_utils.py |
Peterande/D-FINE | Apache-2.0 | ported | NOTICE、LICENSE |
tasks/detection/shared/rtdetrv2_decoder.py、hybrid_encoder.py、rtdetrv2_criterion.py、matcher.py、denoising.py、tasks/shared/ema.py |
lyuwenyu/RT-DETR | Apache-2.0 | ported | NOTICE、LICENSE |
tasks/detection/shared/_msda_src/、msda.py、ms_deformable_attention.py |
Detectron2 / Deformable DETR lineage | Apache-2.0 | vendored | 文件头、NOTICE、LICENSE |
tasks/detection/shared/gtr/*、tasks/detection/shared/gtr/csrc/* |
Intellindust-AI-Lab/GTR | MIT | ported / vendored | 文件头、NOTICE、THIRD_PARTY_LICENSES |
tasks/detection/shared/gtr/gla_onnx.py(GLA 纯 ONNX 降级) |
Intellindust-AI-Lab/GTR tensorrt_plugin 导出补丁;chunk-GLA 递推遵循 fla-org/flash-linear-attention |
MIT | ported(导出期 swap,eager 不变) | 文件头、NOTICE |
tasks/detection/shared/matcher.py 的 LSAP 路径 |
torch-linear-assignment | Apache-2.0 | 可选依赖(未 vendored) | NOTICE、pyproject extra |
tasks/detection/picodet/ |
PaddleDetection PP-PicoDet | Apache-2.0 | 架构参考;AutoVision 实现 | README 致谢、NOTICE |
tracking/byte_track.py |
ByteTrack(ECCV 2022) | MIT(上游) | 算法参考;AutoVision 实现 | 文件头、README 致谢 |
tasks/shared/sahi.py、tasks/shared/tiling_utils.py |
SAHI | MIT(上游) | 算法参考;AutoVision 实现 | README 致谢 |
visualize/effects.py、visualize/skeletons.py、geometry/boxes.py、geometry/masks.py、inference/video.py |
Roboflow supervision 0.30 | MIT | API/算法参考;AutoVision 实现(Pillow/NumPy 重写,不引入运行时依赖) | 文件头、NOTICE、THIRD_PARTY_LICENSES |
encoders/rfdetr/、tasks/detection/rfdetr/ |
Roboflow RF-DETR / HF transformers | Apache-2.0 | wrapper;权重按需下载 | 模型卡、模型库 |
| export/artifact_metadata.py、export/timing.py、export/export_onnx.py(TRT 身份旁路、产物最小尺寸护栏)、registry/deployment_gates.py(MetricFloorGate) | Ultralytics 8.4.177 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D1/D5/D14b) | 设计提案 §4.1/§4.5/§4.14、NOTICE |
| tracking/gmc.py、tracking/bot_sort.py、tracking/byte_track.py(钩子化重构)、tracking/analytics.py(chord 穿越补偿)、inference/stream.py(frame/补偿接线) | Ultralytics 8.4.177(GMC/钩子/退役通知);BoT-SORT(arXiv 2206.14651)阶段结构 | AGPL-3.0 / 论文 | 架构参考;AutoVision 净室实现(D2/D6/D7/D13a) | 设计提案 §4.2/§4.6/§4.7/§4.13、NOTICE |
| augment/detection/box_candidates.py(含 mosaic 接线与 args 阈值) | Ultralytics 8.4.177 box_candidates 语义 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D3) | 设计提案 §4.3、NOTICE |
| engine/autobatch.py | Ultralytics 8.4.177 autobatch 策略(线性拟合 + OOM 回退) | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D4;step 闭包按任务面注入) | 设计提案 §4.4、NOTICE |
| data/scan_cache.py、data/image_cache.py、data/downloads.py(断点续传/重试/磁盘预检)、data/split_large_images.py(训练侧切片 + CLI tile-dataset) | Ultralytics 8.4.177 缓存/续传/split_dota 设计 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D8/D9/D10/D11;sha256 校验为 AutoVision 既有更强机制) | 设计提案 §4.8–§4.11、NOTICE |
| serving/app.py(lifespan 全管线预热)、docs/framework_design.md §3.1(引擎/流状态生命周期约定) | Ultralytics 8.4.177 warmup/预测器复用语义 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D14a/D14d) | 设计提案 §4.14、NOTICE |
| cli/model_handle.py(_ENGINE_SETUP_KEYS 引擎缓存二分)、engine/amp_check.py(三态 AMP 事前探针)、runtime/autodevice.py(-1 空闲选卡 + CVD 翻译)、engine/engine.py(resume 白名单 check_resume_fit_args / 早停状态持久化 / possible_stop)、geometry/polygons.py(is_valid_polygon / polygon_from_bbox)、data/coco_instance_segmentation_dataset.py(多边形白名单兜底 + compressed-RLE 修复) | Ultralytics 8.4.177 PREDICTOR_SETUP_KEYS/check_amp/autodevice/check_resume/多边形白名单设计 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D15/D16/D17/D18/D19) | 设计提案 §4.15–§4.19、NOTICE |
| engine/engine.py(save_period 单次序列化多路写 / fp16 克隆钳制 / OOM 降批 / 回调注册接线)、runtime/checkpoint.py(serialize/save_serialized)、engine/callbacks.py、runtime/model_info.py(thop 惰性)、runtime/fuse.py(Sequential Conv+BN 折叠 + parity 门禁)、augment/core.py(四目标钩子协议)、metrics/containers.py(惰性 stats + 空/空约定)、data/quality.py(存储体检)、metrics/map_evaluator.py(maxDets 自动抬升)、cli/common_helpers.py/cli/train_helpers.py(worker 播种) | Ultralytics 8.4.177 save_model/BytesIO、OOM 降批、回调清单、model_info、fuse、BaseTransform、DetMetrics、check_file_speeds、max_det 抬升设计 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D20/D21/D22/D23/D24/D27/D29;OOM 降批限定单进程、回调隔离严于上游、fuse 只走 Sequential 模式) | 设计提案 §4.20–§4.29、NOTICE |
| engine/engine.py(NaN 回滚自愈 / 条件性显存清理 / EMA 修复接线)、tasks/shared/ema.py(repair_from)、runtime/checkpoint.py(原子写重试)、inference/video.py(fps 消毒 / 活流重连)、inference/stream.py(参数透传)、tracking/byte_track.py / tracking/bot_sort.py(NSA 观测噪声缩放,opt-in) | Ultralytics 8.4.177 _handle_nan_recovery/_clear_memory/EMA 中毒修复/torch_save 重试/LoadStreams 重连/NSA Kalman 设计 | AGPL-3.0(上游) | 架构参考;AutoVision 净室实现(D32/D33/D34/D35/D36;DDP 判定屏障/恢复闭包与上游 epoch 粒度不同、首 epoch 有意抛错而非继续、重试/阈值/重连参数语义按本仓库约定重设计) | 设计提案 §4.32–§4.36、NOTICE |
净室声明(Ultralytics AGPL 架构参考,2026-11-03):上述 D 系列实现依据
docs/design_ultralytics_adoption.md(设计提案;已自文档树移除,全文保留于
git 历史——提交 63fe135)与上游论文级语义(BoT-SORT、ByteTrack、
Lucas–Kanade/ECC 等公开算法)在本仓库接口风格内重写;实现者未对照上游源码
逐行翻译,未复制上游注释、docstring、常量表或测试数据。D15–D19 落地时按
同一纪律执行:探针不下载外部权重(改用调用方自有模型)、选卡算法以本仓库
device 语法重设计(-1 占位符 + 降级填满而非删占位符)、resume 白名单语义
反转为"当前调用参数治理 + 漂移告警"。D20–D29 同一纪律:OOM 降批按集合
通信安全收敛为单进程、回调隔离逐 handler(严于上游的裸循环)、fuse 数学
重写并加本仓库 parity 门禁、bf16/fp16 探针 dtype 错配备忘在案。NOTICE
的 AGPL 段落(2026-11-03 二次改写,协议式三条款)保留 "must never have
source or weights copied" 红线原文。商业分发前需按台账头部要求法务复核
本节。
2. 已处置:DEIMv2(STA 删除)¶
2026-10-17 的许可审计发现:ViTDetectionBackbone 曾包含
SpatialPriorModule,与 DEIMv2 上游 SpatialPriorModulev2 在图层顺序、
通道宽度与 state-dict 键上逐项对应。上游 DEIMv2 License 只允许非商用使用、
修改与再分发,商用需要单独许可;这会使组合发行物不能再按 Apache-2.0 商用。
处置结果(用户决策:删 STA,保留 DINOv3 ViT,保留 ConvNeXt):
SpatialPriorModule已从代码库删除,DETRVariantSpec不再携带use_sta/conv_inplane字段,ViTDetectionBackbone对 DINOv2 与 DINOv3 ViT 统一使用 no-STA adapter;- DINOv3 ViT 变体(
dinov3-vits16/vitb16/vitl16/vitt16/vitt16plus及别名)保留,架构按 no-STA 重新定义; - DINOv3 ConvNeXt 与 timm / GTR 家族不受影响;
- 代码库不再包含 DEIMv2 代码,
THIRD_PARTY_LICENSES.md不再附 DEIMv2 License 全文,仅保留 GTR MIT 全文;DEIM 的 flat-cosine 参考仍为 Apache-2.0; - 兼容性:任何含
backbone.sta.*的旧 ViT 检查点(基线.pt与用户自持 3 个 ViT 资产)不能忠实加载,加载器会显式报错,需重新训练/导出;用户自持 的 4 个 ConvNeXt 资产不受影响。
3. 权重与数据¶
- GTR 权重:MIT;再分发时附 MIT 通知(见
THIRD_PARTY_LICENSES.md)。 - RF-DETR 权重:Apache-2.0;从上游下载,不由本仓库重分发。
- DINOv2 权重:CC-BY-NC 4.0(非商用);默认不下载,需显式自证。
- DINOv3 权重 / 基于 DINOv3 的教师:DINOv3 License;商用需遵守 “Built with DINOv3”等义务;默认不下载。
- DEIMv2 转换权重(如
DEIMv2_*):上游 DEIMv2 权重受 DEIMv2 License 约束;HF 转换卡的许可需逐一复核,不能仅凭转换仓库声明推定可商用。 AutoVision 代码不再依赖 DEIMv2,但外部权重条款不因此改变。 - 用户自持 7 个检测器:
DINOv3-License+NOASSERTION,禁再分发/商用。 其中dinov3-vitt16/dinov3-vitt16plus/dinov3-vits16为 STA-era, 当前加载器拒绝;dinov3-convnext-*4 个仍可加载。 - 数据集(COCO / VOC / Cityscapes / DOTA / NYU / Objects365 / ImageNet): 不随仓库分发;使用与再分发遵循各自条款。
4. 待办与复核¶
| 项 | 状态 | 处置 |
|---|---|---|
DEIMv2 SpatialPriorModule |
DONE(已删除) | 删除 STA;ViT 改用 no-STA adapter;旧检查点显式拒绝 |
| DINOv3 ViT no-STA 重新训练/导出 | OPEN | 旧 STA-era 基线/用户自持 ViT 检查点需重训后才能使用 |
| DEIMv2 转换权重许可 | OPEN | 外部权重;逐个核对 HF 模型卡与上游条款 |
| 上游 Apache NOTICE 文件 | OPEN | 法务复核 D-FINE / RT-DETR / DEIM / Detectron2 是否有 NOTICE 需随分发保留 |
| RF-DETR / PicoDet / ByteTrack / SAHI 致谢 | DONE | README 致谢 + NOTICE |
| GTR MIT 全文 | DONE | THIRD_PARTY_LICENSES.md |
| 缺失的旧设计/台账引用 | DONE | NOTICE 改为指向本文件,不再引用已删除的 docs/design/* |
5. 维护规则¶
新增 vendored / ported / architecture-reference 代码时:
- 在源码文件头写明上游、许可、修改点;
- 在本台账新增一行(组件、上游、许可、方式、归属位置);
- 非 Apache/MIT 条款在
THIRD_PARTY_LICENSES.md附全文; - 更新
NOTICE与模型卡; - 运行
python scripts/check_provenance.py、scripts/check_docs_links.py、mkdocs build --strict。
本台账基于当前源码与上游公开许可整理;如与上游最新条款冲突,以上游为准, 并立即停止商业发布。