Transfer-Learning-Library
Transfer-Learning-Library 是一个基于纯 PyTorch 构建的开源迁移学习库,专为领域自适应、任务自适应及领域泛化等场景设计。它旨在解决机器学习模型在新数据分布或新任务上表现不佳的难题,帮助开发者高效地将已有知识迁移到新场景中,从而减少对大量标注数据的依赖。
该工具非常适合人工智能研究人员和算法工程师使用。其 API 设计风格与 torchvision 高度一致,代码简洁且文档完善,用户既能直接调用现有的经典算法,也能轻松在此基础上开发新的研究方法。库内集成了 DANN、DAN、JAN 等多种主流领域自适应算法,并全面支持图像分类、目标检测、语义分割等多种视觉任务。此外,它还涵盖了半监督学习和模型选择等实用功能,提供了丰富的示例代码以覆盖不同的学习设置。无论是希望快速复现论文成果的研究者,还是需要在实际项目中落地迁移学习技术的开发者,都能从中获得极大的便利。
使用场景
某自动驾驶初创公司的算法团队正试图将模型从白天晴朗的仿真数据(源域)迁移到夜间雨天的真实路测数据(目标域),以解决恶劣天气下目标检测准确率骤降的问题。
没有 Transfer-Learning-Library 时
- 复现成本极高:团队需手动从零复现 DANN、CDAN 等经典域适应算法,耗费数周时间调试对抗性训练的不稳定性,且代码风格不统一,难以维护。
- 实验对比困难:缺乏统一的评估框架,每次尝试新策略(如切换为 JAN 或 ADDA)都需要重写大量数据加载和模型对齐代码,导致无法快速横向对比不同方法的效果。
- 任务适配局限:现有的自研脚本仅支持图像分类,面对物体检测任务时,特征对齐逻辑完全失效,不得不重新推导公式并修改底层反向传播逻辑。
- 调参盲目低效:缺少内置的模型选择与正则化工具,工程师只能凭经验盲目调整超参数,导致模型在目标域上过拟合或欠拟合,迭代周期漫长。
使用 Transfer-Learning-Library 后
- 即插即用算法:直接调用
tllib.alignment.d_adapt模块中预置的域适应检测算法,几行代码即可集成 DANN 或 CDAN,将算法验证周期从数周缩短至几天。 - 标准化实验流程:利用其类 torchvision 的统一 API 架构,轻松切换 DAN、JAN 等不同方法进行消融实验,快速锁定最适合雨天场景的迁移策略。
- 多任务原生支持:直接使用库中针对物体检测优化的专用接口,无需修改底层逻辑即可实现仿真到实物的特征对齐,显著提升了车辆与行人的检出率。
- 智能模型优选:借助
tllib.ranking模块自动评估预训练模型在目标域的迁移潜力,科学指导超参数调整,避免了无效试错,大幅提升了最终模型的泛化性能。
Transfer-Learning-Library 通过提供标准化、高性能的迁移学习组件,让团队从繁琐的算法复现中解放出来,专注于解决真实场景中的分布偏移难题。
运行环境要求
- 未说明
未说明(基于 PyTorch,通常建议配备 NVIDIA GPU 以加速深度学习训练)
未说明

