1
模型融合 (Model Ensembling)
融合建模(Ensemble modeling)是这样一个过程:通过使用许多不同的建模算法或使用不同的训练数据集,创建多个不同的模型来预测结果。然后,融合模型汇总每个基础模型(base model)的预测结果,并对未见过的数据进行最终预测。使用融合模型的动机是为了减少预测的泛化误差。只要基础模型具有多样性和独立性,采用融合方法时,模型的预测误差就会减小。这种方法在做出预测时寻求集体智慧(wisdom of crowd)。尽管融合模型在模型中具有多个基础模型,但它就像单个模型那样运行和执行。(https://www.sciencedirect.com/topics/computer-science/ensemble-modeling)
2
开始之前
克隆工程并在 Python>3.7.0 的环境中安装 requiresments.txt , OneFlow 请选择 nightly 版本或者 >0.9 版本 。模型和数据可以从源码中自动下载。
3
普通测试
在尝试TTA之前,我们希望建立一个基准能够进行比较。该命令在COCO val2017上以640像素的图像大小测试YOLOv5x。yolov5x 是可用的最大并且最精确的模型。其它可用的模型是 yolov5s, yolov5m 和 yolov5l等 或者 自己从数据集训练出的模型 ./weights/best。有关所有可用模型的详细信息,请参阅我们的 READEME table
输出:
4
融合测试
通过在任何现有的 val.py或detect.py命令中的 --weights 参数后添加额外的模型,可以在测试和推理时将多个预训练模型融合在一起。
将 yolov5x, yolov5l6 两个模型的融合测试的指令如下:
声明:上述两次测试的mAP,mAR结果如下:
5
融合推理
附加额外的模型在 --weights 选项后自动启用融合推理:
Output:
参考文章
https://github.com/ultralytics/yolov5/issues/318
领取专属 10元无门槛券
私享最新 技术干货