SoftTeacher
SoftTeacher 是一款专注于目标检测任务的开源算法框架,核心致力于解决人工智能训练中“标注数据稀缺”的难题。在现实场景中,获取大量带有精确标注的图片成本高昂且耗时,而 SoftTeacher 通过先进的半监督学习技术,让用户能够利用少量已标注数据和大量未标注数据进行联合训练,从而显著降低对人工标注的依赖。
该工具源自 ICCV 2021 的研究成果,其独特的技术亮点在于提出了“软教师”(Soft Teacher)机制。与传统方法不同,它不依赖僵硬的阈值筛选伪标签,而是通过端到端的方式生成更柔和、更丰富的监督信号,有效提升了模型在数据匮乏场景下的泛化能力和检测精度。实验数据显示,即使在仅有 1% 标注数据的情况下,SoftTeacher 也能将检测性能提升一倍以上。
SoftTeacher 主要面向计算机视觉领域的研究人员、算法工程师及开发者。如果您正在探索低资源环境下的高效模型训练方案,或希望在不增加标注预算的前提下优化现有检测系统,SoftTeacher 将是一个极具价值的技术选择。它提供了完整的代码实现与预训练模型,便于用户快速复现论文结果并应用于实际项目。
使用场景
某自动驾驶初创团队正致力于开发城市道路车辆检测系统,但面临海量未标注行车录像与极少量人工标注数据的困境。
没有 SoftTeacher 时
- 数据利用率极低:团队仅能使用 1% 的昂贵人工标注数据训练模型,其余 99% 的未标注视频素材被迫闲置,造成巨大资源浪费。
- 模型性能遭遇瓶颈:在少量数据下训练的基线模型 mAP 仅为 10.0%,无法准确识别远处的行人或遮挡车辆,难以满足上路测试的安全标准。
- 标注成本高昂且周期长:为了提升精度,团队不得不预算数十万元并耗时数月进行新一轮数据标注,严重拖慢了产品迭代节奏。
- 泛化能力薄弱:模型在面对雨天、夜间等未充分标注的复杂场景时,漏检率极高,缺乏鲁棒性。
使用 SoftTeacher 后
- 激活沉睡数据价值:利用半监督学习机制,SoftTeacher 成功将 99% 的未标注数据转化为有效训练信号,实现了端到端的数据利用。
- 小样本性能飞跃:在同样仅 1% 标注数据的条件下,模型 mAP 从 10.0% 飙升至 22.64%,检测精度翻倍,显著提升了目标识别准确率。
- 大幅降低落地成本:团队无需追加标注预算,仅通过算法优化就达到了原本需要大量标注数据才能实现的性能,节省了数月开发时间。
- 复杂场景适应性强:借助“软教师”生成的动态伪标签,模型在恶劣天气和遮挡场景下的表现更加稳定,误报与漏报显著减少。
SoftTeacher 的核心价值在于打破了高精度目标检测对大规模标注数据的依赖,让企业在极低标注成本下也能部署工业级 AI 视觉系统。
运行环境要求
- Linux
需要 NVIDIA GPU,README 中明确提到所有模型均在 8 张 V100 GPU 上训练,具体显存和 CUDA 版本未说明(需匹配 PyTorch 1.9.0 环境)
未说明

