# 复现性审查记录：ifzhang/FairMOT

> 本文档是 `gitlink-research-compliance` skill 在真实科研仓库上的执行记录。
> 仓库：`ifzhang/FairMOT`（"FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking"，多目标行人跟踪，论文复现仓库）。
> 执行方式：纯远程只读，所有数据通过 `gitlink-cli` 获取，未 clone 本地。

---

## 执行的命令序列

```bash
# ① 仓库元信息
gitlink-cli repo +info --owner ifzhang --repo FairMOT --format json
#   → name=多目标行人跟踪, default_branch=master, size=63.9MB, mirror=true, mirror_url=https://mirror.trustie.net/root/FairMOT.git

# ② LICENSE（file +get 取 sha → file +blob 取 base64 → 解码）
gitlink-cli file +get --owner ifzhang --repo FairMOT --path LICENSE --format json   # sha=7d2291d9...
gitlink-cli file +blob --owner ifzhang --repo FairMOT --sha 7d2291d9de961f462eeb74fa70bfaadd3d14fbe2 --format json
#   → 头部: "MIT License\n\nCopyright (c) 2020 YifuZhang"

# ③ 数据 / cite / 参考指标（file +readme 直接取明文）
gitlink-cli file +readme --owner ifzhang --repo FairMOT --format json

# 原生数据集
gitlink-cli dataset +list --owner ifzhang --repo FairMOT --format json   # 空

# ④ 环境文件
gitlink-cli file +get --owner ifzhang --repo FairMOT --path requirements.txt --format json   # sha=2f99f032...
gitlink-cli file +blob --owner ifzhang --repo FairMOT --sha 2f99f03278a2b8d404ee11345affc2e6a6b14a60 --format json
#   → base64 解码: yacs / opencv-python / cython / cython-bbox / scipy / numba / progress / motmetrics / matplotlib / lap / openpyxl / Pillow / tensorboardX

# ⑤ 目录树 + 训练脚本种子（file +tree 递归 + file +blob 读内容）
gitlink-cli file +tree --owner ifzhang --repo FairMOT --sha master --format json
#   → src (dir, sha=60cffcc3...) / experiments / build / assets / videos + LICENSE/README.md/requirements.txt/.gitignore
gitlink-cli file +tree --owner ifzhang --repo FairMOT --sha 60cffcc340d22ccda3ada72f00d4f37c6793ae61 --format json
#   → src/: demo.py / track.py / detect.py / test_det.py / test_emb.py / gen_labels_*.py / lib(dir)
#   → src/lib/trains/: mot.py / base_trainer.py / train_factory.py
gitlink-cli release +list --owner ifzhang --repo FairMOT --format json   # total_count=0
```

---

## 🔬 科研项目复现性审查记录 — ifzhang/FairMOT

