玩转AR图形识别小程序

这些年深度学习炙手可热,人脸识别,图像分类,目标检测等技术已经应用到我们生活的方方面面。作为一个时刻保持好奇心的程序猿想入门深度学习,但又苦于门槛较高,难以获得理想的学习成果。好在一些大厂已经推出了深度学习云平台,让我们前端小白也能体验深度学习的乐趣。

这次我们基于百度AI开放平台EasyDL来实现一个logo图像识别小程序,半天时间轻松搞定客户BABA的需求。

logo目标检测演示

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


行歌
47 声望4 粉丝