【个人简介】本二计科在读学生一枚~主要研究目标检测、文字识别、语义分割和实例分割。这是一期关于GAN系列的项目,喜欢的朋友可以扫码订阅哟!
【项目列表】
- 梵高风格图像生成 一起来玩风格迁移呀! https://aistudio.baidu.com/aistudio/projectdetail/597606
- 人像动漫化~百度AI开放平台初体验 https://aistudio.baidu.com/aistudio/projectdetail/639514
【概述】 第一次接触百度智能云的同学可能会对它的使用比较陌生,别急,这篇文章的目的就是教你如何零基础“白嫖”百度AI开放平台的接口的~
以人像动漫化为例。首先我们去到 人像动漫化 的网址:https://ai.baidu.com/tech/imageprocess/selfie_anime
右边有两个名词,Request 和 Response
Request | Response | |
Post 1 | API Key 和 Secret Key | access_token |
Post 2 | access_token | image |
我们需要发送两次 Post 请求,第一次通过 API_Key 和 Secret_Key 获取 access_token ,第二次通过 access_token 获取处理后的 image 。这个放在后面说,先介绍下如何在百度智能云创建应用:
1. 打开百度智能云( https://login.bce.baidu.com ),进入管理中心;
2. 左侧 产品服务 中选择图像增强与特效;
3. 创建应用,并填写应用名称和应用描述;
4. 在 应用列表 可以看到我们的 AppID、API Key和Secret Key。
这里我们暂且将 API Key 和 Secret Key 理解成帐号和密码,有了这两个东西,我们就可以开始请求调用百度AI开放平台的接口了~下面介绍 Post 请求调用的方法
Post 1(鉴权认证机制)
这一步比较简单,只需在 URL 中带上以下参数即可(建议封装成字典)
键 | 是否固定 | 值 |
grant_type | 是 | client_credentials |
client_id | 否 | API Key |
client_secret | 否 | Secret Key |
如果请求成功,则返回的JSON格式如下:
- access_token: 要获取的access_token;
- expires_in: access_token的有效期(秒为单位,一般为1个月);
- 其他参数忽略,暂时不用;
如果请求失败,则返回的JSON格式如下:
- error: 错误码。invalid_client
- error_description: 错误描述信息。unknown client id 代表 API Key 不正确 | Client authentication failed 代表 Secret Key不正确
只要 API Key 和 Secret Key 没有错误,是不会返回这种错误的。如果出错的话建议检查下这两个参数~
Post 1的操作具有普遍性,对于大部分用HTTP API的调用者,只需修改代码的 API Key 和 Secret Key 部分便可获取 access_token。
##############
### 参数 ###
##############
API_Key = "None"
Secret_Key = "None"
# 第一次 Post 请求,获取access_token
def get_access_token():
# URL
url = 'https://aip.baidubce.com/oauth/2.0/token'
# 参数
params = {
'grant_type': 'client_credentials', # 固定值
'client_id': API_Key,
'client_secret': Secret_Key
}
res = requests.post(url, data=params)
res = res.json()
access_token = res['access_token']
return access_token
Post 2(在线API)
调用接口最关键的一步,我们需要利用上面获取的 access_token 来作为 URL 的参数。不同于上面的 Post 1,这一步需要携带两个参数,一个是 Header,它有固定的键和值,另一个是 Param,它的键为 image,值是格式转换成base64后的图片。为了代码有更好的可读性,我把 f.open() 改成了 with open() as f: 的格式
##############
### 参数 ###
##############
photo = "7hinc.jpg"
mask_id = 1
assert 1 <= mask_id <= 8, "mask_id应为1~8之间整数"
# 第二次 Post 请求
request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
# 二进制方式打开图片文件
with open(photo, 'rb') as f:
# 图像转为base64的格式
img = base64.b64encode(f.read())
# 定义params和header
params = {"image":img, "type": "anime_mask"}
header = {'content-type': 'application/x-www-form-urlencoded'}
# 发送请求
try:
request_url = request_url + "?access_token=" + get_access_token()
except KeyError:
print("access_token有误!请检查API Key 或 Secret Key是否复制正确")
sys.exit(0)
response = requests.post(request_url, data=params, headers=header)
res = response.json()
所见即所得的体验,可移步AI Studio~ https://aistudio.baidu.com/aistudio/projectdetail/639514
不得不说,公家的东西果然好用。
百度开放平台有很多非常成熟的技术,包括语音技术、图像技术、文字识别和人脸识别等,如果我们在学习或生活或工作需要用到这些技术,可以直接去 https://ai.baidu.com/ 找相关服务,并且部分接口提供了每天xxx次免费调用的机会,即使你把免费的机会用完了,按量后付和次数包预付费方式所呈现的价格也是非常美丽~一顿饭的钱,就可以调用几百次。另外,在AI 社区每月积分兑换活动中有 百度AI调用量&QPS调用量 ,岂不是美滋滋
想了解更多关于百度AI开放平台的消息,可以参考 帮助文档( https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3 )
ps. 白嫖真快乐!
感觉失真太严重
赞啊!
我已经看到过这个相机了
确实,小程序走起!
原来还发了篇文章,我记得我看过这个项目的。
要是每天有额度,可以做个demo版的app了~~
这个也太炫酷了吧,年轻人都喜欢
如果把500次改成每天几十次免费,那是香的不行不行
最后一句 也说出了 我的心里话
可以的~