快速开始
基于软教师的端到端半监督目标检测
作者:徐孟德*、张政*、胡汉、王建峰、王丽娟、魏方云、白翔、刘子成。
本仓库是 ICCV2021 论文《基于软教师的端到端半监督目标检测》(https://arxiv.org/abs/2106.09018)的官方实现。
引用
@article{xu2021end,
title={End-to-End Semi-Supervised Object Detection with Soft Teacher},
author={Xu, Mengde and Zhang, Zheng and Hu, Han and Wang, Jianfeng and Wang, Lijuan and Wei, Fangyun and Bai, Xiang and Liu, Zicheng},
journal={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
year={2021}
}
主要结果
部分标注数据
我们遵循 STAC[1] 的方法,针对每种设置评估了 5 种不同的数据划分,并报告了 5 次划分的平均性能。结果如下:
1% 标注数据
| 方法 | mAP | 模型权重 | 配置文件 |
|---|---|---|---|
| 基线 | 10.0 | - | 配置 |
| 我们方法 (thr=5e-2) | 21.62 | 网盘 | 配置 |
| 我们方法 (thr=1e-3) | 22.64 | 网盘 | 配置 |
5% 标注数据
| 方法 | mAP | 模型权重 | 配置文件 |
|---|---|---|---|
| 基线 | 20.92 | - | 配置 |
| 我们方法 (thr=5e-2) | 30.42 | 网盘 | 配置 |
| 我们方法 (thr=1e-3) | 31.7 | 网盘 | 配置 |
10% 标注数据
| 方法 | mAP | 模型权重 | 配置文件 |
|---|---|---|---|
| 基线 | 26.94 | - | 配置 |
| 我们方法 (thr=5e-2) | 33.78 | 网盘 | 配置 |
| 我们方法 (thr=1e-3) | 34.7 | 网盘 | 配置 |
全部标注数据
Faster R-CNN (ResNet-50)
| 模型 | mAP | 模型权重 | 配置文件 |
|---|---|---|---|
| 基线 | 40.9 | - | 配置 |
| 我们方法 (thr=5e-2) | 44.05 | 网盘 | 配置 |
| 我们方法 (thr=1e-3) | 44.6 | 网盘 | 配置 |
| 我们方法* (thr=5e-2) | 44.5 | - | 配置 |
| 我们方法* (thr=1e-3) | 44.9 | - | 配置 |
Faster R-CNN (ResNet-101)
| 模型 | mAP | 模型权重 | 配置文件 |
|---|---|---|---|
| 基线 | 43.8 | - | 配置 |
| 我们方法* (thr=5e-2) | 46.9 | 网盘 | 配置 |
| 我们方法* (thr=1e-3) | 47.6 | 网盘 | 配置 |
注释
- 我们的*表示我们使用了更长的训练计划。
thr表示配置文件中的model.test_cfg.rcnn.score_thr。这一推理技巧最早由 Instant-Teaching[2] 提出。- 所有模型均在 8 张 V100 GPU 上进行训练。
使用方法
需求
Ubuntu 16.04- 带有
python=3.6的Anaconda3 Pytorch=1.9.0mmdetection=2.16.0+fe46ffemmcv=1.3.9wandb=0.10.31
注意事项
- 我们使用 wandb 进行可视化,如果您不想使用它,只需注释掉
configs/soft_teacher/base.py文件中的第 273–284 行即可。 - 该项目应与最新版本的
mmdetection兼容。如果您想切换到与我们相同的mmdetection版本,请运行cd thirdparty/mmdetection && git checkout v2.16.0。
安装
make install
数据准备
- 下载 COCO 数据集
- 执行以下命令以生成数据集划分:
# YOUR_DATA 应该是一个包含 COCO 数据集的目录。
# 例如:
# YOUR_DATA/
# coco/
# train2017/
# val2017/
# unlabeled2017/
# annotations/
ln -s ${YOUR_DATA} data
bash tools/dataset/prepare_coco_data.sh conduct
有关具体需要下载的内容,请参阅 tools/dataset/prepare_coco_data.sh 文件中的 11-24 行。
训练
- 在部分标注数据设置下训练模型:
# JOB_TYPE: 'baseline' 或 'semi',决定运行哪种任务
# PERCENT_LABELED_DATA: 1、5、10,表示标注的 COCO 数据占整个训练数据集的比例。
# GPU_NUM: 用于运行任务的 GPU 数量
for FOLD in 1 2 3 4 5;
do
bash tools/dist_train_partially.sh <JOB_TYPE> ${FOLD} <PERCENT_LABELED_DATA> <GPU_NUM>
done
例如,我们可以运行以下脚本,使用 8 张 GPU 在 10% 标注数据上训练我们的模型:
for FOLD in 1 2 3 4 5;
do
bash tools/dist_train_partially.sh semi ${FOLD} 10 8
done
- 在全标注数据设置下训练模型:
bash tools/dist_train.sh <CONFIG_FILE_PATH> <NUM_GPUS>
例如,使用 8 张 GPU 训练我们的 R50 模型:
bash tools/dist_train.sh configs/soft_teacher/soft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py 8
- 在新数据集上训练模型:
核心思想是将新数据集转换为 COCO 格式。详细信息请参阅 添加新数据集。
评估
bash tools/dist_test.sh <CONFIG_FILE_PATH> <CHECKPOINT_PATH> <NUM_GPUS> --eval bbox --cfg-options model.test_cfg.rcnn.score_thr=<THR>
推理
使用训练好的模型进行推理并可视化检测结果:
# [IMAGE_FILE_PATH]: 您本地文件系统中图像文件的路径
# [CONFIG_FILE]: 配置文件的路径
# [CHECKPOINT_PATH]: 与所提供配置文件相关的已训练模型的路径
# [OUTPUT_PATH]: 保存检测结果的目录
python demo/image_demo.py [IMAGE_FILE_PATH] [CONFIG_FILE] [CHECKPOINT_PATH] --output [OUTPUT_PATH]
例如:
- 使用提供的
R50模型对单张图像进行推理:
python demo/image_demo.py /tmp/tmp.png configs/soft_teacher/soft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs/downloaded.model --output work_dirs/
程序完成后,会生成一张与输入图像同名的图片,并保存到 work_dirs 目录中。
- 使用提供的
R50模型对多张图像进行推理:
python demo/image_demo.py '/tmp/*.jpg' configs/soft_teacher/soft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs/downloaded.model --output work_dirs/
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
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 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
tesseract
Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中