lightly-train
一条命令搞定视觉模型全流程训练:预训练、微调、蒸馏,覆盖 6 大视觉任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一条命令搞定视觉模型全流程训练:预训练、微调、蒸馏,覆盖 6 大视觉任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2025 年,一家聚焦工业质检的 AI 创业公司在推进视觉模型自研时,遇到了一个所有人都绕不开的难题:数据标注成本太高,而从头训练模型的门槛更是让团队望而却步。团队里有经验丰富的 PyTorch 开发者,也有刚从学校毕业、对前沿模型充满好奇的年轻工程师——他们需要一个统一的框架,既能支持自监督预训练压缩无标注数据的价值,又能在少量标注数据上进行高效微调,还要能完成模型蒸馏以适配边缘部署。
这个场景并非孤例。LightlyTrain 正是为解决这一系列痛点而生的开源项目:由总部位于瑞士的 Lightly AG 主导开发,提供从自监督预训练(DINOv2/DINOv3)到有监督微调,再到知识蒸馏的全链路训练能力,覆盖图像分类、目标检测、实例分割、全景分割、语义分割、深度估计等多种视觉任务。团队只需写几行 YAML 配置或一条 CLI 命令,即可完成过去需要数千行代码才能实现的完整训练流程。

图1:预训练阶段支持多种自监督方法(DINO、DINOv2、DINOv3、SimCLR、DenseCL 等),在无标注数据上学习通用视觉表征
Lightly AG 是一家专注于计算机视觉数据处理和自监督学习的技术公司,其核心产品线包括 lightly(数据选择平台)和 lightly-train(模型训练框架)。公司自 2020 年起持续活跃于开源社区,GitHub 主账号下有多个相关仓库协同工作,其中 lightly 仓库 stars 超过 1.1 万,而本次分析的 lightly-train 专注于端到端训练流程,定位更偏向工业级生产使用。
LightlyTrain 项目于 2024 年正式公开,采用 AGPL-3.0 开源许可,支持 Python 3.8~3.13,核心依赖 PyTorch 2.1+、Lightning 2.1+、Transformers 4.46+ 等主流深度学习库。项目维护活跃:Star 1573、Fork 80、Open Issues 58,持续有社区贡献者参与。
传统监督学习依赖大量人工标注数据,标注成本高且效率低下。LightlyTrain 内置 DINO(来自 Meta)、DINOv2、DINOv3、SimCLR、DenseCL、DetCon 等多种自监督学习方法,核心思想是通过数据增强(裁剪、颜色抖动、灰度转换等)构造对比任务,让模型在无需标签的情况下自行学习图像的语义特征。
以 DINOv2 为例,框架实现了完整的训练管线:
训练得到的模型在 ImageNet 等基准上直接超越有监督基线,产出的 embedding 可直接用于下游任务或进一步微调。

图2:知识蒸馏阶段将大模型能力迁移到小模型,支持 EoMT(Everything-in-One Multi-Task)架构,实现检测+分割等多任务联合蒸馏
微调阶段支持 6 大视觉任务,框架通过统一的任务配置接口(TaskDataArgs)管理不同任务的输入格式和标签:
| 任务类型 | 标签格式 | 代表模型 |
|---|---|---|
| 图像分类 | ImageNet folder / COCO | ViT、ResNet、TIMM |
| 目标检测 | YOLO / COCO | YOLO、RT-DETR |
| 实例分割 | COCO / YOLO | Mask R-CNN、EoMT |
| 全景分割 | COCO Panoptic | EoMT |
| 语义分割 | Mask / TIFF | U-Net、DINOv2-Linear |
| 深度估计 | Diode / MegaDepth | DINOv2-DAV3 |
每种任务都实现了对应的数据加载器(Dataset)、转换管线(Transform)和评估指标(Metrics),例如目标检测数据集支持 COCO JSON 和 YOLO TXT 两种格式自动识别,全景分割数据集支持 COCO Panoptic 格式的 png+json 双文件解析。
蒸馏是让大模型"瘦身"的关键步骤。LightlyTrain 实现了两代蒸馏架构:
蒸馏 Loss 支持 KL 散度、特征对齐等多种策略,结合 Mosaic、CopyBlending 等数据增强技术,进一步提升学生模型泛化能力。

