IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 使用Azure认知服务快速搭建一个目标检测平台 -> 正文阅读

[人工智能]使用Azure认知服务快速搭建一个目标检测平台

前言

??博主参与了由CSDN和微软共同举办的0元试用Azure人工智能认知服务的活动,体验了一下Azure的计算机视觉方面的服务,在这里记录一下如何基于Azure计算机视觉服务快速搭建一个目标检测平台。

1. 认知服务

??认知服务使每个开发人员和数据科学家都可以使用 AI。借助领先的模型,可以解锁各种用例。只需要一个 API 调用,就可以将看、听、说、搜索、理解和加快高级决策制定的能力嵌入到应用中。让所有技能水平的开发人员和数据科学家都能轻松在其应用中添加 AI 功能。

Azure认知服务简介

??Azure计算机视觉服务具体包括以下服务:

服务说明
光学字符识别 (OCR)光学字符识别 (OCR) 服务从图像中提取文本, 可以使用新读取 API 从图像和文档中提取印刷体文本和手写文本。 此 API 使用基于深度学习的模型,并处理各种表面和后台上的文本,包括业务文档、发票、收据、海报、名片、信件和白板,并且支持提取多种语言的印刷体文本
图像分析图像分析服务从图像中提取许多视觉特征,例如对象、人脸、成人内容和自动生成的文本说明
空间分析空间分析服务会分析视频源上人员的状态和移动,并生成其他系统可以响应的事件

??本篇主要介绍的是图像分析服务中的目标检测功能。Azure的计算机视觉服务对输入图像的要求如下:

  • 图像文件格式必须是 JPEGPNGGIFBMP
  • 图像的文件大小不能超过 4 MB
  • 图像的尺寸必须大于 50 x 50 像素,对于读取 API,图像的尺寸必须介于 50 x 5010000 x 10000 像素之间。

2. 环境配置

2.1 创建资源

??按照下图所示步骤来添加计算机视觉所需要的资源:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
??创建完毕后,进入资源可以看到自己的终结点endpoint和密钥subscription key

在这里插入图片描述

2.2 创建python环境

	# 安装Azure Computer Vision库
	pip install --upgrade azure-cognitiveservices-vision-computervision
	# 安装pillow库
	pip install pillow
	# 安装 matplotlib库
	pip install matplotlib
	# 安装opencv库
	pip install opencv-python
	# 安装ffmpeg库
	pip install ffmpeg

3. 代码实现

3.1 图片检测

from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
from msrest.authentication import CognitiveServicesCredentials

from PIL import Image
import matplotlib.patches as patches
import matplotlib.pyplot as plt
import numpy as np
import cv2
import glob


subscription_key = "xxxxxxxxxxx"	# your subscription key 
endpoint = "https://xiaxiaoyou-detection.cognitiveservices.azure.cn/"	# your endpoint 

# create computer vision client 
computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))

# test image
img_file = 'iu.png'

print("===== Detect Objects - local =====")
# Get local image with different objects in it
local_image_objects = open(img_file, "rb")

# Call API with local image
detect_objects_results_local = computervision_client.detect_objects_in_stream(local_image_objects)

object_dict = {}
count = 0
# Print detected objects results with bounding boxes
print("Detecting objects in local image:")
if len(detect_objects_results_local.objects) == 0:
    print("No objects detected.")
else:
    for object in detect_objects_results_local.objects:
        # print(object)
        object_dict[count] = {
            'object_property': object.object_property,
            'rectangle': [(object.rectangle.x, object.rectangle.y), object.rectangle.w, object.rectangle.h],
            'confidence': object.confidence
        }
        count += 1
        print("object at location {}, {}, {}, {}".format(
            object.rectangle.x, object.rectangle.x + object.rectangle.w,
            object.rectangle.y, object.rectangle.y + object.rectangle.h))

# create random color
colors = plt.cm.hsv(np.linspace(0, 1, 10)).tolist()

img = Image.open(img_file)

fig = plt.figure()
plt.imshow(img)
plt.axis('off')
currentAxis = plt.gca()

color_dict = {}
for i, info in enumerate(object_dict.items()):
    print(info)
    color = color_dict.get(info[1]['object_property'], None)
    if not color:
        color = colors[i]
        color_dict[info[1]['object_property']] = color
    rect = patches.Rectangle(*info[1]['rectangle'], edgecolor=color, linewidth=3, fill=False)
    currentAxis.add_patch(rect)
    currentAxis.text(info[1]['rectangle'][0][0], info[1]['rectangle'][0][1], info[1]['object_property'] + ' ' + str(info[1]['confidence']),
                     color='white', size=20, weight='bold', backgroundcolor=color, family='cursive')

# remove blank
fig.set_size_inches(img.size[0]/100, img.size[1]/100)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
plt.margins(0, 0)
plt.savefig('object-detection-iu.png')
plt.show()

3.2 视频检测

??相比图片检测,视频检测多了两个视频转图片和图片转视频的操作,具体如下:

def toimg(video_file):
    if not os.path.exists('imgs'):
        os.mkdir('imgs')

    cap = cv2.VideoCapture(video_file)
    isopened = cap.isOpened

    fps = cap.get(cv2.CAP_PROP_FPS)  # 帧率
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    print('fps: {0}, width: {1}, height: {2}'.format(fps, width, height))
    i = 0
    while isopened:
        if i == 1000:
            break
        (flag, frame) = cap.read()  # 读取每一张 flag frame
        filename = 'imgs/' + str(i).zfill(5) + '.png'
        if flag == True:
            cv2.imwrite(filename, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
        i += 1
    cap.release()


def tovideo(img_path):
    if not os.path.exists('video'):
        os.mkdir('video')
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    videoWrite = cv2.VideoWriter('video/iu.mp4', fourcc, 30, (1920, 1080))
    files = sorted(glob.glob(os.path.join(img_path, '*.png')))
    for file in files:
        img = cv2.imread(file)
        videoWrite.write(img)
    videoWrite.release()

4. 检测效果

??博主测试了几张图片,效果还是非常不错的:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

德鲁纳酒店-目标检测

结束语

??总体感觉检测的准确率还是挺高的,虽然不知道Azure基于的什么模型,但就某些细节来看,种类还挺丰富,比如上述图片的牛仔裤,视频中IU的唇膏(化妆品)都可以检测到,而且速度也很棒,可能这就是商用的叭,很不戳!!!!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:29:17  更:2021-11-09 19:32:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:18:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码