上云无忧 > 文档中心 > 用百度智能云全功能AI开发平台BML实现物体检测
飞桨BML 全功能AI开发平台
用百度智能云全功能AI开发平台BML实现物体检测

文档简介:
目录: 1.物体检测简介 2.平台入口 3.准备数据 3.1 道路交通电子眼检测数据介绍 3.2 创建及导入数据集 4.训练模型 5.模型分析和调优 6.部署模型 7.公有云调用 7.1 使用流程 用BML实现物体检测:以道路交通电子眼检测为例。 物体检测任务是当前深度学习应用最广的计算机视觉应用任务,主要是检测图中每个物体的位置、名称。适合图中有多个主体要识别、或要识别主体位置及数量。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

目录

1.物体检测简介
2.平台入口
3.准备数据
3.1 道路交通电子眼检测数据介绍
3.2 创建及导入数据集
4.训练模型
5.模型分析和调优
6.部署模型
7.公有云调用
7.1 使用流程

用BML实现物体检测:以道路交通电子眼检测为例

物体检测简介

亲爱的开发者您好,欢迎使用百度BML全功能AI开发平台开启您的AI开发之旅!

物体检测任务是当前深度学习应用最广的计算机视觉应用任务,主要是检测图中每个物体的位置、名称。适合图中有多个主体要识别、或要识别主体位置及数量。其主要应用场景有:

  • 视频监控:如检测是否有违规物体、行为出现。
  • 工业质检:如检测图片里微小瑕疵的数量和位置。
  • 医疗诊断:如医疗细胞计数、中草药识别等。

下文中将以道路交通电子眼检测任务为例,分步骤向您详细介绍如何使用百度BML全功能AI开发平台开发您自己的物体检测模型。

道路交通电子眼检测任务简介:
在实时地图导航场景下,对于不同种类的交通电子提示装置的实时提醒,在规范车主驾驶行为、保障用户出行等方面至关重要。而各类电子提示装置分布于道路大街小巷,这类物体普通目标小,不易发现,通过常规的数据采集和人力手段很难识别,为实现导航规划增加了额外成本。对以电子眼为代表的道路交通要素进行检测,有着较大的价值。

平台入口

BML全功能AI开发平台为企业及个人开发者提供机器学习和深度学习一站式AI开发服务,并提供高性价比的算力资源,助力企业快速构建高精度AI应用,进入官方网站点击【立即使用】。

准备数据

准备数据是AI模型开发的关键一环,训练数据的质量决定了训练所得模型效果可达到的上限,下面来介绍数据规范与相关操作步骤。

道路交通电子眼检测数据介绍

道路交通电子眼检测数据集来自于百度与曙光合作的『先导杯·计算应用大奖赛』的比赛数据,采集自百度地图的实际业务数据。训练集包括近2W样本,其中包含三类目标:rect_eye、sphere_eye、box_eye。

导入平台即可使用,数据下载链接:道路交通电子眼检测数据-json格式

创建及导入数据集

1、在官网界面点击【数据总览】,进入数据集操作界面,点击【创建数据集】。

2、进入创建数据集界面,填写相关信息,选择数据和标注类型(注意训练集、验证集、测试集需要分开创建)。

3、数据集创建完成后,可以在数据总览界面看到刚才创建好的数据集ID,点击【导入】,将自己要训练的数据集导入。

以本地导入-上传压缩包为例:导入方式选择【本地导入】,选择标注格式,点击【上传压缩包】。

仔细阅读上传压缩包格式要求,可点击【下载示例压缩包】确认格式:

确认格式无误后,点击【已阅读并上传】, 注意上传时不要关闭网页:

点击【确认并返回】后自动开始导入:

可看到【标注状态】为100%,如果数据集没有全部标注,可使用平台【智能标注】功能。

训练模型

BML上提供了预置模型调参、NoteBook建模、自定义作业三种开发模式,开发难度和开发的灵活性程度不一,分别满足不同水平和需求的开发者。

本文以使用者最多的预置模型调参开发模式为例,示意训练模型的基本步骤。

1、进入bml官方平台点击【预置模型调参】-【计算机视觉模型】,点击【创建】。

2、填写项目信息并点击【新建】。

3、点击【新建任务】。

