都说人工智能接下去会改变世界,AlphaGo已经横扫全世界的围棋大师,德州扑克机器也能战胜人类,《未来简史》里也描述着人工智能是如何进行第三次工业革命的。一切的变革都来自于深度学习和云上无穷的计算能力。所以世界第一第二大云计算公司微软和亚马逊都推出了人工智能的服务,一个叫Microsoft Azure Cognitive Service,另外一个是AWS Amazon Artificial Intelligence,能够帮助大家识别图像,人脸语音,机器学习等等。\r\n\r\n今天我们就来看看两大平台的图像分析功能,是不是能够达到真正商用的标准。当然如果要进行完成的测试,需要大量的数据集。我的做法比较简单,直接使用Azure提供的测试图片和Amazon提供的测试图片,分别看一下效果,这样可以有一个非常直观的感受。\r\n\r\n我们只测试两个功能,一个是微软认知服务的”Analyze an Image”,里面可以提取图像的特征,是否有人脸,是否是成人照片等等。这个功能对应了AWS Rekgnition的Object and Scene detection以及Facial analysis功能,所以我们的测试方法是将一张图片,分别在Azure认知服务和AWS Rekognition里面进行分析,最后得到结果。\r\n\r\n在处理之前,我们先看一下两个API的接口,首先是微软认知服务,Analyze。https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze[?visualFeatures][&details][&language]。这个API支持请求获得图像的类别(Categories), 标记(Tags),描述,是否有人脸,图像类型,颜色和是否是成人,种族图片。此外还支持是否在里面有名人,图像的整体颜色,前景背景色等等。\r\n\r\n\r\n\r\nAWS的API叫DetectLabels,参数相对简单,只有MaxLabels和MinConfidence,这个API会返回图像中的一些标签和他的置信度,例如一张照片里是否是风景,或者有没有人,所以这个接口相当于微软Analyze的一个子集,让visualFeatures = Tags,Categories就相当于调用DetectLabels。\r\n\r\n\r\n\r\n另外一个API叫DetectFaces,他可以获得人脸的位置,不过更有趣的是可以获取表情,性别,是不是戴眼镜,眼睛是不是睁开,有没有胡子,姿势等等。\r\n\r\n\r\n\r\n微软的analyze API里面只有年龄和性别,没有那些眼睛胡子的信息,而表情的内容不在这个API里,在另外一个叫Recognize Emotions的API里。\r\n\r\n\r\n\r\n那么我们来看一下测试的情况。\r\n\r\n1,一个在游泳的男人。\r\n\r\n\r\n\r\n首先是微软认知服务的分析结果:\r\n\r\n\r\n\r\n可以分析出,这张图是一个男人在水池里面游泳,置信度比较高的标签有水,运动,游泳,池子,水里的运动。不是成人图像,也不是种族图像,而这个人的年龄是28岁,男性。\r\n\r\n另外调用人脸分析可以的结果,可以看到这个人的表情是中性。\r\n\r\n\r\n\r\n接下来我们来看看AWS的结果。\r\n\r\n\r\n\r\n所以AWS提供了下面几个标签,People, Person, Human,Sport,Swimming, Water, Pool, Leisure Activities。看上去还不错,和Azure的结果类似。\r\n\r\n再看看人脸识别的结果:\r\n\r\n\r\n\r\n有脸,有下巴胡须,有上唇的小胡子,男人,在微笑,戴眼镜的置信度是95.6%,不戴眼镜的置信度是96.9%,眼睛闭着97%,嘴巴闭着91%,所以表情上44%的概率高兴,7.34%愤怒,1.52困惑。其他都还行,红色部分我们可以看出不靠谱。\r\n\r\n还有姿势,”Pitch”: -16.226444244384766, “Roll”: 8.057082176208496,”Yaw”: -3.157170534133911,这三个指标主要是脸在三个方向上的转动角度。如果对这三个方向不了解,可以参考这篇文章https://en.wikipedia.org/wiki/Six_degrees_of_freedom\r\n\r\n\r\n\r\n接下来我们来看一下AWS的测试图像。\r\n\r\n2.这是一张城市的照片\r\n\r\n\r\n\r\n在这张图里,Rekognition给出了23个Label,包括City, Downtown, Metropolis, Urban, Building, High Rise, Dock, Pier, Dawn, Dusk, Sky, Sunrise, Sunset, Housing, Coast, Outdoors, Sea, Water, Harbor, Port, Waterfront, Landing, Marina。\r\n\r\n\r\n\r\n大致上还行,不过有两个矛盾的Label.\r\n\r\n我们来看看认知服务的结果。\r\n\r\n\r\n\r\n结果类似,没有给出那么多标签,不过也有一定的错误,比如描述是城市里有桥的河景,可是桥在哪里?标签里有water, sky,outdoor,river,city,long,travelling,distance。前面几个都很明显,后面traveling置信度大约是0.3,不信也罢。此外分类是outdoor_city,这个还是蛮靠谱的。\r\n\r\n\r\n\r\n3,我们再来挑战一张更有趣的铅笔画。\r\n\r\n\r\n\r\n微软的认知服务里,这是”a close up of two giraffes near a tree”. 两只长颈鹿在树边上?好吧,我只能说,这样的结果也拿出来放在示例图里真是对自己有信心啊。不过几个其他属性还是不错的,比如1 LineDrawing, absract_nonphoto属性。\r\n\r\n\r\n\r\n那么Amazon又是什么结果?\r\n\r\n\r\n\r\n97.8%是Art,97.8%Drawing, Sketch, Person, Portrait, Selfie。这是前面3个Label很好,之后就不靠谱了。\r\n\r\n4,我们来看看美女。\r\n\r\n\r\n\r\n分析结果还不错,女性,微笑,高兴,有眼镜,太阳眼镜,眼睛张着(这个是怎么看出来的),嘴巴张着,没有小胡子,山羊胡(女人会有胡子吗?)。\r\n\r\n\r\n\r\n微软的分析好像更有趣一些,一个女人带着太阳眼镜在车里。Label有woman,person,outdoor,sunglasses,wearing,spectacle,yellow,goggles,helmet,好像除了头盔以外,其他都还挺靠谱的。\r\n\r\n\r\n\r\n但是悲剧的是,微软的表情识别里,人脸居然无法检测到!好吧,戴着眼镜是挺难的。\r\n\r\n\r\n\r\n5,那我们来看看泳装美女。\r\n\r\n\r\n\r\nAWS结果类似,人脸被正确识别,女性,微笑,戴太阳眼镜,眼睛闭着,嘴巴长着,没胡子。\r\n\r\n\r\n\r\n微软的结果也还凑合,一个美丽的女人站在沙滩上,标签有sky,outdoor,woman,person,beach,swimsuit,beautiful.其他的都好理解,这个美丽不知道是怎么出来的。不过戴着眼镜的人悲剧依然存在,AWS对墨镜的人脸识别支持非常好,而微软的认知服务无法识别。\r\n\r\n\r\n\r\n6,最后我们来看看许多人的情况。\r\n\r\n\r\n\r\nAWS对每一个人都做到了有效识别,性别和表情也基本准确。对象和场景检测中获得的标签有People, Person, Human,Face,Portrait, Smile, Bridesmaid, Leisure Activities, Femail, Girl, Woman, Crowd, Selfie.\r\n\r\n\r\n\r\n微软的认知服务里给出了outdoor, person,posing, group,crowd的关键字,而所有的人脸也得到了识别,并且评估了年龄。\r\n\r\n\r\n\r\n从上面的简单分析可以看出,这两个认知服务的训练还是大有不同的。微软的接口比较全面,包含了大量的内容,以及是否是黄色图片,种族主义图片等等,对商业上的鉴定黄色和敏感照片有一定的效果,但是由于对带眼镜人脸的支持不好,会对实际商业应用造成问题。而AWS的识别只是一个简单的标签提取,这些标签还有互相矛盾的地方。不过对戴墨镜的人脸识别效果要比微软的好。\r\n\r\n从我们的观点来看,微软的认知服务离商业应用更近一些,不过也只能应用在一些专门的领域,无法用在通用场景里。而AWS的识别服务功能相对单一,能用的领域就更小了,而且代码还需要处理概率接近情况下的相反标签处理,所以大约只能在图像索引和检索上做一些工作。\r\n\r\n反正简单测试一下这两个平台提供的功能,人工智能在今天应该还没替换掉人类的可能,不过在不久的将来,由于机器进化的速度越来越快,相信机器超过人的理性认知的那一天,指日可待。\r\n\r\n \r\n\r\n\r\n
◆◆0
发表评论