使用 Microsoft Azure 进行计算机视觉
介绍
计算机视觉是人工智能最流行的用途之一。它允许计算机分析视觉图像并比人类更准确、更有效地找到特征。正确实施它也非常困难。计算机视觉模型需要大量的计算、时间和知识资源。随着计算机视觉在当今的现代应用中越来越被接受甚至被期待,没有软件巨头资源的小公司的开发人员如何跟上?
这正是 Microsoft Azure 认知服务的作用所在。使用计算机视觉服务,任何应用程序的开发人员都可以添加计算机视觉功能,即使对机器学习知之甚少或一无所知。例如,经典的“热狗或不热狗”应用程序可以轻松通过图像分析服务实现。成人内容检测可用于确保将适合年龄的图像上传到应用程序。
Azure 认知服务以 REST API 的形式实现。这些 API 展示了 Microsoft 投入时间和资源进行训练的模型的强大功能。您可以将图像数据发送到这些 API,然后 Microsoft 将执行一些计算机视觉魔法,向您收取少量费用(尽管开始时是免费的),然后将结果发送回给您。
设置
在资源概述中,单击链接以管理密钥。您将看到两个密钥和一个端点。密钥将验证您是该服务的用户。将它们视为密码。
图像分析
本指南将使用 Python 演示如何使用计算机视觉服务。软件开发工具包还支持其他语言,包括 C#、Java 和 JavaScript。您还可以使用诸如请求之类的库将数据直接发送到 API 端点。要使用 Python SDK,您需要安装它。
$ pip install azure-cognitiveservices-vision-computervision
接下来,使用来自 Azure 门户的密钥和端点创建ComputerVisionClient 。
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from msrest.authentication import CognitiveServicesCredentials
client = ComputerVisionClient(ENDPOINT, CognitiveServicesCredentials(KEY))
通过将图像的 URL 传递给describe_image方法来使用客户端来描述图像。
description = client.describe_image(IMAGE_URL)
如果计算机视觉服务能够描述图像,它将返回一个标题列表。
for caption in description.captions:
print(caption.text)
Azure 将这张照片描述为“一间摆满家具和一扇大窗户的房间”。
这就是全部内容了。您可以在任何应用程序中使用结果,无需了解计算机视觉!
人脸检测
同一客户端能够检测图像中的面部。只需向analyze_image方法提供图像 URL。第二个参数是要检测的特征列表。要检测面部,请提供包含单个字符串faces的列表。
face_results = client.analyze_image(FACE_IMAGE_URL, ['faces'])
结果包括一个名为faces 的列表。检测到的每个脸部(如果有)将包括age、gender和face_rectangle或 bounds。
for face in face_results.faces:
print('{} year old {}'.format(face.age, face.gender))
print(face.face_rectangle.as_dict())
Azure 确认这张照片上的人物是一名 21 岁的女性。
请记住,Azure 认知服务还包括专用的面部服务。它可以完成计算机视觉服务的所有功能,还可以检测情绪、面部毛发、眼镜。它甚至可以识别图像中检测到的人。
其他图像分析功能
在理想情况下,人们不会将不适当的内容上传到应用。在现实世界中,Azure 计算机视觉服务可以检测图像中的成人、色情和血腥内容并对其进行评分。将成人功能与analyze_image方法结合使用。
adult_results = client.analyze_image(ADULT_IMAGE_URL, ['adult'])
如果内容被视为成人内容、色情内容或血腥内容,结果将包括一个布尔值。它还根据内容被视为成人内容、色情内容或血腥内容的可能性,提供一个介于 0.0 和 1.0 之间的置信度分数。
print('Image is{} adult with a confidence of {}'.format('' if adult_results.adult.is_adult_content else ' not', adult_results.adult.adult_score))
我不会演示这个。你只需要相信它能正常工作。
类别功能将返回图像分类法中 86 个类别中的一个类别。示例包括“building_stair”和“plant_tree”。完整列表可在https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/category-taxonomy找到。
category_results =
client.analyze_image(CATEGORY_IMAGE_URL, ['categories'])
类别字段中的每个类别(如果有)都有一个图像所属类别的名称。与成人内容检测器一样,分数表示该类别适用于图像的置信度。
for category in category_results.categories:
print('Image is in the {} category with a confidence of {}'
.format(category_results.name, category_results.score))
Azure 将这张熊猫图片放在“animal_panda”类别中,置信度为 0.99609375,这几乎是肯定的。
这种模式对于品牌来说仍然持续着。
brand_results = client.analyze_image(BRAND_IMAGE_URL, ['brands'])
品牌列表中的每个品牌都有一个名称和一个置信度分数。这次,品牌的边界包含在矩形中。
print('The brand for {} was found in the image with a confidence of {}'
.format(brand_results.name, brand_results.confidence))
print(brand_results.rectange.as_dict())
Azure 在这张图片中发现了一个品牌。
该品牌为“可口可乐”,置信度为85.7%。
该服务还可以利用颜色特征检测图像中的主色和强调色。
color_results = client.analyze_image(COLOR_IMAGE_URL, ['color'])
is_bw_img字段是一个布尔值,用于确定图像是黑白还是全彩色。dominant_colors和accent_color字段分别保存主色和强调色。主色来自一组十二种命名颜色,而强调色是十六进制值。所有颜色信息都存储在结果的颜色字段中。
print('The image is {}'
.format('black and white' if color_results.color.is_bw_img else 'color'))
print('Dominant colors: {}'.format(color_results.color.dominant_colors))
print('Accent color: {}'.format(color_results.color.accent_color))
据 Azure 称,该图像的主要颜色是紫色、黑色和白色。
文本识别
计算机视觉服务还可以识别印刷文本和手写文本。此功能与其他功能不同,因为文本识别可能需要更多时间。因此,读取方法不会返回最终结果。
read_operation = client.read(OCR_IMAGE_URL, raw=True)
响应的标头包含一个资源,其末尾带有操作的 ID。
id_ = read_operation.headers['Operation-Location'].split('/')[-1]
将id_传递给get_read_result方法来检索文本识别操作的状态。
read_results = client.get_read_result(id_)
print(read_results.status)
<font style="v
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~