4、点击【+请选择】,勾选刚刚上传数据集下的所有标签类,点击右下角【确定】。

5、可以选择上传验证集和测试集。验证集用来确定模型训练过程中超参数的调整。测试集用来获得更客观的模型效果评估结果。如果选择不上传,系统也会自动从已上传的训练集中分割出验证和测试集。

6、配置网络,网络选型参考:网络选型介绍。

7、配置超参数。如果选择脚本编辑为超参来源,可在脚本编辑部分代码框内自定义超参数。超参数配置参考:超参数选择

8、可填写相关信息,并发布模型。也可以模型训练完成后再根据训练结果决定是否发布。

9、根据自身的周期和经费安排,配置计算资源。

10、最后点击【提交训练任务】,进入模型训练。

模型分析和调优

1、获取评估报告:点击【模型仓库】-【模型管理】,点击对应任务的【版本列表】查看训练好的模型,点击【评估报告】。

评估报告如下所示:

2、点击【校验模型】。

3、模型调优:新建模型时添加如下配置,可提高模型效果。

策略一:数据增强策略(数据增强算子参考)

策略二:百度超大规模数据集预训练(预训练模型参考)

策略三:自动超参搜索(自动超参配置参考)

采用以上优化策略之后,重新打开评估报告,可以看到效果有明显的提升。

部署模型

1、在模型管理中,可选择公有云部署, 端云协同服务,批量预测,和纯离线服务四种方式部署模型。具体参考:如何选择部署方式

2、在模型部署中,用户按照自己情况填写信息完成模型部署。下图以本地部署纯离线服务为例。

公有云调用

模型仓库中的视觉模型,发布为公有云部署时储在云端,可通过独立Rest API调用模型,实现AI能力与业务系统或硬件设备整合。BML具有完善的鉴权、流控等安全机制,并配置丰富的资源集群稳定承载高并发请求。 并且支持查找云端模型识别错误的数据,纠正结果并将其加入模型迭代的训练集,不断优化模型效果。

使用流程

1、在BML平台公有云部署的操作页面,点击『部署模型』,新建模型部署的任务。

2、填写相关信息,完成创建。

2、完成创建后回到操作页面,点击『查看详情』,查看配置信息,并获取『接口地址』信息。

3、点击控制台,进入百度智能云-BML控制台,创建应用。

4、创建应用后,在应用列表页可获取『API Key』和『Secret Key』两个信息。

5、请求示例如下。

HTTP方法:POST

请求URL: 请首先进行自定义模型训练,完成训练后申请上线,上线成功后可在服务列表中查看并获取url。

URL参数如下:

参数
access_token 通过API Key和Secret Key获取的access_token

Header如下:

参数
Content-Type application/json

注意:如果出现336001的错误码很可能是因为请求方式错误,与其他图像识别服务不同的是定制化图像识别服务以json方式请求。

6、请求参数注意事项如下。

参数 是否必选 类型 可选值范围 说明
image string - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,注意请去掉头部
threshold number - 阈值,默认值为推荐阈值(0-1之间),具体值可在我的训练任务列表-模型效果查看

7、按照下述示例代码,填入相关信息即可完成调用API服务。

以python3.7为例:

# coding:utf-8
"""
 Copyright (c) 2021 Baidu.com, Inc. All Rights Reserved
 Author: test@baidu.com
"""

import requests
import json
import base64
import cv2 as cv


def data_form(image_path):
    """
    Convert data format.
    """
    with open(image_path, 'rb') as f:
        base64_data = base64.b64encode(f.read())
        data = base64_data.decode()
    return data


def show_result(image_path, result, out_path):
    """
    Draw results on image.
    """
    image = cv.imread(image_path)
    for target in result:
        box = target['location']
        label = target['name']
        score = target['score']
        first_point = (box['left'], box['top'])
        last_point = (box['left'] + box['width'], box['top'] + box['height'])
        cv.rectangle(image, first_point, last_point, (0, 255, 0), 2)
        cv.putText(image, label + ':' + '%.4f' % score, first_point, cv.FONT_HERSHEY_SIMPLEX,
 0.5,(255,0,0), 1, cv.LINE_AA)
    cv.imwrite(out_path, image)
    img = cv.resize(image, (600,600))
  

