Semi-Supervised Learning
探索半监督学习如何结合有标签和无标签数据来提升模型准确性。学习使用 Ultralytics YOLO26 实现 SSL 工作流。
半监督学习(SSL)是机器学习(ML)中的一种策略性范式,连接了两种传统训练方法。监督学习完全依赖带有完整标注的数据集,而无监督学习则试图在没有任何标签的情况下发现数据中的模式;SSL则将少量有标签数据与规模大得多的无标签数据结合起来。这种方法在现实世界的计算机视觉(CV)场景中特别有价值:收集原始图像(例如来自安防摄像头或卫星的视频素材)相对廉价,但由人类专家执行数据标注的过程成本高、速度慢且耗费大量人力。通过有效利用无标签样本中隐藏的结构,SSL可以显著提升模型准确率和泛化能力,而无需投入巨额标注预算。
半监督学习的核心机制#
SSL的主要目标是将少量有标签样本中的信息传播到规模更大的无标签样本集。这使神经网络能够学习穿过数据低密度区域的决策边界,从而实现更稳健的分类或检测。
大多数半监督工作流由以下两种常用技术驱动:
- 伪标签: 这种方法首先使用有限的有标签数据训练模型,然后利用该模型对无标签数据执行推理。超过特定置信度阈值的预测会被视为“伪标签”或真实值。这些高置信度预测会被加入训练数据,随后重新训练模型,以迭代方式不断提升其性能。
- 一致性正则化: 该技术依赖数据增强。其理念是,模型对一张图像及其经过轻微修改(增强)的版本应输出相似的预测。通过最小化原图与增强版本之间的预测差异,模型会学会关注目标的核心特征而非噪声,从而提升处理过拟合的能力。
使用 YOLO 进行实际实现#
下面的 Python 示例演示了使用ultralytics包实现的简单伪标签工作流。在此示例中,我们先使用一个小型数据集训练YOLO26模型,然后利用它为目录中的无标签图像生成标签。
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Train initially on a small available labeled dataset
model.train(data="coco8.yaml", epochs=10)
# Run inference on unlabeled data to generate pseudo-labels
# Setting save_txt=True saves the detections as text files for future training
results = model.predict(source="./unlabeled_images", save_txt=True, conf=0.85)实际应用#
半监督学习正在改变数据丰富但专业知识稀缺的行业。
- 医学影像: 在医疗保健 AI领域,获取扫描图像(X光片、MRI)是标准流程,但让经过认证的放射科医师为肿瘤检测标注每个像素,成本高得难以承受。SSL使研究人员能够仅使用一小部分专家标注病例训练高性能模型,同时利用数千份存档扫描图像来完善模型对生物结构的理解。
- 自动驾驶: 自动驾驶汽车公司每天从车队车辆收集PB级的视频数据。要为目标检测和语义分割标注每一帧是不可能的。借助SSL,系统可以从绝大多数无标签驾驶时长中学习,从而更好地理解复杂的道路环境、天气状况和罕见边缘案例。
区分相关概念#
要有效部署 AI 解决方案,必须了解SSL与类似策略之间的区别:
- 与主动学习相比: 两者都处理无标签数据,但标注方式不同。SSL根据模型预测自动分配标签。相比之下,主动学习会识别最“令人困惑”或最不确定的数据点,并明确请求人在回路对其进行标注,从而优化人的时间利用,而不是完全将人排除在外。
- 与迁移学习相比: 迁移学习是将一个在海量外部数据集(例如ImageNet)上预训练的模型,针对你的特定任务进行微调。相比之下,SSL侧重于在训练过程本身利用你的特定数据分布中的无标签部分。
- 与自监督学习相比: 尽管名称相似,自监督学习通常指“前置任务”(例如拼接图像块组成的拼图),在这类任务中,数据无需任何外部标签即可生成自身的监督信号。SSL则明确意味着使用一组规模更小、经过验证的标签来指导这一过程。
工具与未来展望#
随着深度学习(DL)模型规模不断扩大,数据使用效率变得至关重要。PyTorch和TensorFlow等现代框架为这些先进训练循环提供了计算后端。此外,Ultralytics Platform等工具正在简化数据集管理的整个生命周期。借助自动标注等功能,团队可以更轻松地实施半监督工作流,快速将原始数据转化为可用于生产的模型权重。MLOps的发展确保创建高精度视觉系统的门槛持续降低。









