python实战小项目,深度学习让电脑认出菜品,调用百度人工智能 API 实现

原帖:向日葵智能


前言


现在人工智能,深度学习等词汇贯穿了整个互联网,各种人工智能产业也是非常火爆。人工智能也的确给我们生活带来了一些方便,比较成熟的有以人脸识别为代表的图片识别,语音识别也非常成熟。这些高大上的东西,我们平民是否能接触到呢?注意到各个巨头都已经提供了免费的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
Python
Copy

· 识别代码

获取到 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) 
Python
Copy

测试看看效果


我们首先在代码所在目录新建文件夹 pic 用于存放图片,准备几张菜品图,和一张干扰图

· 地锅鸡识别

· 西红柿炒蛋识别

· 紫菜蛋汤识别

· 小姐姐识别

总体而言,识别结果还是非常不错的,作为干扰的小姐姐识别项也被鉴别出来了。


原帖地址:https://www.xrkzn.cn/python-projects/python-project-let-computer-recognize-dishes-2/


你可能感兴趣的:(python实战小项目,深度学习让电脑认出菜品,调用百度人工智能 API 实现)