这里弱分类器的设计往往就是确定颜色判断的阈值,为什么会选择100呢?其实这是我们需要学习得到的阈值,学习得到,当阈值设定为100时,分类的精度是最高的。另外,为什么要选择红黄蓝三种颜色?同样,因为它们分类的精度更高。通过不断进行特征挑选并学习弱分类器,最终组合提升为Adaboost强分类器。 SVM分类器 SVM通过最大化分类间隔得到分类平面的支持向量,在线性可分的小数据集上有不错的分类精度,另外通过引入核函数将低维映射到高维,从而线性可分,在检测场景被广泛使用。 比如线性SVM分类器就是一些支持向量,将物体表示为一些特征向量,实际当中学到的分类器就是一些系数向量,这些系数向量和特征向量做一个加权的话可以得到分类分数,对分数进行阈值判断,就可以判断是否是某一类。 Decision Tree 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表一种类别。 用从树根到树叶的二叉树来举个简单例子。假如从树根进来有个二分类,我们需要区分它是人脸或者是非人脸,左边是非人脸,右边是人脸。当我进入第一个二叉树分类器节点判断,如果是非人脸的话直接输出结果,如果是人脸候选的话进入下一层再做进一步的分类。通过学习每个节点的分类器来构造决策树,最终形成一个强分类器。 Random Forest 通过对决策树进行Ensemble,组合成随机森林更好的提高分类或者回归精度。假设刚刚提到的决策树是一棵树,那么现在我想学十棵树,每个树采用不同的输入或者分类准则,从不同维度来做分类。以十棵树的分类结果进行投票,8个树认为这个框是人脸,2个认为是非人脸,最终输出为人脸。投票策略可以更好地降低分类误差,在实际场景中得到广泛应用。 从传统方法到深度学习 众所周知,检测算法的演变分为两个阶段,一个就是基于传统特征的解决方法,另外一个就是深度学习算法。在2013年之前传统方法还算是主流,大家都是基于传统的feature优化检测方法。然而,在2013年之后,,整个学术界和工业界都逐渐利用深度学习来做检测。 实际上,这是由于深度学习在分类上超越了很多传统的方法,在2012年的ImageNet上,Hinton两个学生就曾用ConvNet获得了冠军。与传统方法相比,深度学习在分类精度上提高很多。起先,深度学习只是在分类上有非常明显的提升,之后也带动了检测这一块。从物体分类到物体检测,利用了深度学习比较强的feature的表达能力,可以进一步提高检测的精度。 检测方面有两个比较典型的公开测试集,PASCAL VOC和COCO。从这两个测试集上可以看到传统的检测方法和深度学习的检测方法在精度上的差别非常的大。传统的物体检测方法因为其特征比较弱,所以每类都需要训练一个检测器。每个检测器都是针对特定的物体训练,如果有20类的话,就需要跑20次前向预测,相当于单次检测的20倍,作为一个2C端产品,时间消耗和精度性能使得传统方法检测的应用场景不是很多。 目前最新的检测都是基于深度学习的方法,最开始的RCNN,它算是深度学习应用到检测里的鼻祖,从起初它平均49.6的精度记录,到如今已然提升了快40个点。而在传统的方法中SVM-HOG,它的精度才到了31.5,和深度学习相比低了很多。 值得注意的是,传统检测方法随着数据量增大检测性能会趋于饱和,也就是说随着数据量的增大,检测性能会逐渐提高,但到了一定程度之后数据量的提高带来的性能增益非常少。而深度学习的方法则不同,当符合实际场景分布的数据越来越多时,其检测性能会越来越好。 深度学习的物体检测 (责任编辑:本港台直播) |