可视光精确制导技术(视觉识别技术在制导系统里的可能应用)
可视光精确制导技术(视觉识别技术在制导系统里的可能应用)虽然不如专门训练的深度学习算法,但在大多数场景下也是可以满足应用的。这个算法在OpenCV里有实现,对各种背景下的人脸识别率还是很高的。某大学的才子吴谢宇犯罪之后在重庆机场被捕,就是被人脸识别系统拍到了一张正脸照片。1,人的脸部区域的检测,以现有的CV技术,在大量的背景中识别出人脸区域并不难,常用的技术是基于Haar小波的级联分类器(Haar Cascade detector)。
计算机视觉(CV)这个领域,大概起源于40年前的美国。
麻省理工学院(MIT)的大牛霍恩的那本“机器视觉”教材已经讲了30多年了,成书于1980年代。
不过视觉识别的最新进展开始于2006年,辛顿在这年创立了深度学习,并在2016年后迅速在工业界发展了起来。
CV领域的主要技术之一就是人脸识别。
某大学的才子吴谢宇犯罪之后在重庆机场被捕,就是被人脸识别系统拍到了一张正脸照片。
1,人的脸部区域的检测,
以现有的CV技术,在大量的背景中识别出人脸区域并不难,常用的技术是基于Haar小波的级联分类器(Haar Cascade detector)。
这个算法在OpenCV里有实现,对各种背景下的人脸识别率还是很高的。
虽然不如专门训练的深度学习算法,但在大多数场景下也是可以满足应用的。
人脸识别的效果
2,根据人脸区域进行身份识别,
当把人的脸部区域检测出来之后,下一步就是具体去识别这是谁的脸。
这一步依赖于深度学习所提取的人脸特征。
只要使用一个多层的卷积神经网络(CNN),把人脸图像映射到一个128维的特征向量,就可以对不同的人脸进行身份分类:把同一个人的照片归为一类,把不同人的照片区分开。
使用的样本人数越多、每个人的照片数越多,这个分类的精确度就越高。
人的照片可以是个256x256像素的图像,直接用语言去精确描述两个人的面部有什么区别是很难的。人可以一眼看出不同的人来,但难以用语言或数学公式把这种差异精确描述出来。
但人可以构造一个数学映射:f(人脸照片X) ---> 128维特征向量Y ---> 人的身份编号N。
从人脸照片到特征向量的映射,是一个非线性的映射。它没法给出解析解,但可以用神经网络去近似求解。
而从特征向量Y到人的身份编号N的映射,是一个线性映射:AY b ---> N。
其中N是与人数相等的一个向量,是哪个人就把哪一位置1,把其他位置0,类似这样[0.... 1 .... 0],而不是把它映射到0-N这样的范围较大的一维数字。
让网络的输出范围在0~1之间可以减少模型的波动,避免不收敛。
因为后半部分是线性的,也就是说特征向量Y是线性可分的。既然是线性的,当然要遵守叠加原理。
所以把眼镜的特征向量与人脸的特征向量叠加,然后再通过反向的网络把它恢复成照片,就可以把眼镜加到照片上了[呲牙]
既然是线性可分的,那么把向量的长度归一化之后,类似的特征向量就该指向类似的方向,所以测量向量夹角的余弦距离就可以当作分类器。
cos(Y0 Y1) > 0.9就可以判断为同一个人的照片。
夹角是0时为同一个方向,这时余弦是1,正弦是0。
3,运动跟踪,
一旦被制导系统抓到了正脸照片,再想逃过打击是几乎不可能的,因为还有一个算法叫运动跟踪。
即识别目标照片上的极值点作为特征点,然后不断根据目标的运动情况进行特征匹配。
学过高数的都知道,一阶导数的有可能是极值点,但同时二阶导数的一定是极值点。
在线性变换之下,极值点变换之后还是极值点。它是变换的一个稳定点。
物体的运动当然也是一个线性变换。
所以,图像上的极值点可以用来作为运动跟踪的特征点。
而获取特征点的算法,都跟图像的海塞矩阵(广义的二阶导数)有关。
著名的SIFT算法、SURF算法,都是基于海塞矩阵的。
完成这一步之后,就可以认为目标被制导系统锁定了。
之后无论它怎么运动,只要智能制导系统实时更新特征点,就可以一直锁定着它。
除非他的加速度(过载)超过武器本身,否则他很难逃脱。
人一旦被制导炮弹跟踪,那是几乎不可能逃脱的。
我不知道美国给乌克兰的制导炮弹是不是这么个算法,但是按照这个算法思路是可以制导跟踪的。
等哪天我给个OpenCV的跟踪效果图。
虽然程序员老是讽刺算法工程师是调参侠,但技术行业就喜欢自黑,外行可不能当真[捂脸]