标签:认知服务 机器视觉 Cognitive Services Computer Vision AI
我们使用Face API做了一些有趣的尝试。从原理上来说,人脸识别算是计算机视觉的分支。所以,接下来我们了解一下计算机视觉就很顺利成章了。计算机视觉是非常热门的人工智能方向,而我国在这个领域有着非常领先的地位。也出现了非常多的开源技术例如Open CV。在Azure里,微软提供了Computer Vision API用来帮助用户快速实现有关机器视觉的AI应用。
目前,Azure的机器视觉能够根据2000多个能够识别的对象返回标签,同时也能够识别86类事物:
这是我用Excel做的颜色分类,怎么样色彩缤纷吧~微软Docs站点的如下:
当传递一张图像给机器视觉API后,会根据以上的类别、对象,返回标签、属性以及它们对应的评分。当然,除了分析图片,还可以使用人工智能识别图片的内容,使用一句话给你答复;也可以使用OCR来识别图片中的文字,识别手写文本,按照图片的内容和给定的大小自动生成合适的缩略图等等……
感觉酷炫得无从下手吧?还好微软也给了不少示例代码~ 看示例代码可以学到好多东西,比如对json的处理…居然有这种操作…
image_caption = analysis["description"]["captions"][0]["text"].capitalize()
居然直接就一级一级的挖到想要的数据了~学习了。
%matplotlib inline from PIL import Image from io import BytesIO import matplotlib.pyplot as plt
又是一波秀操作的~不满足于输出json,这是要在照片上涂涂画画的吧?看着是要导入几个库。Python的默认安装貌似没有,老老实实安装吧。
>pip install pil
得,报错了。
PIL全称Python Imaging Library,站点在这里:http://pythonware.com/products/pil/。查了一下,PIL貌似很久远只支持Python 2.x?还好,有替代的分支。用pillow代替了。
>pip install matplotlib
这个库有点大……
特殊时期,所有跨境HTTPS的流量变得极不稳定,在线pip安装完全无法完成,于是我只能想别的办法安装库了。原来,Python的库和Raspberry等Linux系统的软件包一样,可以在网站上下载。这就提供了断点续传的可能,使得无法在线安装的包能够通过下载之后进行安装。
访问https://pypi.python.org/pypi ,就可以搜索需要的软件包进行下载。下载之后,一样可以通过pip安装离线的软件包。
>pip install c:\download\matplotlib-2.1.2-cp35-cp35m-win_amd64.whl
安装matplotlib的时候,自然会要求安装依存的其他软件包,有的小,直接就下载安装了,有的比matplotlib还大,只能再次离线下载。如果你也遇到和我一样的困扰,这里有包的依存关系,可以一起下载了安装。
matplotlib-2.1.2-cp35-cp35m-win_amd64.whl
cycler-0.10.0-py2.py3-none-any.whl
pytz-2018.3-py2.py3-none-any.whl
pyparsing-2.2.0-py2.py3-none-any.whl
python_dateutil-2.6.1-py2.py3-none-any.whl
numpy-1.14.1-cp35-none-win_amd64.whl
pyparsing-2.2.0-py2.py3-none-any.whl
安装完包,自然就回到代码进行运行了。可是…又报错了…
%matplotlib inline ^ SyntaxError: invalid syntax
仔细研究一番,原来这种写法是需要jupyter notebook或者ipython console的,貌似试运行在’osx’, ‘qt4’, ‘qt5’, ‘gtk3’, ‘wx’, ‘qt’, ‘gtk’, ‘tk’系统下,估计写Doc的人用的是Mac OS~更详细的问答可以看这里:
https://stackoverflow.com/questions/30878666/matplotlib-python-inline-on-off
https://stackoverflow.com/questions/47007130/matplotlib-inline-error-in-python-3-6-2
对着屏幕上我特别喜欢的Visual Studio Code,难道我就木有办法了?不能放弃,我继续了解matplotlib的用法,终于有一篇blog给到我提示了:
https://www.data-blogger.com/2017/11/15/python-matplotlib-pyplot-a-perfect-combination/
查看示例代码,我发现这个库是可以写文件的,那么,不显示在输出,我保存为图片文件总可以吧~
请注意,对于Analyze Image方法,除了挑选视觉功能visualFeatures,还能可选使用details和language。语言除了默认的英语,还支持简体中文哦!这也不奇怪,计算机视觉好多使用的技术和论文都有大量华人的贡献在。微软还特意列出了一些:https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/research
那么,我们看看机器视觉怎么看天安门前的国旗护卫队的:
一组人站在一栋建筑前……这智商貌似还不怎么高吧……天安门都不认识?不是认识20 万商业、政治、体育和娱乐界名人,识别全世界 9000 个自然和人工地标么?我再试试看。
换了一张图,嗯,识别出了天安门广场… 返回的json数据如下:
{ "categories": [ { "detail": { "landmarks": [ { "confidence": 0.9956175088882446, "name": "Tiananmen Square" } ] }, "name": "building_street", "score": 0.7421875 }, { "detail": { "landmarks": [ { "confidence": 0.9956175088882446, "name": "Tiananmen Square" } ] }, "name": "outdoor_", "score": 0.01171875 } ], "color": { "accentColor": "0051B1", "dominantColorBackground": "Blue", "dominantColorForeground": "Black", "dominantColors": [ "Blue", "Grey" ], "isBwImg": false }, "description": { "captions": [ { "confidence": 0.8968637267424504, "text": "a large red building with Tiananmen Square in the background" } ], "tags": [ "building", "outdoor", "red", "sitting", "large", "clock", "front", "street", "top", "parked", "train", "white", "sign", "track", "old", "station", "city", "man", "standing", "tower", "bus" ] }, "metadata": { "format": "Jpeg", "height": 273, "width": 820 }, "requestId": "8e1c16f7-3d03-4a0f-8e2f-b50150374959" }
不是说支持简体中文么?是的:
{ "categories": [ { "name": "\u5efa\u7b51_\u8857\u9053", "score": 0.7421875 }, { "name": "\u6237\u5916_", "score": 0.01171875 } ], "metadata": { "format": "Jpeg", "height": 273, "width": 820 }, "requestId": "14f74b94-8dbe-491c-966f-9fcdd0c599f3", "tags": [ { "confidence": 0.9926539659500122, "name": "\u5efa\u7b51" }, { "confidence": 0.9916537404060364, "name": "\u6237\u5916" }, { "confidence": 0.9839764833450317, "name": "\u5929\u7a7a" }, { "confidence": 0.8205077052116394, "name": "\u7ea2" } ] }
“你骗我,哪有中文啊?” 中文其实以UNICODE提供了,把\u5929\u7a7a这种放到转换网站转换一下:http://www.pdtools.net/tools/unicode.jsp 限于篇(Lan)幅(Duo)就不写了。
matplotlib的官网在:https://matplotlib.org 大致是拿来做科学数据图形的,很厉害。
matplotlib博大精深,有时间要好好学学了。在Google的机器学习速成课程里,就是用了Matplotlib用作数据可视化:
https://developers.google.cn/machine-learning/crash-course/
第三方 Python 库机器学习速成课程代码示例使用了第三方库提供的以下功能。无需提前熟悉这些库;您可以在需要时查询相关内容。Matplotlib(适合数据可视化)pyplot 模块cm 模块gridspec 模块
标签:认知服务 机器视觉 Cognitive Services Computer Vision AI
原文地址:http://blog.51cto.com/haohu/2083743