人工“智能”图像识别 参考论文
人们很容易知道,图1中四张图片其实来自同一张爱因斯坦的肖像画,第二张图片在尺寸上有变化(为后续行文方便,稱其为苗条爱因斯坦),第三张图片加了个小点缀(称为灵感爱因斯坦),第四张布满了白色噪点(称为混沌爱因斯坦)。人的视觉和头脑很容易就能在一大堆无关的图片中,挑选出这几张图像,并把不完全相同的爱因斯坦归于一组,计算机能做到吗?本文设计了一个活动,以计算图像相似程度为主线,通过“应用—操作—讨论”这三步,探索计算机“辨图”的奥妙。
● 应用——专业找图
TinEye是一个在线的反向图片查找工具,地址是www.tineye.com,用户上传图片,该工具负责找出图片的原始出处。将以上四张爱因斯坦的肖像画上传后,这款工具就能找到相近的爱因斯坦肖像(如图2)。
TinEye能认出图1中这四张图都是“爱因斯坦”吗?其实不能。但计算机能借助算法,判断不同图像之间的差异。或许大家头脑中会冒出诸如“深度学习”“神经网络”这样的名词来,其实要实现上述判断,并不需要用到那些“高端”功能,用感知哈希算法就可以实现了,为了解释感知哈希算法最基本的原理,下面笔者就利用图像编辑工具,一步一步手工进行图像识别,看看计算机是如何判断图像相似程度的。
● 操作——手工辨图
先找到某个图像编辑工具,本文用小巧简单的“易笔易画”软件来举例,大家也可以使用自己熟悉的图像编辑工具来做这个实验。打开爱因斯坦图像,然后缩小到8×8像素,注意这里不要按比例缩小,不管什么形状的图片,都缩小成正方形,虽然缩小图片后许多像素被抛弃,但却仍然保留了一些特征,并且可以发现,即便不同的爱因斯坦图片尺寸比例不同,缩小成正方形后,这些图片看上去就非常相似了(如图3),这正是不同比例图像之间能进行相似程度比较的关键,没想到其实那么简单吧。
接着,是将彩色位图转化为灰阶图像。不同的模型有不同的转化算法,这里就不展开具体讨论了,只用软件默认的转化功能来进行转化。以“易笔易画”软件为例,点击“图像—黑白照”菜单项即可。这么一来,在比较图片时就不必纠结细小的色彩区别了。以“原始爱因斯坦”图像为例,做成8×8像素的灰阶图像后(如图4),虽然已经完全看不出是人脸,但仍然保留了原始图片的一些特征。
最后,是获得灰阶图像的图像指纹。图像指纹其实是一个符号串,其生成方法大致为:首先计算所有像素灰度值的平均值,然后观察每个像素,如其灰度大于等于平均值则记为1,小于UzVjWpVtuTa3Ur/sheRHRP5ugJKA/9EZfIOZhPgc5E0=平均值则记为0,将这些二进制数字连起来,就成了图像指纹。
完成上面这步工作需要编写程序实现,但为了更便捷地体验效果,笔者使用了一种偷懒的计算方法:
首先,获得近似的平均灰度:将图片转为半影调图片,在“易笔易画”中,点击菜单“效果—色彩变换—半影调”即可,数一下空白格子,将空白格子数除以64。以“原始爱因斯坦”图像为例,半影调化后(如图5),数一下就知道,其中有32个白色格子,除以64后值为0.5(0.5表示图像总体亮度的程度)。
其次,回到“原始爱因斯坦”灰阶图像,将该图进行阈值处理。阈值阀门的位置设在0.5比例处,在“易笔易画”中,就是设置为256×0.5=128(如图6)。
最后,设黑色格子为0,白色格子为1,于是就可知图像指纹为:0000000000011100001111110010111100000111000111101010100000000100。
用这种方法生成图像指纹,虽然精确度不高,但足以说明问题。实际应用中的算法考虑了多方面的问题,其具体实施过程要复杂得多。有兴趣的朋友可以进一步深入学习。其他图片也可以照此操作得到图像指纹(如图7)。
苗条爱因斯坦:0000001000011100001111110011111100000111100110110010110000000100;灵感爱因斯坦:0000000001111100011111100010111100000111000110100010100000000100;混沌爱因斯坦:0000000010011100101101110010011110010111101110110010000001000101。参考论文
一般情况下,图像指纹越相似,则图像也越相似。观察上面的图像指纹,苗条爱因斯坦和灵感爱因斯坦这两张图片,与原始图片的相似度都有百分之九十以上,而混沌爱因斯坦与原始图片的相似度只有百分之八十以上。若是换成一张牛顿的图像进行同样操作(如上页图8,牛顿肖像画的图像指纹为0000000000110110000111100001111010011110001110000011111000111110),相似度就只有百分之六十五。
● 讨论和尝试——智能识图
上述算法很简单,但局限性也很大,下面一些问题值得讨论,也可以实际设计一些实验来验证一下自己的想法是否正确:
①怎样在爱因斯坦原图上做一些变动,让感知哈希算法变得无能为力呢?例如,在图像边缘勾上一条和背景颜色反差很大的边框。
②能否找到或亲手绘制一些和爱因斯坦完全无关的图片,让感知哈希算法认为这些图片和爱因斯坦肖像相似程度很高?
③感知哈希算法只能判别图形的相似程度,无法判断图像内容的相似程度,它无法知道那个站在写满物理学公式的黑板前的爱因斯坦,和那个拉着小提琴或者顽皮吐着舌头的爱因斯坦是同一个人。那么,当前还有哪些工具可以帮助人们判断图像内容的相似程度呢?