def detection(image_path, header, request_url, out_path):
    """
    Processing detection results.
    """
    data = data_form(image_path)
    request_payload = {
        "image": data,
        "threshold": "0.7"}
    response = requests.post(request_url,data=json.dumps(request_payload),headers=header).text
    print('response : ', response)
    tt = json.loads(response)
    result = tt['results']
    show_result(image_path, result, out_path)
    # 打印预测结果
    print('result : ', result)


# 调用鉴权接口获取token
def get_access_token(host):
    """
    get access_token.
    """
    response = requests.get(host)
    if response:
        return response.json()['access_token']
    else:
        print('fail to get access_token')
        return None


if __name__ == "__main__":
    # 获取API Key、Secret Key(需要修改)
    AK = '【控制台应用列表处复制】'
    SK = '【控制台应用列表处复制】'
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&
client_id={}&client_secret={}'.format(AK, SK)
    # 获取access_token
    access_token = get_access_token(host)
    # 本地数据集存放地址 (需要修改)
    image_path = './检测/道路交通电子眼检测/道路交通电子眼检测_测试集/image/19530.jpg'
    # Header
    header = {"Content-Type": "application/json"}
    # API接口地址 (需要修改)
    request_address = 'https://aip.baidubce.com/rpc/2.0/ai_custom_bml/v1/detection/trafficV1'【配置详情页处复制】
    # 拼接API接口地址和access_token
    request_url = '{}?access_token='.format(request_address) + access_token 
    # 预测输出路径 (需要修改)
    out_path = './output/detection_result.jpg'
    # 调用API
    detection(image_path, header, request_url, out_path)

相似文档
  • 目录: 1.实例分割简介 2.平台入口 3.准备数据 3.1 自动驾驶道路实例分割数据介绍 3.2 创建及导入数据集 4.训练模型 5.模型分析和调优 6.部署模型 用BML实现实例分割:以自动驾驶道路实例分割为例。 实例分割是主流的计算机视觉任务,对比物体检测,支持用多边形标注训练数据,模型可像素级识别目标。适合图中有多个主体、需识别其位置或轮廓的场景。
  • 目录: 1.文本分类简介 2.平台入口 3.准备数据 3.1 数据规范 3.2 创建及导入数据集 4.训练模型 5.校验模型 6.部署模型 用BML实现文本分类:以中文新闻文本标题分类为例。 在我们的生活和工作中,很多事情都可以转化为一个分类问题来解决,比如“上班坐公交还是坐地铁”、“吃米饭还是吃面条”等等可以转化为二分类问题。自然语言处理领域也是这样,大量的任务可以用文本分类的方式来解决,比如垃圾文本识别、涉黄涉暴文本识别、意图识别、文本匹配、命名实体识别等。
  • 目录: 1.短文本相似度简介 2.平台入口 3.准备数据 3.1 数据规范 3.2 创建及导入数据集 4.训练模型 5.校验模型 6.部署模型 用BML评价短文本相似度:以新冠疫情相似句对判定为例。 短文本相似度,即求解两个短文本之间的相似程度;它是文本匹配任务或文本蕴含任务的一种特殊形式,返回文本之间相似程度的具体数值。在工业界中,短文本相似度计算占有举足轻重的地位。
  • 目录: 1.文本实体抽取简介 2.平台入口 3.准备数据 3.1 数据规范 3.2 创建及导入数据集 4.训练模型 5.校验模型 6.部署模型 用BML实现文本实体抽取:以简历信息抽取为例。 文本实体抽取是一项重要的自然语言处理任务,主要是实现对文本进行内容抽取,并识别为自定义的实体类别。 例如:对内容中的关键实体进行识别和抽取,如金融研报信息识别,法律案件文书实体抽取,医疗病例实体抽取等多种应用场景。
  • 目录: 1.序列标注简介 2.平台入口 3.准备数据 3.1 数据规范 3.2 创建及导入数据集 4.训练模型 5.校验模型 6.部署模型 用BML实现序列标注:以快递单信息处理为例: 序列标注(Sequence Tagging)是NLP中最基础的任务,应用十分广泛,如分词、词性标注(POS tagging)、命名实体识别(Named Entity Recognition,NER)、关键词抽取、语义角色标注(Semantic Role Labeling)、槽位抽取(Slot Filling)等实质上都属于序列标注的范畴。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部