EasyDL图像-物体检测快速开始
目录
场景介绍
在工业场景下,零件分拣、零件计数是在工业生产过程中的一个常见业务需求,由于零件样式多样,市面上没有现成的零件识别服务可以直接使用,往往需要定制企业零件专用的图像识别能力。 某个工业质检领域的服务商收到甲方需求,希望能在工厂中实现检测螺丝和螺母,并借助机械臂等装置协助人工完成自动分拣。该服务商经过详细了解需求,发现螺丝与螺母由于排列密集且没有规律,如果要配合机械臂完成就需要精准定位出图片中每个零件的名称及位置。经过调研,由于市场上并没有任何一家公司有现成的螺丝螺母识别服务,同时该服务商缺少相关AI算法工程师及算力资源,如果筹备相关技术及资源成本较高,成为该服务商面临的一大难题。无意中了解到百度EasyDL可以灵活定制并可以快速上手获得业务所需的高精度AI能力,刚好可以解决该服务商面临的问题。
实现步骤
只需四步即可完成自定义AI模型的训练及发布的全过程。
Step1:成为百度AI开放平台的开发者
要使用百度EasyDL的模型训练能力首先需要注册成为百度AI开放平台的开发者,首先让我们用5分钟来注册百度AI开放平台的开发者(如您已经是开发者,可直接登录使用)。
先点击此处注册百度账号进入,如下图的页面快速的注册一个百度账号吧。
Step2:提前准备训练数据
物体检测需要提供包含目标物体的图片并标注物体即可训练物体检测模型,自动识别图中所有目标物体的位置、名称,下面我们来看看这次需要计数的包含螺丝螺母的图片示例:
图片数量越多理论上训练的效果就越好,物体检测的图片数据理建议不低于20张图片 注意图片需要为业务生产的真实环境所采集的图片,与真实场景越贴近,训练模型效果越佳
Step3:使用EasyDL训练物体检测模型
创建模型
进入EasyDL官方平台 点击【立即使用】
点击【物体检测】,进入操作台
在模型列表下点击【创建模型】
填写模型信息后,点击【下一步】
模型创建完成后可在【我的模型】栏查看已创建的模型信息
创建数据
在数据总览界面点击【创建数据集】
在数据集创建界面输入数据集名称后点击【完成】
数据集创建完成后可在【数据总览】查看已创建完成的数据集,点击【导入】跳转至数据导入界面
数据导入支持无标注信息、有标注信息两种数据标注状态的数据以及多种导入方式,以下为无标注信息-本地导入-上传图片的导入方式示例,其余各类型导入方式可参考页面上传物体检测数据集并在线标注
选择数据标注状态及导入方式后点击【上传图片】
注意:上传图片时,一定注意格式要求!
选择好图片后,点击【开始上传】
上传完成后,点击【确认并返回】跳转至数据总览页
在数据总览页可看到所建数据集,图片上传到平台,需要一段时间,等待片刻刷新页面后,待状态由【正在导入】转为【已完成】即为导入成功。
数据标注
在数据总览页找到需要标注的数据集,点击【查看与标注】,跳转至标注页面
在左侧标签栏下,点击【添加标签】 创建数据集标签
分别输入需要创建的标签名称并点击【确认】添加数据标签
点击图片右下角红框内图标进入到数据标注界面
在当前图片下分别框选出图片中的目标物体并添加标签,点击【保存当前图片】或直接点击下一张图标,在保存标注结果后自动跳转至下一张。标注完所有图片后,该数据集便可用于后续模型训练
模型训练
数据集准备完成后,点击【训练】,进入模型训练配置阶段
根据需求选择模型各项配置后,添加训练数据集,点击【开始训练】
在模型列表下,可以看到处于训练状态的模型,将鼠标放置感叹号图标处,即可查看训练进度,同时若勾选短信提醒,在模型训练完成后会以短信的形式通知
模型校验
模型训练完成后,可在模型列表下,点击【校验】
点击【启动模型校验服务】,需等待几分钟
点击【添加图片】,进行模型校验
在此处可以点击【申请上线】,进行模型发布,跳转到模型发布
模型发布
模型训练完成后,点击【申请发布】
按要求填写相应信息后,点击【提交申请】
注:同时可勾选下方【云服务调用数据管理】的服务条款,通过云服务调用数据反馈,可查找公有云服务模型识别错误的数据,纠正结果并将其加入下一次用于训练模型的数据集,实现训练数据的持续丰富和模型效果的持续优化。
提交申请后跳转至【我的模型】栏,服务状态变为【发布中】
等待几分钟,此状态就会变为【已发布】,即发布成功
体验H5
模型发布成功后可在模型列表页点击【体验H5】进行模型体验
选择体验H5的模型并点击下一步
自定义样式后点击【生成H5】
手机扫描生成的二维码即可在手机端体验模型效果
Step4:模型调用
在 EasyDL“我的模型”列表页,点击【服务详情】后,会得到接口地址
此接口地址在模型调用代码中会用到。点击【立即使用】
需要登录EasyDL控制台中创建一个应用,点击【创建应用】
填写信息后点击【立即创建】
立即创建后,在应用列表页即可得到 AK SK 密钥
通过使用在线API测试所训练的模型效果
import sys
import time
import socket
import json
import base64
import requests
from datetime import datetime
print(datetime.now())
domain = "aip.baidubce.com"
myaddr = socket.getaddrinfo(domain,'https')
print(str(domain) + " = " + myaddr[0][4][0])
start = time.time()
appid = 'appid'
client_id = 'AK'
client_secret = 'SK'
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' host += "&client_id=%s&client_secret=%s" % (client_id, client_secret)
session = requests.Session()
response = session.get(host)
access_token = response.json().get("access_token")
request_url = "【模型信息-服务详情-接口地址】"
with open('image.jpg', 'rb') as f:
image = base64.b64encode(f.read()).decode('UTF8')
headers = {
'Content-Type': 'application/json'
}
params = {
"image": image
}
request_url = request_url + "?access_token=" + access_token
response = session.post(request_url, headers=headers, json=params)
content = response.content.decode('UTF-8')
print(json.loads(content))
end = time.time()
print('耗时时长: %1.2f s'% (end-start))
产品特色
可视化操作: 无需机器学习专业知识,模型创建-数据上传-模型训练-模型发布全流程可视化便捷操作,最快15分钟即可获得一个高精度模型
高精度效果:EasyDL底层结合百度 AutoDL/AutoML技术,针对用户数据自动获得最优网络和超参组合,基于少量数据就能获得出色效果和性能的模型
端云结合:训练完成的模型可发布为云端API或离线SDK,灵活适配各种使用场景及运行环境
数据支持:全方位支持训练数据的高质量采集与高效标注,支持在模型迭代过程中不断扩充数据,助力提升模型效果
更多参考
如对文档说明有疑问或建议,请微信搜索“BaiduEasyDL”添加小助手交流
备注:文档如使用中遇到报错等问题,请在控制台中通过“工单”联系我们,售后团队为您及时解决问题