-
Python-MEAL通过对抗性学习进行多模型集成的官方实现
2019-08-11 03:38:34MEAL: 通过对抗性学习进行多模型集成的官方实现 -
目标检测多模型集成方法总结
2021-01-13 23:51:32本文转载自AI公园。前段时间推送了文章:难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型,不少朋友对模型集成感兴趣,本文是个小总结。作者:Vikas S S...本文转载自AI公园。
前段时间推送了文章:难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型 ,不少朋友对模型集成感兴趣,本文是个小总结。
作者:Vikas S Shetty
编译:ronghuaiyang
导读
模型集成是一种提升模型能力的常用方法,但通常也会带来推理时间的增加,在物体检测上效果如何,可以看看。
介绍
集成机器学习模型是一种常见的提升模型能力的方式,并已在多个场景中使用,因为它们结合了多个模型的决策,以提高整体性能,但当涉及到基于DNN(深度神经网络)的目标检测模型时,它并不仅仅是合并结果那么简单。
集成的需求
为了在任何模型中获得良好的结果,都需要满足某些标准(数据、超参数)。但在真实场景中,你可能会得到糟糕的训练数据,或者很难找到合适的超参数。在这些情况下,综合多个性能较差的模型可以帮助你获得所需的结果。在某种意义上,集成学习可以被认为是一种通过执行大量额外计算来弥补学习算法不足的方法。另一方面,另一种选择是在一个非集成系统上做更多的学习。对于计算、存储或通信资源的相同增加,集成系统使用两种或两种以上的方法可能会比使用单一方法增加资源的方法更有效地提高整体精度。
看起来挺好,有没有缺点呢?
更难调试或理解预测,因为预测框是根据多个模型绘制的。
推理时间根据模型和使用的模型数量而增加。
尝试不同的模型以获得合适的模型集合是一件耗时的事情。
不同的模型集成
OR方法:如果一个框是由至少一个模型生成的,就会考虑它。
AND方法:如果所有模型产生相同的框,则认为是一个框(如果IOU >0.5)。
一致性方法:如果大多数模型产生相同的框,则认为是一个框,即如果有m个模型,(m/2 +1)个模型产生相同的框,则认为这个框有效。
加权融合:这是一种替代NMS的新方法,并指出了其不足之处。
不同的集成方法在上面的例子中,OR方法的预测得到了所有需要的对象框,但也得到了一个假阳性结果,一致性的方法漏掉了马,AND方法同时漏掉了马和狗。
验证
为了计算不同的集成方法,我们将跟踪以下参数:
True positive:预测框与gt匹配
False Positives:预测框是错误的
False Negatives:没有预测,但是存在gt。
Precision:度量你的预测有多准确。也就是说,你的预测正确的百分比[TP/ (TP + FP)]
Recall:度量gt被预测的百分比[TP/ (TP + FN)]
Average Precision:precision-recall图的曲线下面积
使用的模型
为了理解集成是如何起作用的,我们提供了用于实验的独立模型的结果。
1. YoloV3:
2. Faster R-CNN — ResNeXt 101 [X101-FPN]:
集成实验
1. OR — [YoloV3, X101-FPN]
如果你仔细观察,FPs的数量增加了,这反过来降低了精度。与此同时,TPs数量的增加反过来又增加了召回。这是使用OR方法时可以观察到的一般趋势。
2. AND — [YoloV3, X101-FPN]
与我们使用OR方法观察到的情况相反,在AND方法中,我们最终获得了较高的精度和较低的召回率,因为几乎所有的假阳性都被删除了,因为YoloV3和X101的大多数FPs是不同的。
检测框加权融合
在NMS方法中,如果框的IoU大于某个阈值,则认为框属于单个物体。因此,框的过滤过程取决于这个单一IoU阈值的选择,这影响了模型的性能。然而,设置这个阈值很棘手:如果有多个物体并排存在,那么其中一个就会被删除。NMS丢弃了冗余框,因此不能有效地从不同的模型中产生平均的局部预测。
NMS和WBF之间的主要区别是,WBF利用所有的框,而不是丢弃它们。在上面的例子中,红框是ground truth,蓝框是多个模型做出的预测。请注意,NMS是如何删除冗余框的,但WBF通过考虑所有预测框创建了一个全新的框(融合框)。3. Weighted Boxes Fusion — [Yolov3, X101-FPN]
YoloV3和X101-FPN的权重比分别为2:1。我们也试着增加有利于X101-FPN的比重(因为它的性能更好),但在性能上没有看到任何显著的差异。从我们读过的加权融合论文中,作者注意到了AP的增加,但如你所见,WBF YoloV3和X101-FPN并不比OR方法好很多。我们注意到的是,大部分的实验涉及至少3个或更多模型。
4. Weighted Boxes Fusion — [Yolov3, X101, R101, R50]
在最后的实验中,我们使用了YoloV3以及我们在Detectron2中训练的3个模型[ResNeXt101-FPN, ResNet101-FPN, ResNet50-FPN]。显然,召回率有一个跳跃(约为传统方法的0.3),但AP的跳跃并不大。另外,需要注意的是,当你向WF方法添加更多模型时,误报的数量会激增。
总结
当使用相互补充的模型时,集成是提高性能的一种很好的方法,但它也会以速度为代价来完成推理。根据需求,可以决定有多少个模型,采用哪种方法,等等。但从我们进行的实验来看,性能提升的数量似乎与一起运行这些模型所需的资源和推断时间不成比例。
英文原文:https://medium.com/inspiredbrilliance/object-detection-through-ensemble-of-models-fed015bc1ee0
END
备注:目标检测
目标检测交流群
2D、3D目标检测等最新资讯,若已为CV君其他账号好友请直接私信。
我爱计算机视觉
微信号:aicvml
QQ群:805388940
微博知乎:@我爱计算机视觉
投稿:amos@52cv.net
网站:www.52cv.net
在看,让更多人看到
-
深度学习--多模型集成
2019-04-02 18:15:11转自:https://blog.csdn.net/qq_21997625/article/details/80388639 ... 模型集成方法 集成学习(ensemble learning)是机器学习中一类学习算法,值训练多个学习器并将它们组合起来使用的方法。这类算法通常在实...转自:https://blog.csdn.net/qq_21997625/article/details/80388639
本文转自:https://blog.csdn.net/siyue0211/article/details/80334924
模型集成方法
集成学习(ensemble learning)是机器学习中一类学习算法,值训练多个学习器并将它们组合起来使用的方法。这类算法通常在实践中会取得比单个学习器更好的预测结果。
数据层面的集成方法
在训练阶段的数据扩充在测试阶段仍然使用。 诸如图像多尺度, 随机扣取等。以随机扣取为例, 对某张测试图片可得到n 张随机扣取图像,测试阶段只需要用训练好的深度网络模型对n张图分别做预测, 之后将预测的各类置信度平均作为该测试图像最终预测结果即可。
简易集成法
简易集成法是Liu 等人提出的针对不平衡样本问题的一种集成学习解决方案, 具体来说,简易集成法对于样本较多的类采取降采样,每次采样数根据样本数目最少的类别而定,这样,每类取到的样本数可保持均等。 采样结束后, 针对每次采样得到的子数据集训练模型, 如此采样, 训练,反复多次。最后, 对测试数据的预测则根据训练得到若干模型的结果取平均值或投票得出。 总结, 简易集成法在模型集成的同时,还能缓解数据不平衡带来的问题。
模型层面的集成方法
单模型集成
多层特征融合
多层特征融合是针对单模型的一种模型层面的集成方法。 由于深度卷积神经网络特征具有层次性的特点, 不同层特征富含的语义信息可以相互补充, 在图像语义分割, 细粒度图像检索,基于视频的表象性格分析等任务中常见的多层特征融合策略的使用。一般的,多层特征融合操作时可将不同层网络特征级联。而对于特征融合应选取哪些网络层,一个实践经验是:最好使用靠近目标函数的几层卷积特征。因为越深层特征包含的高层语义越强,分辨力也会越强。相反, 网络较浅层的特征较普使, 用于特征融合可能起不到作用,或者甚至会起到相反作用。
网络快照集成法 (snapshot ensemble)
深度神经网络模型复杂的解空间存在非常多的局部最优解, 但经典的随机梯度下降方法只能让网络模型收敛到其中一个局部最优解。 网络快照便利用了网络解空间中这些局部最优解来对单个网络做模型集成。 通过循环调整网络的学习率可使网络依次收敛到不同的局部最优解。
最左侧图为传统SGD法, 中间为快照集成法的收敛示意图。 右图为两方法在CIFAR-10数据集上的收敛曲线对比。具体而言, 网络快照法是将学习率设置为随模型迭代轮数(iteration,即一次批处理随机梯度下降称为一个迭代轮数)改变的函数,即:
其中,为初始学习率, 一般设置为0.1, 0.2 。t 为模型迭代轮数(即mini-batch批处理训练次数)。T 为模型总的批处理训练次数。 M为学习率“循环退火”的次数。 对应了模型将收敛到的局部最优解的个数。 式子用cos 的循环性来更新学习率, 将学习率从0.1 随 t 的增长逐渐减缓到0, 之后学习率重新放大而跳出局部最优解。自此开始下一个循环,此循环结束可以收敛到新的局部最优解, 如此循环往复……直到M个循环结束。 上面用余弦函数循环更新网络参数,这一过程称之为“循环余弦退火”过程。当经过循环余弦退火对学习率的调整之后, 每个循环结束可使模型收敛到一个不同的局部最优解, 若将收敛到不同局部最优解的模型保存便可得到M个处于不同收敛状态的模型,对于每个循环结束后保存的模型,我们称之为模型快照。 测试阶段在做模型集成时,由于深度网络模型在初始训练阶段未必有比较卓越的性能,因此一般可挑选最后m个模型快照用于集成。关于这些模型快照的集成策略参考下面提到的“直接平均法”。
多模型集成
多模型生成策略
- 同一模型不同的初始化: 由于神经网络的训练机制是基于随机梯度下降, 故不同的网络参数初始化会导致不同的训练结果,尤其是对于小样本的学习场景, 首先对同一模型进行不同初始化,之后得到的网络模型进行结果集成会大幅度缓解其随机性,提升最终任务的预测结果。
- 若网络超参数设置得当, 深度模型随着网络的进行会逐步趋于收敛,但是不同的训练轮数仍有不同, 无法确定哪一轮的模型最适合用于测试数据。 一个简单方法解决这个问题是将最后几轮参数模型结果做集成, 这样一方面可以降低随机误差,另一方面可以避免训练轮此过多带来的过拟合现象, 这样的操作被称为轮次集成。
- 不同目标函数:目标函数(或称损失函数)是整个网络训练的“指挥棒”, 选择将“交叉熵损失函数”、“合页损失函数”、“大间隔交叉熵损失函数”和“中心损失函数”作为目标函数分别训练模型。在预测阶段,既可以直接对不同模型预测结果做“置信度级别”的平均或投票,也可以做“特征级别”的模型集成:将不同网络得到的深度特征抽出后级联作为最终特征,之后离线训练浅层分类器(如支持向量机)完成预测任务。
- 不同的网络结构:可以在使用如VGG, 深度残差等不同网络架构的网络上训练模型,最后将不同架构网络得到的结果做集成。
多模型集成方法
假设由 N 个模型待集成, 对某测试样本 x , 其预测结果为 N 个 C 维向量( C 为数据的标记空间大小):
-
直接平均法
直接平均法是最简单有效的多模型集成方法,通过直接平均不同模型产生的类别置信度得到最后额预测结果 -
加权平均法
加权平均法是直接平均的基础上加入权重来调节不同模型输出间的重要程度。
其中为第个模型的权重, 且满足:
and -
投票法(voting)
投票法中最常用的是多数表决法。表决前需先将各自模型返回的预测置信度转化为预测类别,即最高置信度对应的类别标记 ∈ {1, 2, … , C} 作为该模型的预测结果。多数表决法中在得到样本 x 的最终预测时,若某预测类别获得一半以上模型投票,则该样本预测结果为该类别; 若对该样本无任何类别获得一半以上投票,则拒绝作出预测投票法中另一种常用方法是相对多数表决法 , 与多数表决法会输出“拒绝预测”不同的是,相对多数表决法一定会返回某个类别作为预测结果, 因为相对多数表决是选取投票数最高的类别作为最后预测结果。
-
堆叠法
堆叠法又称“二次集成法”是一种高阶的集成学习算法。在刚才的例子中,样本 x 作为学习算法或网络模型的输入, 作为第 i 个模型的类别置信度输出,整个学习过程可记作一阶学习过程。堆叠法则是以一阶学习过程的输出作为输入开展二阶学习过程, 有时也称作“元学习”。拿刚才的例子来说,对于样本 x, 堆叠法的输入是 N 个模型的预测置信
度 这些置信度可以级联作为新的特征表示。之后基于这样的”特征表示”训练学习器将其映射到样本原本的标记空间。此时学习器可为任何学习算法习得的模型,如支持向量机,随机森林 ,当然也可以是神经网络模型。不过在此需要指出的是,堆叠法有较大过拟合风险。
-
基于多模型集成的用户意图领域分类 SMP2017 技术报告
2020-04-10 10:20:13 -
模型集成方法
2020-12-26 20:49:19模型集成方法数据层面的集成方法测试阶段数据补充“简易集成”法模型层面的集成方法单模型集成多特征融合网络“快照”集成法多模型集成多模型生成策略多模型集成方法小结 集成学习是机器学习中的一类学习算法,指...
集成学习是机器学习中的一类学习算法,指训练多个学习器并将它们组合起来使用的方法。这类算法通常在实践中能取得比单个学习器更好的预测结果,颇有“众人拾柴火焰高”之意。尽管深度网络模型已经拥有强大的预测能力,但集成学习的使用仍能起到“锦上添花”的作用。因此有必要了解并掌握一些深度模型方面的集成方法。一般来讲,深度模型的集成多从“数据层面”和“模型层面”两方面着手。数据层面的集成方法
测试阶段数据补充
我们在之前的文章有提到“数据扩充”策略,实际上,这些扩充策略在模型测试阶段同样适用,诸如图像多尺度、随机抠取等。以随机抠取为例,对某张测试图像可得到n张随机抠取图像,测试阶段只需要用训练好的深度网络模型对n张图像分别做预测,之后将预测的各类置信度平均作为该测试图像最终预测结果即可。
“简易集成”法
“简易集成”法对于样本较多的类采取降采样,每次采样数依照样本数目最少的类别而定,这样每类取到的样本数可保持均等。采样结束后,针对每次采样得到的子数据集训练模型,如此采样、训练反复进行多次。最后对测试数据的预测则依据训练得到若干个模型的结果取平均或投票获得。总结来说,“简易集成”法在模型集成的同时,还能缓解数据不平衡带来的问题,可谓一举两得。
模型层面的集成方法
单模型集成
多特征融合
多层特征融合是针对单模型的一种模型才能买呢集成方法。由于深度卷积神经网络特征具有层次性的特点,不同层特征富含的语义信息可以相互补充,在图像语义分割、细粒度图像检索、基于视频的表象性格分析等任务中常见多层特征融合策略的使用。一般地,多层特征融合操作可直接将不同层网络特征级联。而对于特征融合应选取哪些网络层,一个实践经验是:最好使用靠近目标函数的几层卷积特征,因为愈深层特征包含的高层语义性更强、分辨能力也愈强;相反,网络较浅层的特征较为普适,用于特征融合很可能起不到作用,有时甚至会起到反作用。
网络“快照”集成法
多模型集成
前面提到了基于单个网络如何进行模型集成,这里向大家介绍如何产生多个不同网络训练结果并讲解一些多模型的集成方法。
多模型生成策略
同一模型不同初始化:首先对同一模型进行不同的初始化,之后将得到的网络模型进行结果集成会大幅度缓解其随机性,提升最终任务的预测结果。
同一模型不同训练轮数:若网络超参数设置得当,深度模型随着网络训练的进行会逐步趋于收敛,但不同训练轮数的结果仍有不同,无法确定到底哪一轮训练得到的模型最适用于测试数据。针对上述问题,一种简单的解决方式是将最后几轮训练模型结果做集成,这样一方面可降低随机误差,另一方面也避免了训练轮数过多带来的过拟合风险。这样的操作被称为“轮数集成”。
不同目标函数:目标函数(或称损失函数)是整个网络训练的“指挥棒”,选择不同目标函数势必使网络学到不同的特征表示。以分类任务为例,可将“交叉熵损失函数”、“合页熵损失函数”、“大间隔交叉损失函数”和“中心损失函数”作为目标函数分别训练模型。在预测阶段,既可以直接对不同模型预测结果做“置信度级别”的平均或投票,也可以做“特征级”的模型集成,将不同网络得到的深度特征抽出后级联作为最终特征,之后离线训练浅层分类器(如支持向量机)完成预测任务。
不同网络结构:不同网络结构也是一种有效的产生不同网络模型结果的方式。操作时可在如VGG网络、深度残差网络等不同网络架构上训练模型,最后将不同架构网络得到的结果做以集成。多模型集成方法
直接平均法:
加权平均法:
投票法:
堆叠法:
小结
1.深度网络的模型集成往往是提升网络最终预测能力的一剂“强心针”;
2.数据层面常用的方法是数据扩充和“简易集成”法 ,均操作简单但效果显著;
3.模型层面的模型集成方法可分为“单模型集成”和“多模型集成”。基于单一模型的集成方法可借助单个模型的多层特征融合和网络“快照”法进行。多模型集成方面,可通过不同参数初始化、不同训练轮数和不同目标函数的设定产生多个网络模型训练结果。最后使用平均法、投票法和堆叠法进行结果集成。
注:文章选自《解析深度学习—卷积神经网络原理与视觉实践》魏秀参著 -
模型集成
2020-06-02 08:41:29模型集成 集成学习 集成学习就是说将多个“单学习器”使用某种策略结合起来,使得整体的泛化能力得到提高。因为在机器学习中我们的目标是学习到一个稳定的并且在各个方面都表现较好的模型,但往往我们只能得到一个由... -
5 模型集成
2020-06-02 21:14:545 模型集成 (一)集成学习 集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差(bagging)、偏差(boosting)或改进预测(stacking)的效果。 集成学习在各个规模的数据集上都有很好的策略... -
通俗易懂--模型集成(多模型)讲解(算法+案例)
2018-12-31 19:46:38模型集成(model ensemble)2.1Bagging2.2Stacking2.3Adaboost2.4图解模型集成3.案例总流程4.初始化工作5.数据下采样6.模型训练6.1KNN6.2 SVM-RBF6.3 SVM-POLY6.4 Logistic Regression6.5 Random Forest6.6决策边界6.7... -
模型集成-ensamble
2019-10-02 19:44:34模型是由于有较高的方差产生,集成多个模型可以减小方差,为了使模型有集成有效,需要每一模型都需要是很好的模型但是需要犯不同的错误,结果会更鲁棒一些 主要参考内容... -
模型集成(模型融合)
2020-09-27 16:04:441 模型融合的方式 平均: 简单平均法 加权平均法 投票: 简单投票法 加权投票法 综合: 排序融合 log融合 stacking: 构建多层模型,并利用预测结果再拟合预测。 blending: 选取部分数据预测训练得到... -
模型集成(Model Ensemble)
2020-10-27 18:30:58模型集成是融合多个训练好的模型,基于某种方式实现测试数据的多模型融合,这样来使最终的结果能够“取长补短”,融合各个模型的学习能力,提高最终模型的泛化能力。近年来,model ensemble已成刷榜神器。它可以应用... -
模型集成(Ensemble)
2018-01-24 15:11:49模型集成的框架是这样的,有很多种分类器,它们应该是不同的,可以是不同的机器学习方法,也可以是相同的方法。但是它们应该是互补的,也就是说不是互相相似的。没有重分类器都应该有自己的位置。 2. ... -
模型集成 | 14款常规机器学习 + 加权平均模型融合
2018-07-03 22:59:24模型融合的方法很多,Voting、Averaging、Bagging 、Boosting、 Stacking,那么一些kaggle比赛中选手会选用各种方法进行融合,其中岭回归就是一类轻巧且非常有效的方法,当然现在还有很多更有逼格的方法。...
-
物联网基础篇:快速玩转MQTT
-
项目经理成长之路
-
工程制图 AutoCAD 2012 从二维到三维
-
8080端口爆破神器
-
PC桌面版本的APP网页内容收集分析管理工具
-
《前端》drag-拖拽学习-2021年2月27日
-
二、数组2(排序算法补充-对比数据结构课程二三章)
-
牛牛量化策略交易
-
朱老师C++课程第3部分-3.6智能指针与STL查漏补缺
-
Unity ILRuntime框架设计
-
opencv3.4.5 cmakeb编译配置文件.
-
Python3.x和Python2.x的区别
-
daxigua-master.zip
-
实验5:流水灯实验.docx
-
实验4:十进制计数器.docx
-
信号与系统(Python) 学习笔记摘录 (2) 傅里叶函数.pdf
-
用微服务spring cloud架构打造物联网云平台
-
JMETER 性能测试基础课程
-
2021-02-27
-
Java base基础 8大数据类型