探索如何通过微调将预训练模型(Ultralytics )适应于特定任务。学习如何利用迁移学习实现更快、更精准的人工智能。
微调是机器学习(ML)中的基础过程,涉及将预训练模型适应特定任务或数据集。开发者无需从零开始训练——该过程需要海量数据、时间和计算能力——而是基于已从大型数据集(如ImageNet)学习到通用特征的"基础模型"进行优化。 ImageNet。这种方法是迁移学习的实际应用,使人工智能系统能够以显著更少的资源在特定领域问题上实现高性能。
微调的核心思想在于利用模型已有的"知识"。基础模型通常对基本视觉元素(如边缘、纹理和形状)具有扎实的理解。在微调过程中,模型参数(权重)会进行微调,以适应新数据的细微差异。
这种调整通常通过采用较低学习率的 梯度下降 法实现。保守的学习率能确保在初始预训练阶段习得的宝贵特征得到优化而非破坏。在许多计算机视觉(CV)工作流程中,工程师会冻结骨干网络的前端层——这些层detect 通用特征——仅更新负责最终类别预测的深层网络和检测头。
微调弥合了通用人工智能能力与特定行业需求之间的鸿沟。它使通用模型能够成为专业化的专家。
区分微调与完整训练有助于理解何时采用每种方法。
现代框架使这一过程变得触手可及。例如,Ultralytics 通过自动处理数据集管理和云端训练来简化工作流程。不过,开发者也可以使用Python在本地对模型进行微调。
以下示例演示了如何对预训练模型进行微调。
YOLO26 在自定义数据集上训练模型。请注意,我们加载
yolo26n.pt (预训练权重)而非简化的配置文件,这将指示库启动迁移学习。
from ultralytics import YOLO
# Load a pre-trained YOLO26 model (n=nano size)
# This automatically loads weights trained on COCO
model = YOLO("yolo26n.pt")
# Fine-tune the model on a custom dataset (e.g., 'coco8.yaml')
# The 'epochs' argument determines how many passes over the data occur
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# The model is now fine-tuned and ready for specific inference tasks
要获得最佳效果,新数据集的质量至关重要。通过数据增强工具,可通过旋转、翻转或调整图像亮度等方式人工扩展小规模数据集,从而避免过拟合。此外,监控验证损失和 平均精度均值(mAP)等指标,可确保模型对未见数据具有良好的泛化能力。
对于管理复杂工作流的团队而言,采用 MLOps策略及实验追踪等工具 有助于对不同微调迭代版本实施版本控制。无论是 目标检测还是 实例分割,微调始终是 部署高效AI解决方案的行业标准。