第十二章目标识别Lecture12ObjectRecognition目标识别怎样识别图像中物体,如汽车、牛等?目标识别的应用人脸检测与识别难点之一:如何鲁棒识别?类内差异(intra-classvariability)类间相似性(inter-classsimilarity)难点之二:计算量大一幅图像中像素个数多,目前每秒约产生30G像素的图像/视频数据。-Google图片搜索中已有几十亿幅图像-全球数字照相机一年产生180亿张以上的图片(2004年)-全球一年销售约3亿部照相手机(2005)人的物体识别能力是强大的-灵长类动物约使用大脑皮层的一半来处理视觉信息[FellemanandvanEssen1991]-可以识别3,000-30,000种物体-物体姿态可允许30度以上的自由度。难点之三:如何在小样本条件下学习物体识别方法检测(detection)vs.不检测表示(representation)-颜色、纹理、边缘、梯度、局部特征、深度、运动等等。分类(classificationorcategorization)-K近邻(KNN)-神经网络(NN)-支持向量机(SVM)-Boosting(Adaboost等)-隐马尔科夫模型(HMM)-其他生成学习(Generativelearning)vs.判别学习(discriminativelearning)生成学习vs.判别学习两种分类器学习模式生成学习---目标是学习到符合训练数据的类别模型---如EM算法(MaximumLikelihood)判别学习在训练阶段即考虑类别之间的判别信息包括SupportVectorMachines(SVMs),Boosting,MinimumClassificationError(MCE),MaximumMutualInformation(MMI),LagerMargin(LM),andetc.判别学习算法比生成学习算法表现出更好的分类性能。判别学习方法131.物体检测Car/non-carClassifierYes,car.No,notacar.基于二分类器14物体检测Car/non-carClassifier在复杂背景下,通过滑动窗口(slidingwindows)搜索感兴趣的物体。物体检测Step1.获取训练数据Step2.提取特征Step3.训练分类器Step4.利用分类器进行检测人脸检测(Facedetection)Viola-Jones人脸检测算法(基于AdaBoost)Viola-Jones人脸检测算法(2004)滤波器设计AdaboostAdaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用adaboost分类器可以排除一些不必要的训练数据特徵,并将关键放在关键的训练数据上面。边缘特征线性特征中心环绕特征对角特征训练数据集特征提取特征提取算法思路1()(,,)0fxhxf其他分类器训练--单个弱分类器弱分类器中,x表示检测子窗口,f表示特征,为阈值,对于每一个特征,训练一个弱分类器h,就是确定最佳的阈值,使得弱分类器对所有样本的分类误差最低。具体过程如下:1、对于每一个特征f计算所有训练样本的特征值;2、将特征值排序;3、对排好序的每个元素计算全部正例特征值和T+计算全部负例特征值和T-计算当前元素前所有正例特征值和S+计算当前元素前所有负例特征值和S-4、计算分类误差:为取最小时对应的元素。1()(,,)0fxhxf其他e子窗口的特征1kF1kI子窗口的特征2kF2kI子窗口的特征kjFkjI子窗口的特征knFknIS+T+T-S-按照特征f的特征值F排序选定位置1()(,,)0fxhxf其他算法思路分类器训练--单个强分类器1,(1){0}hx...弱分类器2,(1){0}hx强分类器T,(1){0}hx弱分类器1算法思路分类器训练--单个强分类器增加权重算法思路分类器训练--单个强分类器弱分类器2算法思路分类器训练--单个强分类器增加权重算法思路分类器训练--单个强分类器弱分类器3算法思路分类器训练--单个强分类器最终的分类器是由很多个弱分类器线性组合而成1()()TttTthxHxsign算法思路分类器训练--单个强分类器Adaboost学习目标:选择能够最有效地区分人脸与非人脸的矩形特征及其阈值Adaboost组合弱分类器(weaklearners),得到更为精确的集成分类器(ensembleclassifier)。弱分类器:性能仅比随机分类稍好根据矩形特征定义弱分类器:Adaboost算法步骤初始给每个训练样本以同等权重循环执行以下步骤:根据当前加权训练集,选择最佳弱分类器提升被当前弱分类器错分的训练样本的权重按照各弱分类器分类精度对其加权,然后将各个弱分类器形成线性组合,得到最终分类器。Viola-Jones算法中的AdaBoost每一次boosting迭代如下:评价每一个样本上的每一种矩形特征为每一种矩形特征选择最佳分类阈值选择最优的矩形特征及其阈值组合改变样本权重计算复杂度:O(MNT)M:特征数,N:样本数,T:阈值数级联分类器(CascadingClassifiers)训练级联分类器1()()TttTthxHxsign1H2H3HTH非目标非目标非目标非目标目标算法思路边缘特征线性特征中心环绕特征对角特征训练数据集特征提取第1级第N级第2级级联分类器分类器训练--级联分类器最终的分类器以XML形式输出,在进行目标识别时可以直接调用,不需要多次训练Viola-Jones检测算法-总体流程用5K正样本,350M反样本学习得到38层(共使用6060个特征)级联分类获得实时性Viola-Jones人脸检测结果Viola-Jones人脸检测结果Viola-Jones人脸检测结果