图3:框架支持的完整任务矩阵,覆盖从预训练到蒸馏的全生命周期
src/lightly_train/
├── _methods/ # 自监督学习方法(DINO、SimCLR、Distillation...)
├── _models/ # 视觉骨干网络(ViT、TIMM、YOLO、RT-DETR...)
│ ├── timm/ # TIMM 库集成
│ ├── ultralytics/ # Ultralytics (YOLO) 集成
│ ├── torchvision/ # PyTorch 官方模型
│ ├── dinov2_vit/ # DINOv2 官方实现
│ └── dinov3/ # DINOv3 官方实现
├── _task_models/ # 任务头(Task Head)
│ ├── eomt/ # 多任务蒸馏头
│ ├── dinov2_eomt_* # DINOv2+各任务的组合
│ ├── dinov3_eomt_* # DINOv3+各任务的组合
│ └── object_detection_components/ # 检测组件
├── _transforms/ # 数据增强管线
│ ├── view_transform.py # 自监督预训练增强
│ ├── mosaic.py # 马赛克增强
│ ├── mixup.py # MixUp 增强
│ └── *_transform.py # 各任务专用转换
├── _data/ # 数据集加载器
│ ├── coco_object_detection_dataset.py
│ ├── yolo_object_detection_dataset.py
│ ├── mask_panoptic_segmentation_dataset.py
│ └── *_helpers.py
├── _commands/ # CLI 命令实现
│ ├── train_task.py # 核心训练循环 (~92KB,~2500行)
│ ├── extract_video_frames.py
│ └── predict_task.py
├── _callbacks/ # Lightning Callbacks(Checkpoint、MLflow、TQDM)
├── _loggers/ # 实验记录(MLflow、TensorBoard、W&B、JSONL)
└── _cli.py # 命令行入口 (~23KB)
训练入口 train_task.py 实现了统一的 train_image_classification、train_object_detection 等函数,通过 Pydantic 模型(PydanticConfig)定义所有训练参数,支持 YAML/JSON 配置文件读取与环境变量覆盖。核心流程:
validate.py):使用 Pydantic field_validator 对路径、参数合法性进行运行时检查TaskDatasetTrainModel 组合骨干网络 + 任务头,支持 torch.compile 加速lightning_fabric.Fabric 实现单卡/多卡分布式训练,支持 FSDP、DDP 策略核心依赖明确分层:
项目提供两种安装方式:
Docker 方式(推荐生产使用):
# 拉取官方镜像(PyTorch 2.5.1 + CUDA 11.8)
docker pull lightly/train:latest
# 运行训练
docker run --gpus all -v /data:/data lightly/train:latest \
lightly-train train --config /data/config.yaml
pip/uv 原生安装:
pip install lightly_train
# 或
uv pip install lightly_train
CLI 驱动方式是主要使用模式,命令结构清晰:
lightly-train train --config config.yaml
lightly-train embed --input-dir /path/to/images
lightly-train export --checkpoint /path/to/checkpoint.ckpt
YAML 配置覆盖训练的所有维度:
# config.yaml
model: dinov2_vitb14
method: distillationv3
data:
task: object_detection
train: /data/train/
val: /data/val/
num_classes: 80
batch_size: 32
max_epochs: 100
accelerator: gpu
配置通过 omegaconf.OmegaConf 加载,支持命令行参数覆盖(如 --model vit_base),无需修改 YAML 文件即可切换实验配置。
GPU 强制需求:框架设计面向深度学习训练,最小需要 8GB 显存的 NVIDIA GPU,CPU 训练在现实中不可行。
无 Web UI:训练完全通过命令行驱动,对于习惯图形界面的用户存在一定上手门槛。文档质量较高但缺乏交互式 Demo。
依赖复杂性:核心依赖超过 30 个(torch、torchvision、lightly、transformers、ultralytics 等),版本兼容性偶有问题。文档建议的 Python 3.13 尚未支持,建议使用 3.9-3.12。
AGPL-3.0 许可:若在商业产品中使用本框架,需注意 AGPL 的传染性——修改源码后必须开源。
多任务联合蒸馏(EoMT) 虽有创新性,但目前仍处于快速发展阶段,API 变更可能较为频繁。
LightlyTrain 代表了一个明确的趋势:训练框架从单任务走向全生命周期管理。过去开发者需要在不同工具之间切换——用 DINO 官方代码做预训练,用 MMDetection 跑检测,用蒸馏工具做部署——LightlyTrain 将这些割裂的环节统一到一个框架中,并通过 EoMT 蒸馏架构实现了真正意义上的"一次训练,多任务输出"。
在 2024-2025 年,随着 DINOv3(Meta)和 Vision Transformer 的持续火热,这类工具的价值日益凸显。项目的 Star 增长速度(1573 star)虽不及顶级开源项目,但其技术深度和对工业场景的专注,使其在视觉 AI 训练工具链中占据了独特生态位。