本期有福利哦!不要错过啦!
前文简单实现了认知服务对图片的检测识别。检测识别是其他机器视觉实现的基础,除了我们示例代码涉及的初步“看懂”图片,认知服务其实可以按照要求返回不同的信息,例如:
- Categories – categorizes image content according to a taxonomy defined in documentation.
- Tags – tags the image with a detailed list of words related to the image content.
- Description – describes the image content with a complete English sentence.
- Faces – detects if faces are present. If present, generate coordinates, gender and age.
- ImageType – detects if image is clipart or a line drawing.
- Color – determines the accent color, dominant color, and whether an image is black&white.
- Adult – detects if the image is pornographic in nature (depicts nudity or a sex act). Sexually suggestive content is also detected.
- Celebrities – identifies celebrities if detected in the image.
- Landmarks – identifies landmarks if detected in the image.
有一项功能信息,Adult,我们可以把它理解为成人图像识别。互联网太强大,但很多时候,我们不希望在不合适的时候看到成人图像,例如不想让孩子看到成人内容。据说,有个职业叫做鉴黄师,以后是不是可以让AI来做这样的工作呢?于是,这个API的返回引起了我的兴趣……
首先想试试机器视觉,于是找了Cortana的照片让它识别。还挺铁面无私的,尽管是自家的,Computer Vision API 还是告诉我,它觉得这张图有点轻度猥亵(0.342),但不算成人内容。
那怎样算是成人内容呢?坦白说,我觉得目前准确度还不是很高吧,以科学的名义,我尝试了露点的人体艺术照片,甚至无码高清的AV截图……它一直告诉我是猥亵内容,却没说是成人内容…直到我突然想到,也许是目前人工智能训练的图片不多?换个知名些的图片呢?脑海里想到了“德艺双馨”的苍老师…行动起来!
终于,成人内容评分上去了,机器视觉告诉我这是张×××了,泪目……
还是挺强大的,不光知道是张×××,而且告诉我,图中是 Sola Aoi lying on a bed。苍老师躺在床上…… 你不信 Sola Aoi 就是苍老师?来,上Wiki~
没错吧?机器视觉很准确的认出了苍老师,以及她在干啥,看来也是阅片无数,心中无码的老司机啊~
不要以为我是哗众取宠哦,看看百度图片,已经开始在图片搜索中加入了机器视觉了,可以通过图片了解到对应的信息了。脸盲症的我有救了……
福利聊完了,再看看别的。上期聊了机器视觉能够从图片中分辨86类事物,其实有些事物是我们特别注意的,比如著名的地方和人。在机器视觉API的接口中,就有针对这两种的特定领域识别。
上期我对把天安门识别为:A large red building with tiananmen square in the background 耿耿于怀,所以我特意在使用celebrity和landmark之前试了试白宫的图片。很好~一视同仁,白宫也被识别为:A large white building with grass and trees with white house in the background 看来,是机器视觉的语言能力还不太好,哈哈。
我们来指定机器视觉识别一个地理标志 Landmark。我找了一张西雅图的照片,表达我没能参加正在西雅图举办的2018第25届MVP全球峰会的遗憾。这张照片跟之前我去峰会时,在Kerry Park冻了四小时拍的那些照片角度很接近。
代码和之前的类似,只是POST的URL不太一样。我尝试修改一下matplotlib里画图的参数,看看能不能把标记写到右上方。
果然,太空针还是被识别出来了,给出了相似度评分:
{ 'result': { 'landmarks': [{ 'name': 'Space Needle', 'confidence': 0.985418438911438 }] }, 'requestId': '28210182-6b2b-422b-b94d-daa482d20c92', 'metadata': { 'height': 428, 'width': 665, 'format': 'Jpeg' } } Space needle
把返回的Caption写到图片上。
挺简单吧。接下来看看人物识别的。为了考考人工智能,也为了有点戏剧效果,我找了张和宠物“撞脸”的照片给机器视觉。原本想找孙红雷和×××梗的,一时没找到,也怕机器视觉不认识。萨缪尔.杰克逊是为人熟知的演员,在漫威电影里他是S.H.I.E.L.D.神盾局的局长。那就用他了~
机器视觉很聪明,没有认错,哈哈哈。返回了简单明了的人名、相似度评分和脸部取样区域。
{ 'requestId': '22d4ff5a-be22-4714-819c-16cb0b4ec8a6', 'metadata': { 'width': 888, 'format': 'Jpeg', 'height': 525 }, 'result': { 'celebrities': [{ 'confidence': 0.9998701810836792, 'name': 'SAMUEL L. JACKSON', 'faceRectangle': { 'width': 280, 'height': 280, 'top': 152, 'left': 25 } }] }} SAMUEL L. JACKSON
前面苍老师做识别的时候,不是画了个框显示面部识别的区域吗?我们也来画一个,然后把识别出来的名字写在框上。干这个需要用到返回的脸部坐标,然后使用matplotlib来绘制。
这就是输出的结果了。一共也没几行代码,是不是很简单?
原文地址:http://blog.51cto.com/haohu/2085460