system: [SYSTEM]

user: 2. 物体自动识别系统的实现 系统的实现需要TLD算法和Speech SDK相结合，前者是完成核心的物体识别的功能，后者将作为人机交互的功能实现的平台。 图1. 物体自动识别系统框架 图2. 语音识别流程 2.1. 物体识别 根据TLD算法框架，假设图像与图像之间的移动距离有限且目标物体仍在计算机的视觉区域内，追踪器用来估算两幅图像之间目标物体的运动；识别器通过扫描目标图像，并观察与学习到的数据来定位目标物体的位置；由于识别器在进行物体识别时可能产生错误，学习部分通过观察追踪器和识别器的性能来估算识别器产生的误差，生成新的训练样例来避免以后产生相同的错误。在学习部分的作用下，识别器可以生成更多的对象特征以将目标物体与背景区分开。 2.1.1. 追踪器 在追踪器中，使用基于带错误检测的Midian-Flow追踪算法。Midian-Flow追踪算法通过边界框来表示目标物体并且估计它在连续图像之间的运动。追踪器通过估计对象边界框中点的位移来估算它们的可靠性，然后选举出其中最可靠的50%的点。该算法采用的是Lucas-Kanade追踪器，只需要知道给定的若干个追踪点，追踪器会根据这些像素的运动情况确定这些追踪点在下一帧的位置。 追踪点的确定则需要先在上一帧的物体周围框产生均匀点，同时采用Lucas-Kanade追踪器追踪这些点直到下一帧，然后再反向追踪到上一帧，计算FB误差并筛选出FB误差最小的一半点作为最佳追踪点。最后根据点的距离和坐标变换计算下一帧的框图的大小和位置。效果如图3所示。 在检测错误时Midian-Flow追踪算法假设所有的物体都是可见的，这样的话当物体移动到视野外面时，就会产生检测错误，从而退化追踪器的性能。为了标识出这种情况，令d i 为Midian-Flow追踪器中单个点的位移，d m 为位移的中值，当 值大于10个像素时，就认为追踪器产生了一个检测错误。通过这种策略，可以在物体高速移动的情况下检测到错误。当错误被检测到时，追踪器就不会产生任何的边界框。 2.1.2. 识别器 识别器主要是由方差滤波器、集成分类器和最近邻分类器组成的级联分类器，用来识别目标物体在图像中的位置，确定追踪点的流程如图4所示。 1) 候选区域为图像中目标可能出现的任意区域，候选区域只有通过了方差滤波器、集成分类器和最近邻分类器的判断才会被判定为目标区域，否则就会被认为该区域不存在目标物体。 2) 方差滤波器通过计算候选区域的方差与原有目标区域的方差，并将其作比较，把方差小于原目标区域方差一半的候选区域排除。一个区域p的灰度值方差可以用 来表示，其中期望值 可以由恒定时间内使用集成图像来测得。通过这种方式，可以大大减少对图像区域的检测。 3) 通过方差滤波器得到的图像区域会在这部分被进一步判断。集成分类器由n个基本的分类器构成，每一个分类器i负责区域内的像素比较，并产生相应的后验概率 ，其中 ，然后集成分类器对这些后验概率求均值。如果该图像区域的均值大于50%，则认为该区域存在目标物体。 图3. 选择追踪点 图4. 选择追踪点 其原理是随机蕨分类器，初始化随机蕨分类器，遍历扫描整个图像，然后对样本进行分类，用 表示，设 为输入样本的二元特征集，则样本的所述类别如(2.1)式： (2.1) 式中，C表示类的随机变量，则有 (2.2) 设先验概率 为均匀分布，(2.2)式中分母部分与类别无关，则将(2.1)化简 (2.3) 二元特征f j 的值取决于样本中在分类器训练时随机生成的两像素位置 和 的灰度大小 ， 比较的结果，即 (2.4) 除了需要大量的特征来保证分类结果外，为了保证 之间具有足够的相关性并减少存储，假设不同组的二元特征之间相互独立，组内二元特征之间具有相关性，则(2.3)式的条件概率近似为 (2.5) 式中 表示第m个蕨，(m， j)表示范围为 的随机函数。 如从图5茶壶中任意选取两点X和Y，比较两者亮度值，若X亮度大于Y则特征值为1，反之为0，每选取新的一对就是一个新的特征值，蕨的每个节点就是对每一对像素点进行比较。同一类的样本经过同个蕨就可以得出该类的结果，不同类的样本经过同个蕨则得到不同的先验概率分布。在对分类器进行训练后，利用(2.2)式就可以求出新样本的分类。 4) 最近邻分类器的主要思想是将要测试的记录与训练集的每条记录计算距离，然后选择距离最小的K个，将K个记录中的类标号的多数赋给该测试记录，如果所有的类标号一样多，则随机选择一个类标号。 利用最近邻分类器的思想，在通过集成分类器判断目标存在的区域中，取图像元 和 的相似度，N为相关系数，S取值范围为[0，1]之间 图5. 随机蕨取点 (2.6) 分别求正负最近邻相似度 (2.7) (2.8) 如果一个图像区域的相对相似度 ，其中 ，则图像区域认为存在目标物体，并将其加入到最近邻分类器的模板中。值越大则代表相似度越高。 (2.9) 若最近邻分类器中的模板数量超过了一定的阈值，则选择随机舍弃一些模板。 2.1.3. 学习模块 学习模块所采用的机器学习方法是P-N学习，即通过P-N学习机制来更新随机蕨分类器。作为一种半监督的机器学习算法，它针对识别器样本分类时产生的漏检和误检两种错误进行纠正。P-N学习的流程如图6所示。 首先要产生样本则需要用不同尺寸的扫描窗对图像进行逐行扫描，每在一个位置就形成一个包围框，包围框所确定的图像区域称为一个图像元，图像元进入机器学习的样本集就成为一个样本。扫描产生的样本是未标签样本，需要用分类器来分类，确定它的标记。 P-N约束对未标记的样本进行标记分类，之后训练分类器。正约束是指将未知样本标记为正样本的标记条件，这里将靠近轨迹附近的样本标记为正样本。负约束是指将未知样本标记为正样本的标记条件，这里将远离轨迹附近的样本标记为负样本。通过正负约束的相互作用来提高样本标记的准确性。 设x为特征空间X中的一个样本，y表示为对应标记空间Y={−1，1}中的一个标记，那么可以使用集合空{X，Y}来表示样本空间和对应的标记。P-N学习根据已标记的样本集合{X1，Y1}来建立分类器，并训练样本，使用没有标记过的数据X u 来引导分类器工作，提高分类器性能。 P-N学习的主要步骤如下： 1) 对已有的标记样本训练出一个初始的分类器。 2) 利用分类器对未标记样本进行分类判断。 3) 识别出分类判断结果与结构约束不相符的样本，并重新对这些样本进行标记。 图6. P-N学习流程图 4) 将重新标记后的样本加入到训练集中，并再次训练分类器。 5) 跳转至步骤1)循环执行。 至此，识别结果已经可以基本正确的显示，当通过语音识别获取校验信息时，根据校验信息重新训练得到新的分类器。 2.2. 语音识别 由于语音识别模块采用的是Speech SDK的框架，其已经提供了各种接口来实现不同的语音功能，包括语音识别引擎、语音识别上下文、语法规则、识别结果及语音合成等等 [ 13 ] 。针对本系统本文着重处理语音校正部分。 2.2.1. 语音识别特征提取 由于输入的信号是时域信号，时域特征不够明显，需要转化为频域信号。语音识别是为了实现单词的识别效果，进而实现语句的识别效果，需要把时域信号分割成时间片进行分析才能达到比较精确的识别效果。即，每个时间片的时域信号都进行傅里叶变换转化为频域信号。另外，由于人耳对声音频率变化的感知不是线性的，而是基于以下函数模型： (2.10) 2.2.2. 语音识别训练集和测试集 训练集是用来训练的语音模板，训练的结果是形成一个识别模型。测试集是用来测试模型准确度的语音模板。测试集所占比例通常大于训练集才能保证识别模型足够准确。判断识别模型是否准确的方法之一是，多次随机生成相同比例的测试集和训练集，求识别错误率的平均值。对多个测试集和训练集的比例进行测试。不过，为了避免出现过分类，我们选取测试集：训练集为1:1。 2.2.3. 语音识别系统模板 针对本项目，系统只需要识别“识别结果正确”和“识别结果错误”两种结果。由于考虑到不同的人语言的频率、音调不同，我们对每一种分支设定多个模板，然后再把这些模板集合成一个模板。上文所说的测试集和训练集中的任意一条模板都是集合成的模板。首先，确定模板被分成几个state。我们的语音长度足够大，模板被分成18个，并将训练集模板平均分成段，求这些模板的所有段的平均值形成平均模板。然后，对每一个原始的训练集模板，比较原始训练集模板和平均值模板，重新确定训练集模板中feature的state，这样就重新调整了训练集模板的states。最后再求所有调整过的训练接模板的所有states的平均值获得识别系统的识别模板。 2.2.4. 语音识别系统识别算法 识别系统采用DP的方式实现。这种识别系统是基于模板距离比较来分离出的分类器。这种距离计算依赖于单高斯HMM模型。假设模板被分成多个段，每个段被赋予一个state，某个段的每个feature属于该state的概率服从单高斯分布。假设这个概率的值为p，那么这个feature跳转到下一个state的概率为1-p即转移概率。对该值进行log计算并取负值结果为edge cost。另外还有一个值为node cost。node cost 是指输入测试模板的feature和识别系统模板state比较计算出来的距离。这个距离是高斯距离，即，考虑到state的方差。