快速开始
迁移学习库
更新 (2024-03-15)
我们在此上传了文档的离线版本 这里。您可以下载并解压以查看文档。
注意 (2023-08-09)
关于数据集链接失效的说明,请参阅:DATASETS.md。
简介
TLlib 是一个开源且文档完善的迁移学习库。它基于纯 PyTorch 构建,具有高性能和友好的 API。我们的代码风格符合 Python 习惯,设计与 torchvision 保持一致。您可以轻松开发新算法,也可以直接应用现有的算法。
我们的 API 按方法划分,包括:
- 域对齐方法 (tllib.aligment)
- 域转换方法 (tllib.translation)
- 自训练方法 (tllib.self_training)
- 正则化方法 (tllib.regularization)
- 数据重加权/重采样方法 (tllib.reweight)
- 模型排序/选择方法 (tllib.ranking)
- 基于归一化的方法 (tllib.normalization)
我们在 examples 目录中提供了许多示例代码,这些代码按学习设置分类。目前支持的学习设置包括:
- DA(领域适应)
- TA(任务适应,也称为微调)
- OOD(分布外泛化,也称为 DG / 领域泛化)
- SSL(半监督学习)
- 模型选择
我们支持的任务包括:分类、回归、目标检测、分割、关键点检测等。
更新
2022.9
我们现在支持通过 pip 安装 TLlib,目前仍处于实验阶段。
pip install -i https://test.pypi.org/simple/ tllib==0.4
2022.8
我们发布了 TLlib 的 v0.4 版本。之前的版本可以在 这里 找到。在 v0.4 中,我们新增了以下方法的实现:
此外,我们在另一个仓库 A Roadmap for Transfer Learning 中维护了一个 迁移学习领域的优秀论文合集。
2022.2
我们根据我们的综述文章 深度学习中的可迁移性 调整了我们的 API。
支持的方法
目前支持的算法包括:
分类任务的领域适应 [代码]
- DANN - 通过反向传播实现的无监督领域适应 [ICML 2015] [代码]
- DAN - 使用深度适应网络学习可迁移特征 [ICML 2015] [代码]
- JAN - 使用联合适应网络进行深度迁移学习 [ICML 2017] [代码]
- ADDA - 对抗式判别性领域适应 [CVPR 2017] [代码]
- CDAN - 条件对抗式领域适应 [NIPS 2018] [代码]
- MCD - 最大分类器差异用于无监督领域适应 [CVPR 2018] [代码]
- MDD - 沟通领域适应的理论与算法 [ICML 2019] [代码]
- BSP - 可迁移性 vs. 辨识能力:用于对抗式领域适应的批处理谱惩罚 [ICML 2019] [代码]
- MCC - 最小类别混淆用于多功能领域适应 [ECCV 2020] [代码]
目标检测领域的领域适应 [代码]
- CycleGAN - 使用循环一致性对抗网络进行无配对图像到图像的转换 [ICCV 2017] [代码]
- D-adapt - 用于跨域目标检测的解耦适应 [ICLR 2022] [代码]
语义分割领域的领域适应 [代码]
- CycleGAN - 使用循环一致性对抗网络进行无配对图像到图像的转换 [ICCV 2017] [代码]
- CyCADA - 循环一致性的对抗式领域适应 [ICML 2018] [代码]
- ADVENT - 语义分割领域适应中的对抗式熵最小化 [CVPR 2019] [代码]
- FDA - 语义分割任务中的傅里叶域适应 [CVPR 2020] [代码]
关键点检测领域的领域自适应 [代码]
- RegDA - 用于无监督关键点检测的回归型领域自适应 [CVPR 2021] [代码]
人员重识别领域的领域自适应 [代码]
- IBN-Net - 一举两得:通过 IBN-Net 提升学习与泛化能力 [ECCV 2018]
- MMT - 相互均值教学:面向人员重识别无监督领域自适应的伪标签精炼 [ICLR 2020] [代码]
- SPGAN - 保持相似性的生成对抗网络 [CVPR 2018] [代码]
部分领域自适应 [代码]
- IWAN - 基于重要性加权的对抗网络用于部分领域自适应 [CVPR 2018] [代码]
- AFN - 范数越大越可迁移:一种用于无监督领域自适应的自适应特征范数方法 [ICCV 2019] [代码]
开集领域自适应 [代码]
- OSBP - 通过反向传播实现开集领域自适应 [ECCV 2018] [代码]
分类任务的领域泛化 [代码]
- IBN-Net - 一举两得:通过 IBN-Net 提升学习与泛化能力 [ECCV 2018]
- MixStyle - 使用 MixStyle 实现领域泛化 [ICLR 2021] [代码]
- MLDG - 学习如何泛化:面向领域泛化的元学习 [AAAI 2018] [代码]
- IRM - 不变风险最小化 [ArXiv] [代码]
- VREx - 通过风险外推实现分布外泛化 [ICML 2021] [代码]
- GroupDRO - 面向群体偏移的分布鲁棒神经网络:论正则化对最坏情况泛化的重要性 [ArXiv] [代码]
- Deep CORAL - 深度领域自适应中的相关性对齐 [ECCV 2016] [代码]
人员重识别领域的领域泛化 [代码]
- IBN-Net - 一举两得:通过 IBN-Net 提升学习与泛化能力 [ECCV 2018]
- MixStyle - 使用 MixStyle 实现领域泛化 [ICLR 2021] [代码]
图像分类任务的迁移适配(微调)[代码]
- L2-SP - 卷积网络迁移学习中的显式归纳偏置 [ICML 2018] [代码]
- BSS - 灾难性遗忘遇上负迁移:批量谱收缩用于安全的迁移学习 [NIPS 2019] [代码]
- DELTA - 基于注意力机制的特征图深度学习迁移 [ICLR 2019] [代码]
- Co-Tuning - 迁移学习中的协同调优 [NIPS 2020] [代码]
- StochNorm - 随机归一化 [NIPS 2020] [代码]
- LWF - 不忘旧知识的学习 [ECCV 2016] [代码]
- Bi-Tuning - 预训练表示的双向调优 [ArXiv] [代码]
预训练模型选择 [代码]
- H-Score - 基于信息论的任务迁移学习可迁移性评估方法 [ICIP 2019] [代码]
- NCE - “可迁移性与监督分类任务难度”中的负条件熵 [ICCV 2019] [代码]
- LEEP - LEEP:一种评估学习表征可迁移性的新指标 [ICML 2020] [代码]
- LogME - “LogME:预训练模型在迁移学习中实用评估”的最大证据对数 [ICML 2021] [代码]
半监督学习用于分类 [代码]
- 伪标签 - 伪标签:一种简单高效的深度神经网络半监督学习方法 [ICML 2013] [代码]
- Pi模型 - 用于半监督学习的时间集成 [ICLR 2017] [代码]
- 均值教师 - 均值教师是更好的榜样:权重平均的一致性目标可提升半监督深度学习效果 [NIPS 2017] [代码]
- 噪声学生 - 使用噪声学生的自训练可提升 ImageNet 分类性能 [CVPR 2020] [代码]
- UDA - 用于一致性训练的无监督数据增强 [NIPS 2020] [代码]
- FixMatch - 通过一致性和置信度简化半监督学习 [NIPS 2020] [代码]
- 自调优 - 面向数据高效深度学习的自调优技术 [ICML 2021] [代码]
- FlexMatch - FlexMatch:利用课程式伪标签提升半监督学习效果 [NIPS 2021] [代码]
- DebiasMatch - 基于自然不均衡伪标签的去偏学习 [CVPR 2022] [代码]
- DST - 面向半监督学习的去偏自训练 [NIPS 2022 口头报告] [代码]
安装
从源代码安装
- 请先使用 git 克隆本库。然后运行以下命令以安装
tllib及其所有依赖项。
python setup.py install
pip install -r requirements.txt
通过 pip 安装
- 目前通过
pip安装仍处于实验阶段。
pip install -i https://test.pypi.org/simple/ tllib==0.4
文档
您可以在网站上找到 API 文档:文档。
使用
您可以在 examples 目录中找到示例。典型用法如下:
# 在 Office-31 数据集上,使用 ResNet 50 训练 DANN 模型,任务为 Amazon → Webcam。
# 假设您已将数据集放置在 `data/office-31` 路径下,
# 或者您愿意自动从互联网下载数据集到该路径。
python dann.py data/office31 -d Office31 -s A -t W -a resnet50 --epochs 20
贡献
我们欢迎所有贡献。如果您计划提交 bug 修复,请直接操作,无需进一步讨论。若您打算贡献新功能、实用工具或扩展,请先创建议题并与我们讨论该功能。
数据集免责声明
本库是一个用于下载和准备公开数据集的工具库。我们不托管或分发这些数据集,也不对其质量或公平性作出保证,更不声称您拥有使用这些数据集的许可。您有责任根据数据集的许可协议确定自己是否具备使用权限。
如果您是数据集的所有者,并希望更新其中的任何部分(如描述、引用等),或者不希望您的数据集被纳入本库,请通过 GitHub 议题与我们联系。感谢您对机器学习社区的贡献!
联系方式
如果您对我们的代码有任何问题或建议,包括未来功能的改进,欢迎随时联系:
- Baixu Chen (cbx_99_hasta@outlook.com)
- Junguang Jiang (JiangJunguang1123@outlook.com)
- Mingsheng Long (longmingsheng@gmail.com)
或在 Issues 中提出您的问题。
如需中文答疑,您也可以先在此处提问,再发送邮件。迁移学习算法库答疑专区
引用
如果您在研究中使用了本工具箱或基准测试,请引用本项目。
@misc{jiang2022transferability,
title={深度学习中的迁移能力:综述},
author={Junguang Jiang、Yang Shu、Jianmin Wang、Mingsheng Long},
year={2022},
eprint={2201.05867},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
@misc{tllib,
author = {Junguang Jiang、Baixu Chen、Bo Fu、Mingsheng Long},
title = {迁移学习库},
year = {2020},
publisher = {GitHub},
journal = {GitHub 仓库},
howpublished = {\url{https://github.com/thuml/Transfer-Learning-Library}},
}
致谢
我们衷心感谢清华大学软件学院以及大数据软件国家工程实验室,为我们的机器学习研究提供了如此优秀的平台。
版本历史
v0.42022/08/03v0.32022/08/03v0.22021/10/08常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。