前言
现在人工智能,深度学习等词汇贯穿了整个互联网,各种人工智能产业也是非常火爆。人工智能也的确给我们生活带来了一些方便,比较成熟的有以人脸识别为代表的图片识别,语音识别也非常成熟。这些高大上的东西,我们平民是否能接触到呢?注意到各个巨头都已经提供了免费的api,我们这里就做一些使用示范。
首先看看百度的人工智能 API 介绍
百度人工智能 API 主要分百度语音
视觉技术
自然语言
知识图谱
增强现实
几个子类,菜品识别自然属于视觉技术
,我们首先看看该子类的 API 接口能力:
· 接口能力
· 请求格式
POST方式调用
注意:Content-Type为application/x-www-form-urlencoded,然后通过urlencode格式化请求体
· 返回格式
JSON格式
· 调用方式
百度给出了两种调用方式,这里只介绍一种。即通过 HTTPS POST
方式调用。
只需把图片发到这个网址即可:
https://aip.baidubce.com/rest/2.0/image-classify/v2/dish?access_token=TOKEN
这里要注意的是,token
要事先获取。
· access_token 的获取
获取token
需要两个 key,即 API Key(AK)
Secret Key(SK)
。得到两个 key 后,即可利用下面这个网址获取 token
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【AK】&client_secret=【SK】
注册百度AI帐号,即可免费获得 AK
和 SK
。
python 实战代码
· 获取 token
实际上就是访问带上 AK
和 SK
的网址,并且解析 json 数据。
文件名 token.py
# encoding:utf-8
import urllib, urllib2, sys
import ssl, json
AK = "TwAOxxxxxxxxxxxxxxxxxxxZn" # 官网获取的 AK
SK = "nExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXF" # 官网获取的 SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials'\
'&client_id=%s'\
'&client_secret=%s' % (AK, SK)
def GetToken():
request = urllib2.Request(host)
print host
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
if (content):
js = json.loads(content)
return js['access_token']
return None
· 识别代码
获取到 token
后,就可以非常简单的调用 API 了,解析后就可以输出到控制台了。
# encoding:utf-8
import base64
import urllib
import urllib2, json
from token import GetToken
'''
菜品识别
'''
url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/dish"
def DishRecg(fileName):
# 二进制方式打开图片文件
f = open(fileName, 'rb')
img = base64.b64encode(f.read())
params = {"image":img,"top_num":5}
params = urllib.urlencode(params)
access_token = GetToken()
request_url = url + "?access_token=" + access_token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
js1 = json.loads(content)
for item in js1['result']:
print(u"%2.2f%% 可能是 %s" % (100*float(item['probability']), item['name']))
if __name__ == "__main__":
dish = "pic/2.jpg" # 这里写咱们要识别的图片名字
DishRecg(dish)
测试看看效果
我们首先在代码所在目录新建文件夹 pic
用于存放图片,准备几张菜品图,和一张干扰图
· 地锅鸡识别
· 西红柿炒蛋识别
· 紫菜蛋汤识别
· 小姐姐识别
总体而言,识别结果还是非常不错的,作为干扰的小姐姐识别项也被鉴别出来了。
[…] python实战小项目,深度学习让电脑认出菜品,调用百度人工智能 API 实现 […]
[…] python实战小项目,深度学习让电脑认出菜品,调用百度人工智能 API 实现 […]
[…] python实战小项目,深度学习让电脑认出菜品,调用百度人工智能 API 实现 […]
[…] python实战小项目,深度学习让电脑认出菜品,调用百度人工智能 API 实现 […]