人工智能课第二次

AI Car 第二次展示报告

实现的功能

功能介绍

目标跟踪算法

理论基础

我们的算法是基于光流法的。

光流法是一种图像中物体运动的表达方式,即目标、场景或者摄像机的运动或者任意两者的运动所导致的两帧图像之间目标的运动。其运动的判定方法是判断两张图里面相似像素数据的时域和相关性等来获取图片中的运动关系。想要让这个方法可用,需要在亮度、时间与空间这三方面满足条件,具体而言:

  • 亮度:相邻两帧像素强度不发生变化或者变化较少,这个前提是为了保证算法能够识别出相邻两帧图片中相同物体的像素
  • 时间:相邻两帧之间时间较短,这个前提是为了使得物体运动变化较小,因为相同像素的识别是基于一定是时域与空间的,并且也能适当减少亮度的变化
  • 空间:相邻像素具有相似运动,这个前提是为了使得算法能够找出物体的整体运动方向,对相邻空间的像素点运动方向进行一个聚合操作。

在目标检测中,光流法假设图像中的每个像素点都有一个速度矢量,于是就形成一个运动矢量场,在某一特定时刻,图像上的点就与实际物体上的店一一对应,根据这些速度矢量特征,可以对其进行运动检测。若图中没有运动目标,那么光流矢量在整个图像区域中的变化是连续的,但有运动物体存在时,目标和背景中就有着相对运动,这两者的矢量运动方向必然存在着不同,由此就可以检测出运动物体的对应像素,从而得出运动物体识别结果。

算法实现

本算法实现是基于论文Two-Frame Motion Estimation Based on Polynomial Expansion,具体描述如下:

对于每一张图片,都能用如下公式将其表示出来:
[图片上传失败...(image-791a16-1514163523826)]=x{T}A_{1}x+b_{1}{T}x+c_{1})
同理,对于下一帧图片,我们假设其函数表达式不变,只是其中每个像素点发生了位移,那么就得到下式:

f_{2}(x)=f_{1}(x-d)=(x-d)^{T}A_{1}(x-d)+b_{1}^{T}(x-d)+c_{1}
f_{2}(x)=f_{1}(x-d)=(x-d)^{T}A_{1}(x-d)+b_{1}^{T}(x-d)+c_{1}

拆开合并同次项可以得到:


f_{2}(x)=x^{T}A_{1}x+(b_{1}^{T}-2A_{1}d)x+d^{T}A_{1}d-b_{1}^{T}d+c_{1}

变换成 [图片上传失败...(image-e951d6-1514163523826)]) 的形式可以得到:
[图片上传失败...(image-ae44ef-1514163523826)]=x{T}A_{2}x+b_{2}{T}x+c_{2})

二次项系数显然没有变化,我们的核心在于一次项系数的改变。由于两式的对应系数要相等,对于一次项系数,我们可以建立如下恒等关系:
[图片上传失败...(image-7bee4-1514163523826)]
化简得:
[图片上传失败...(image-54a459-1514163523826)])

对其进行变量替换可以得到:

![A(x)d(x)=\Delta b(x)]=(https://latex.codecogs.com/gif.latex?A(x)d(x)=%5CDelta%20b(x))

但是,由于实际图像的变化并不完全满足*f(x)*的函数关系,因此,我们的目标在于使等式左右两边的差值最小化,具体而言,也就是最小化下式:

\sum_{\Delta x\in I}\omega (\Delta x)\left | A(x+\Delta x)d(x)-\Delta b(x+\Delta x) \right |^{2}

其中的各项系数均是可以直接从图片信息中计算出来的,对于权重,使用常用的机器学习中的梯度下降法等就可以将其求出来。

实现效果

[视频地址](https://github.com/KunlinY/AICar/tree/master/2 %20Presentation)

未来展望

  • 实现语音识别功能
  • 实现自动化识别物体功能

你可能感兴趣的:(人工智能课第二次)