玩转AR图形识别小程序
这些年深度学习炙手可热,人脸识别,图像分类,目标检测等技术已经应用到我们生活的方方面面。作为一个时刻保持好奇心的程序猿想入门深度学习,但又苦于门槛较高,难以获得理想的学习成果。好在一些大厂已经推出了深度学习云平台,让我们前端小白也能体验深度学习的乐趣。
这次我们基于百度AI开放平台EasyDL来实现一个logo图像识别小程序,半天时间轻松搞定客户BABA的需求。
1: 创建训练模型
要实现logo识别的功能,我们先要创建一个物体检测模型。
访问百度EasyDL地址 https://ai.baidu.com/easydl 在操作平台菜单中,选择物体检测选项。
1.1 选择创建模型
1.2 为模型命名,模型归属选择个人。
2: 创建训练数据集
模型创建好以后,我们要为模型提供训练数据,所谓训练数据就是我们要识别的logo图片。
模型就像一个懵懂的孩子,我们要用训练数据教他识别图片中的logo,让他能举一反三,以后遇到不在数据集中的图片也能准确的识别出来。
2.1 准备训练数据
为了提高识别精度,我们需要用手机拍摄不同的光线,角度,背景下的logo图片上传,图片数据越多,越有助于提高模型的识别精度,一般建议上传40张左右。
2.2 标注数据
上传后,用鼠标拖拽矩形区域标注出logo图形位置,并设置统一的标签名,然后点击左下角的保存按钮。如果嫌手动标注麻烦,也可以尝试右下角的智能标注。
2.3 开始训练
训练时间和数据集大小成正比,以我30多张的训练数据为例,大概需要20分钟左右,已经很快啦,如果是在本地单机上训练可能要几小时的时间,这就是云服务分布计算的好处。
2.4 校验模型
训练结束后,我们需要对模型进行校验,看看模型的识别精度是否符合预期。
上传几张不在数据集中的照片来检验结果,如果效果满意,我们就可以进行下一步,发布模型。
3: 发布模型
3.1 提交申请
发布模型前需要提交审核,填写服务名称和接口地址,提交申请。
审核成功后,在操作列表中点击服务详情->立即使用。
3.2 创建应用
在使用接口前,我们还需要创建一个应用,应用可以理解为一个容器,一个应用可以包含多个接口,为这些接口提供访问键值,秘钥等参数。
应用创建结束后,会看到分配的API Key和Secret Key,这些都是接口调用需要携带的参数。
4: 在小程序中调用识别接口
4.1 接口token验证
在调用识别接口前先要拿到access_token令牌,这是所有接口调用的前提条件。
wx.request({
url: API_AUTH_URL, //token授权地址
method: 'GET',
data: {
grant_type: 'client_credentials',
client_id: CLIENT_ID, //API Key
client_secret: CLIENT_SECRET //Secret Key
},
success: (res) => {
_access_token = res.data.access_token
this._getImageData()
}
})
4.2 调用接口
传递access_token和要识别的图片等参数,具体可以参考官方的技术文档。
wx.request({
url: `${API_URL}?access_token=${_access_token}`, //access_token作为query参数
method: 'POST',
data: {
image, //摄像头帧图片用base64编码
threshold: 0.1
}
})
5:总结
百度EasyDL平台, 让我们无需机器学习专业知识,只用半天时间就开发出一个深度学习的小应用。相信今后这样的平台也会越来越多,提供给开发者更多的玩法解决工作中的实际问题。
附上小程序github源码地址: https://github.com/imokya/object-detect