1.功能描述:
基于深度学习及大规模图像训练,准确识别图片中的物体、场景信息。可以应用于:
相关内容及广告推荐:对用户浏览网页中图片进行分析,识别图片内容给出相关内容推荐或广告展示。
相册分类及智能美图:批量读图实现相册智能分类管理。
通用物体与场景识别进行了能力升级——模型升级,Top1准确率绝对值提升7%,业界领先!具体如下图所示:
2.平台接入
通用物体与场景识别接入网址:https://console.bce.baidu.com/ai/?fromai=1#/ai/imagerecognition/overview/index
具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了:
http://ai.baidu.com/forum/topic/show/943327
3.调用攻略(Python3)及评测
3.1首先认证授权:
在开始调用任何API之前需要先进行认证授权,具体的说明请参考:
http://ai.baidu.com/docs#/Auth/top
具体Python3代码如下:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import urllib
import base64
import json
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】
#获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content)
token_key = token_info['access_token']
return token_key
3.2通用物体与场景识别分析接口调用:
详细说明请参考: https://ai.baidu.com/docs#/ImageClassify-API/
说明的比较清晰,这里就不重复了。
大家需要注意的是:
API访问URL:https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general
Base64编码字符串,以图片文件形式请求时必填。(支持图片格式:jpg,bmp,png,jpeg),图片大小不超过4M。最短边至少15px,最长边最大4096px。注意:图片需要base64编码、去掉编码头后再进行urlencode。
Python3调用代码如下:
#通用物体与场景识别,返回可能性最大的通用物体与场景
#filename:图片名(本地存储包括路径),plantnum展示的数量
def general(filename,plantnum):
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"
# 二进制方式打开图片文件
f = open(filename, 'rb')
img = base64.b64encode(f.read())
params = dict()
params['image'] = img
params['baike_num'] = plantnum
params = urllib.parse.urlencode(params).encode("utf-8")
#params = json.dumps(params).encode('utf-8')
access_token = get_token()
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
if content:
#print(content)
content=content.decode('utf-8')
#print(content)
data = json.loads(content)
result=data['result']
nums=min(plantnum,len(result))
for i in range(0,nums):
item=result[i]
print ('名称:',item['keyword'])
print ('可能性:',item['score'])
baike_info=item['baike_info']
print ('百科描述:',baike_info['description'])
print ('百科链接:',baike_info['baike_url'])
print ('百科图片:',baike_info['image_url'])
general("../img/cbd1.jpg",1)
4.功能评测及建议:
选用不同的数据对效果进行测试,具体效果如下:
名称: 汗血马
可能性: 0.886632
百科描述: 汗血宝马,学名阿哈尔捷金马(拉丁学名:Akhal-teke horses),原产于土库曼斯坦。头细颈高,四肢修长,皮薄毛细,步伐轻盈,力量大、速度快、耐力强。德、俄、英等国的名马大都有阿哈尔捷金马的血统。汗血宝马是土库曼斯坦的国宝,并将其形象绘制在国徽和货币上。
百科链接: http://baike.baidu.com/item/%E6%B1%97%E8%A1%80%E5%AE%9D%E9%A9%AC/14310
百科图片: http://imgsrc.baidu.com/baike/pic/item/f31fbe096b63f6241b16dd1c8144ebf81a4ca362.jpg
名称: 电脑
可能性: 0.834694
名称: 都市夜景
可能性: 0.95057
百科描述: 内容简介本书集中收集了近年来国内外城市灯光设计的范例,并配以图片说明。书中将都市夜景分为城市鸟瞰、广场、街道、建筑、商店入口、橱窗、广告、标志、配景共7大类。本书对城市景观及灯光设计具有参考价值。
百科链接: http://baike.baidu.com/item/%E9%83%BD%E5%B8%82%E5%A4%9C%E6%99%AF/9838817
百科图片: http://imgsrc.baidu.com/baike/pic/item/d089b9863208d46867096ed3.jpg
测试下来,整体感觉处理的结果和速度都很好,对于不同物体与场景的识别都很准确。不过与百科内容结合还有提高的余地。
建议:是否能够扩展,提供每个物体的bounding box?