```
═══════════════════════════════════════════════════
审查日期: 2026-06-29   主语言: Python   License: MIT
审查方式: 纯远程只读（gitlink-cli file/dataset/release/repo）
说明: 本报告呈现复现性相关证据，由读者结合自身环境自行判断；
      末尾参考评分仅作辅助，不构成绝对结论。
═══════════════════════════════════════════════════

───────────────────────────────────────────────────
维度① 合规层（委托 gitlink-compliance + 数据集引用补充）
───────────────────────────────────────────────────
[证据]
  • LICENSE 文件: 存在，头部原文 "MIT License / Copyright (c) 2020 YifuZhang"
  • 合规层详情: （MIT 宽松许可证，依赖合规可委托 gitlink-compliance 进一步核验）
  • 数据集 cite 要求: README 未出现 cite/BibTeX/@inproceedings 关键词
    （注: 论文复现仓库通常应在 README 标注引用方式，此处缺失）
[判定] ✅ 许可证有效（MIT，开源友好）；⚠️ 缺少数据集/论文引用标注

───────────────────────────────────────────────────
维度② 数据可用性
───────────────────────────────────────────────────
[证据]
  • GitLink 原生数据集: dataset +list → 该仓库未托管 dataset（空）
  • 顶层目录: assets / build / experiments / src / videos + 文档，无 data/ 目录（数据未随仓）
  • README 数据说明（原文片段）:
      L56 "## Data preparation"
      L58 "* **CrowdHuman**"
      L59 "The CrowdHuman dataset can be downloaded from their official webpage (https://www.crowdhuman...)"
      L77 "We use the same training data as JDE ... * **2DMOT15 and MOT20**"
      L79 "[2DMOT15](https://motchallenge.net/data/2D_MOT_2015/) and [MOT20]..."
[发现]
  ✅ 优点: README 明确给出三类训练数据的官方下载来源（CrowdHuman / 2DMOT15 / MOT20），
           且给出 expected 目录结构（crowdhuman/images/train.../labels_with_ids），便于组织数据
  ❌ 缺口: 数据本身未随仓库托管，完全依赖外部站点（motchallenge.net / crowdhuman.org），
           若外部链接失效则无法复现；README 无 cite 要求
[判定] ⚠️ 数据获取路径清晰，但依赖外部链接，无离线保底

───────────────────────────────────────────────────
维度③ 环境可复现
───────────────────────────────────────────────────
[证据]
  • 环境文件 1 — requirements.txt（实测内容）:
      yacs / opencv-python / cython / cython-bbox / scipy / numba / progress /
      motmetrics / matplotlib / lap / openpyxl / Pillow / tensorboardX
      → 版本锁定: ❌ 全部仅包名，无任何 ==/>=/~=
  • 环境文件 2 — README 的 conda 段（原文片段）:
      L44 "conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch"
      → 仅 PyTorch 在 conda 命令里精确 pin，其余依赖未 pin
  • 其他环境文件: ❌ 无 environment.yml / Dockerfile / Makefile
  • 额外编译依赖: README 要求手动编译 DCNv2（"git clone DCNv2 → ./make.sh"），版本未指定
  • 随机种子:
      src/lib/trains/mot.py（主训练器，95 行）→ 未发现 seed/manual_seed
      src/track.py（推理，272 行）→ 未发现 seed/manual_seed
[发现]
  ✅ 优点: 给出 conda 基础环境与 PyTorch 精确版本
  ⚠️ 注意: requirements.txt 未 pin 版本，不同年份 pip install 会装到不兼容版本；
           DCNv2 需手动编译且版本未锁定，是复现的主要踩坑点
  ❌ 缺口: 训练与推理均未设置随机种子，结果不可严格复现（每次训练权重不同）
[判定] ⚠️ 部分可复现（基础环境有说明，但版本未锁+无种子，复现结果一致性无保障）

───────────────────────────────────────────────────
维度④ 结果可验证
───────────────────────────────────────────────────
[证据]
  • 测试/评测脚本: src/ 下有 test_det.py / test_emb.py / track.py / demo.py；
      experiments/ 存在（疑似存放评测配置）
  • 预训练权重: release +list → total_count=0，无任何 release
  • 参考指标（README 原文片段）:
      L23 "### Results on MOT challenge test set"
      L28 "|MOT17 | 73.7 | 72.3 | 3303 | 43.2% | 17.3% | 25.9 |"  (MOTA/IDF1/IDS/MT/ML/FPS)
      L16 "(2020.09.10) A new version of FairMOT is released! (73.7 MOTA on MOT17)"
[发现]
  ✅ 优点: 有评测脚本 + 明确参考指标（MOT17 MOTA 73.7 / IDF1 72.3），可验证产出是否达标；
           有 demo.py 可快速可视化验证
  ❌ 缺口: 无预训练权重 release，无法一键复现论文结果（必须自行完成完整训练，
           耗时数天+需多 GPU）；只能验证"训练流程能跑通"，无法快速验证"最终精度"
[判定] ⚠️ 训练流程可验证，但最终结果复现成本高（缺权重）

═══════════════════════════════════════════════════
参考性评分（辅助总结，请以上方证据为准自行判断）
  ① 合规层      16/20   （MIT 有效；缺 cite 标注 -4）
  ② 数据可用性  17/25   （下载路径清晰 +10；未随仓+无cite -8）
  ③ 环境可复现  11/25   （有conda说明 +5；requirements未pin -7；无种子 -7）
  ④ 结果可验证  17/30   （有评测+参考指标 +12；无预训练权重 -13）
  参考总分: 61/100  → 参考评级 C（部分可复现）
  (仅供索引，不代表绝对可复现性)
═══════════════════════════════════════════════════
```

---

## 审查结论（供读者参考，非定论）

基于上述证据，`ifzhang/FairMOT` 属于**"流程基本可复现，但结果难严格复现"**的科研仓库：

| 维度 | 可复现性 | 瓶颈 |
|---|---|---|
| 能否跑起来 | 基本能（有 conda 说明）| requirements 未 pin + DCNv2 编译是主要坑 |
| 能否复现论文精度 | 较难 | 无预训练权重 + 无随机种子，需自行训练且结果有随机性 |
| 数据可获取 | 能（当前）| 依赖 motchallenge.net 等外部站点，存在链接失效风险 |

**给复现者的优先建议**（按性价比）：
1. 先用 `pip freeze` 锁定一个可运行版本集，提交 `requirements.lock.txt`；
2. 训练脚本补 `torch.manual_seed()` + numpy/torch.backends 种子；
3. 在 GitLink release 上传预训练权重，支持一键推理验证。

---

## 复现说明

本审查记录可通过 `gitlink-research-compliance` skill 在任意 Claude Code 会话中对 `ifzhang/FairMOT` 复现。skill 触发方式：对 Agent 说"审查 ifzhang/FairMOT 的科研复现性"，Agent 会按 SKILL.md 的 6 步工作流执行。所有命令均为纯远程只读，无需 clone。
