找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 204|回复: 0

[【其它】] 计算机图像识别

[复制链接]
发表于 2016-6-7 18:30:04 | 显示全部楼层 |阅读模式
每当计算机拍摄一张照片时(你也可以认为计算机是数码相机),它都会把这种模拟信号转换成数字信号并记录到计算机储存中,而这个数字信号在显示缓存中都是一种二维矩阵(二维数组),让计算机储存一张图片就相当于让计算机储存了一个二维数组,上面提到小孩子记住“0”的长相,那么我们就可以说计算机记住了这张图片的长相信息,接下来,计算机怎么认识这张图片是“0”呢,还记得上面我说过:“这是零”吗,没错我们是以标记的方式给小孩子标出“这是零”,对待计算机也是一样的,我们给计算机刚储存的这张图片打个标记“0”,等于就是给这个二维数组一个标记“0”,二维数组也可以看成是一个(x,y)的平面坐标系,每个坐标点代表一个像素位置,也就是说不同图片的相同坐标点的值是不一样的,这样当我们再给一张图片时,经过计算机比对每个坐标点的值是否一样而判断出这张图片是不是“0”,假设给出的图片经过数字化后,每个坐标点的坐标值和已经储存的坐标值完全一样,那么我们是不是可以肯定这是同一张图片,就是“0”呢!

  这里有人会质疑:“如果这个数字了‘0’是手写体呢?”,我们知道每个人的书写方式不一样,那么写出的0会是千奇百样的,如果让计算机识别这么多种“0”的话,很显然是做不到的,因为每个“0”的坐标点上的值肯定有所不同,如果一定要让计算机识别的话,是不是我们人类一定要统一一个书写“0”的标准呢?

  这个质疑就是我们现在要解决的问题,怎么要让计算机识别手写体“0”呢?我所了解到的也许就只有两种方式,一种就是直接让计算机录入各种各样的“0”,就是所谓的穷尽法,然后在让计算机一一比对,很显然这种方法最简单但也最不实用,因为相同的人都会写出各种各样的“0”,地球上有60多亿人,这样下去是永远穷举不完的,我们完全没必要为了一个0,而录入这么庞大的数据。

  第二种方式,也会录入大量的数据,但只是像取样一样的,不会全部穷举,而是根据样本提炼出一个特征,我们现在所听到的神经网络、深度学习等等算法都是第二种方式,在这里我大概讲一下第二种方式的原理思路,而不会具体去谈方法,因为知道原理比知道方法更重要,学会原理你可以创造方法,而学会方法你只是知道一种方法而已,反而会束缚你更深入的研究。

  上面我们提到过,图片可以处理成一个二维数组而且可以用平面坐标系来表示,如果我们把这个二维数组展开成一个数列,例如一个28*28像素的图片,展开成一个784个数字组成的数列{Xn},数列的下标和784个坐标点一一对应,数列数字值和坐标值一一对应,就像这样{X1=0,X2=0,X3=123,……X784=0},并且把这个数列标签打为为“0”,建立一个自变量为该数列{Xn}和因变量为y的函数关系g({Xn}),这个函数关系大家可以根据实际情况或者自身理解水平建立,比如建立一个线性关系的一次多元方程y=W1*X1 +W2*X2+……W784*X784,然后导入样本数据,就是已知X和Y值,然后求出各种系数W或者说权重值,通过大量的数据计算得出各个自变量的权重值,这样我们是不是已经知道了这个函数关系g({Xn})呢!,那么下一步就是给计算机一个新的数列,让计算机通过已知的函数关系g({Xn}),把求出的Y值和已经标记过的Y值进行比对看是否一致(当然了要容忍得出的y值存在适合的误差,不然就又成了完全的精准匹配),如果一致,那么这张图片就是“0”,反之不是。

  以上这种提取数据特征的思路不仅可以应用于处理图片,还可以应用到视频信息,音频信息,文字信息等等。

  我们都知道无论什么样的数据在计算机那里都是二进制数据,文字也是一样的。

  举个简单的例子,我们把“1.我很爱你,2.我非常爱你,3.我特别爱你,4.我就是爱你,5.我就是非常非常爱你”这个样本都标记为:“我爱你”,也就是说这些话都是“我爱你”的意思,但是计算机不知道,你怎么让计算机知道这件事呢?

  应用上面的线性模型关系,我们现在把上面的文字词组用十进制数字来表示:{我(X1):1,爱(X2):2,你(X3):3,非常(X4):4,很(X5):5,特别(X6):6,就是(X7):7},很明显我们要的结果就是{我爱你:123},建立一个线性方程:y=W1*X1 +W2*X2+……W7*X7,通过上面讲过的说法,我们导入多组数字样本{X1=1,X5=5,X2=2,X3=3}=我很爱你,{X1=1,X4=4,X2=2,X3=3}=我非常爱你(X后面数字代表在公式中的位置,当不存在Xn时,值默认为0,这里没有区别汉字本身的位置)……,训练计算机,最后经过计算机不断的计算(已知X值和Y值,求W权重值)得出W1=100,W2 =10,W3=1,其余W权重参数等于0,也就是这样:y=100*X1 +10*X2+1*X3+……0*X7,当导入新的数据“我就是很爱你”时(这个数据是上面样本没有的),经过计算机机算得出y=123,那么这句话就是“我爱你”的意思!

  总之计算机学习知识的模式和人类是非常地相似:记录数据样本,提取样本特征,然后根据已知特征去判断新的知识是否和已知的知识数据一致(比对),如果一致那么这条新的知识就是属于某个已知标签类。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-12-23 13:49 , Processed in 0.201544 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表