深圳Yolo 视觉
深圳
立即加入
词汇表

模型集成

通过模型集成提高模型准确性和稳健性。探索诸如 bagging、boosting、stacking 等技术及其在现实世界中的应用。

模型集合是机器学习(ML)中的一种复杂技术。 机器学习(ML)中的一种复杂技术。 模型集合是机器学习(ML)中的一种复杂技术,它将多个独立模型的预测结果结合起来,生成一个单一的、卓越的最终输出结果。模型集合不依赖于 决策能力,而是利用 "群体智慧 "原则来提高整体准确性和稳定性。 提高整体准确性和稳定性。通过汇总 的结果,工程师可以大大降低对训练集过度拟合的风险。 过度拟合训练集的风险,并创建出对训练集中的噪声具有更强鲁棒性的系统。 对训练数据中的噪音具有更强的鲁棒性。 训练数据。这种方法常用于 在 Kaggle 竞赛等竞争环境中取得最先进的结果。 Kaggle 竞赛

集合学习机制

模型组合的有效性取决于其组成部分的多样性。如果所有模型都有相同的 弱点,那么将它们组合在一起也不会有任何改进。因此,实践者通常通过改变神经网络架构、使用不同的 神经网络架构,使用不同的 数据子集,或采用不同的 数据增强策略。

有三种主要的方法来构建集合:

  • 套袋(引导聚合):这包括在不同的随机样本上训练同一模型的多个版本,如决策树 例如决策树。 数据集进行训练。典型的例子是 随机森林算法。 预测,以消除差异,详见 Scikit-learn ensemble 文档中有详细介绍
  • 提升:在这种迭代技术中,模型是按顺序训练的。每个新模型都侧重于 纠正前一个模型所犯的错误。流行的实现方法有 XGBoostLightGBM等流行的实现方法都使用这种方法将弱学习者转换为 高精度的复合模型。
  • 堆叠:这种先进的方法会训练一个 "元学习器",将多个不同基础模型的预测结果结合在一起 例如,将支持向量机 (SVM) 与支持向量机 (SVM) 和支持向量机 (SVM) 结合起来。 支持向量机(SVM)与 深度学习模型。元学习器会优化如何权衡每位专家的意见,以最小化最终的 损失函数

实际应用

在精度要求高、出错成本高的行业中,模型组合至关重要。

  1. 医学图像分析:诊断复杂的病症往往需要分析成像数据中的微妙模式。 成像数据中的微妙模式。诊断系统可能会采用一个模型组合,该模型组合结合了一个 卷积神经网络 (CNN) 与一个 视觉Transformer (ViT)。 视觉转换器(ViT)相结合。这种组合有助于 在医学成像中检测肿瘤 灵敏度比任何单一架构都要高。
  2. 自主系统:对于 自动驾驶汽车的感知系统必须 具有故障安全性。工程师通常会运行一组 物体探测模型组合--例如,将 的高速能力 YOLO11与 transformer精度的 RT-DETR.这确保了 行人或障碍物。

集合与专家混合(MoE)

重要的是要区分标准模型集合和专家混合物(MoE)。 专家混合物 (MoE)。虽然两者都使用 多个子模型,但它们在推理过程中的运作方式不同:

  • 模型组合:通常是针对每个输入查询模型集合中的每个模型,然后合并 结果。这样可以最大限度地提高准确性,但会增加 推理延迟和计算成本。
  • 混合专家:使用门控网络,只将数据传递给最适合当前输入的少数特定 "专家"(子模型)。 (子模型)。这使得 基础模型,如 开关转换器等基础模型中的大规模可扩展性,而无需为每个令牌运行每个参 每个令牌的每个参数。

利用Ultralytics实现集合

虽然像 PyTorch 在这种情况下 架构,但只需加载多个模型并处理相同的输入,就能实现基本的集合推理。 相同的输入。下面的示例演示了如何YOLO ultralytics 包装

from ultralytics import YOLO

# Load two different model variants to create a diverse ensemble
model_a = YOLO("yolo11n.pt")  # Nano model
model_b = YOLO("yolo11s.pt")  # Small model

# Perform inference on an image with both models
# In a production ensemble, you would merge these results (e.g., via NMS)
results_a = model_a("https://ultralytics.com/images/bus.jpg")
results_b = model_b("https://ultralytics.com/images/bus.jpg")

print(f"Model A detections: {len(results_a[0].boxes)}")
print(f"Model B detections: {len(results_b[0].boxes)}")

实施组合需要仔细考虑 MLOps资源,因为部署 多个模型会增加内存使用量。然而,对于要求尽可能高性能的计算机视觉(CV 计算机视觉(CV)中需要尽可能高性能的任务来说,这种权衡往往是合理的。 是合理的。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入