vlambda博客
学习文章列表

两行代码轻松搞定图像识别!


提到图像识别,我们能想到的就是OpenCV、人工智能这些高大上的词汇。如果想要深入研究图像识别算法,确实离不开这些工具;但是如果只是为了实现功能,甚至简单到只需要两行代码就能搞定!


百度AI开放平台


之所以可以把步骤简化,因为借助了第三方平台-百度AI开放平台。早在几年前,百度就推出了人工智能平台,功能日益完善,涵盖了语音、图像、视频等等各个方面。


两行代码轻松搞定图像识别!


我们今天用到的就是图像识别。跟着我操作,只需五步。

01 注册百度账号


百度搜索「百度AI」,进入「百度AI开放平台」。点击右上角「控制台」,登录百度账号。在左边的菜单栏会有很多服务,「图像识别」是我们需要的。


两行代码轻松搞定图像识别!


02 新建图像识别任务


选择「图像识别」,「创建应用」,填写「应用名称」和「应用描述」,点击「立即创建」。我们会得到两个非常重要的信息,「API Key」和「Secret Key」,有了这两个信息,才能开始后序的操作。


两行代码轻松搞定图像识别!

03 对图片编码


图像识别有很多细分的种类,比如动物识别、植物识别、菜品识别、地标识别......我们下面就来识别一个动物吧。即对于输入的一张图片(可正常解码,且长宽比较合适),输出动物识别结果。


准备一张图片,支持jpg/png/bmp格式。


两行代码轻松搞定图像识别!


对图片做base64编码。百度「码工具」,打开页面后找到「图片 Base64」。


两行代码轻松搞定图像识别!


导入图片,会得到很长的一串编码:


两行代码轻松搞定图像识别!


这个就是对图片做base64编码后的结果。「data:image/jpeg;base64,」是头部信息,我们真正需要的是头部信息后面的数据,选中复制。

百度搜索「urlencode」,进入第一个页面:


两行代码轻松搞定图像识别!


粘贴数据,通过UrlEncode编码,得到最终要上传到百度AI平台的数据(很长)。


04 获取access_token


百度AI平台针对所有HTTP API调用者,都必须在URL中带上access_token,获取access_token流程如下:

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

  • grant_type:    必须参数,固定为client_credentials;
  • client_id:        必须参数,应用的API Key;
  • client_secret: 必须参数,应用的Secret Key;

获取access_token示例代码:


curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'


返回json文本如下:


{ "refresh_token": "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074", "expires_in": 2592000, "scope": "public wise_adapt", "session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI", "access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074", "session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"}


其中,access_token就是我们需要的数据。


05 识别图片


HTTP 方法 :POST
请求URL
https://aip.baidubce.com/rest/2.0/image-classify/v1/animal

请求代码示例:


curl -i -k 'https://aip.baidubce.com/rest/2.0/image-classify/v1/animal?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'


access_token是我们第四步得到的结果,image是我们第三步得到的结果,直接复制替换就行。

返回结果:


HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Appid: 21979060Connection: keep-aliveContent-Type: application/jsonDate: Thu, 13 Aug 2020 13:53:52 GMTP3p: CP=" OTI DSP COR IVA OUR IND COM "P3p: CP=" OTI DSP COR IVA OUR IND COM "Server: ApacheSet-Cookie: BAIDUID=F5EAFF37CD6E5BE24EA6A51FCC55E51E:FG=1; expires=Fri, 13-Aug-21 13:53:52 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1Set-Cookie: BAIDUID=E6B8A997FE453F15DCA12804B8CEDBBA:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2145916555; path=/; domain=.baidu.com; version=1Tracecode: 32324021440545253386081321Vary: Accept-EncodingContent-Length: 332
{"log_id": 5998358827713267277, "result": [{"score": "0.682359", "name": "英国短毛猫"}, {"score": "0.112974", "name": "短毛猫"}, {"score": "0.0706296", "name": "俄罗斯蓝猫"}, {"score": "0.0334043", "name": "卡特尔猫"}, {"score": "0.0272325", "name": "卡尔特猫"}, {"score": "0.0141154", "name": "沙特尔猫"}]}ro


解析最后的json文本就可以得到想要的结果。其中score表示概率,name表示动物的名字。

整个过程中和语言没有关系,不管是bash、Java、PHP、CPP只要能发起HTTP请求,都可以实现。

注意:百度AI部分功能收费,目前来看,图像识别(动物识别)免费对用户开放:

两行代码轻松搞定图像识别!


语音识别每个新用户都有免费的额度(50000次或者半年),需要自己领取。超过时间或者免费额度,需要自己购买。

两行代码轻松搞定图像识别!


如需视频教程,扫描下方二维码免费观看。

图像识别B站教程↓


两行代码轻松搞定图像识别!


语音识别B站教程↓



百度AI开放平台推出的一些最新人工智能技术,除了学习怎么用之外,也能了解到目前市场上最新的人工智能研究结果,学习和研究人工智能技术。在国内,除了百度AI开放平台之外,就是腾讯AI平台了,认真研究一下就会发现,两者之间并没有太大差别,当然了,结合了各自的产品和平台,各种AI服务的表现形势有所不同而已。在国外,Google提供了大量AI服务的libary可以用,微软则有认知服务,亚马逊AWS也有很多AI服务提供出来...未来已来,人工智能已经进入一个超高速发展阶段,很多应用开始落地,在不久的将来,AI,就是一种服务!