【AGIFoundathon】文心一言情感关怀之旅,让我们一起来体验吧!
上传一张照片,用ernie-bot生成专属于你的小故事!
此项目主要使用clip_interrogator获取图片的关键信息,然后将此关键信息用百度翻译API翻译成中文后,使用封装了⼀⾔API的Ernie Bot SDK(ernie-bot)生成故事,最后使用百度智能云长文本合成语音API。
1 快速开始
1.1 环境安装
%cd ~/launch
!pip install -r requirements.txt --user
1.2 数据下载
!wget https://paddlenlp.bj.bcebos.com/models/community/Salesforce/blip-image-captioning-large/data.zip
# 将data文件解压至clip_interrogator目录下
!unzip -d /home/aistudio/launch/clip_interrogator data.zip
2 技术路径
2.1 Clip_Interrogator
Clip Interrogator是一个提示工程工具,结合了OpenAI的CLIP和Salesforce的BLIP,用于优化文本提示。它可以根据给定的图像和文本生成提示,以帮助用户更好地理解和编辑图像。Clip Interrogator还提供了一些选项,如更改提示、调整强度等,使用户能够更好地控制生成的结果。此外,Clip Interrogator还支持多种语言,包括中文。要使用Clip Interrogator,用户需要先安装Python和必要的库,并按照说明进行操作。
from PIL import Image
from clip_interrogator import Config, Interrogator
image_path = '/home/aistudio/launch/images/test02.jpg'
image = Image.open(image_path).convert('RGB')
ci = Interrogator(Config(clip_pretrained_model_name_or_path="openai/clip-vit-large-patch14"))
print(ci.interrogate_fast(image))
a girl is taking a selfie in a mirror, ulzzang, korean woman, korean girl, beautiful south korean woman, popular korean makeup, short flat hourglass slim figure, female actress from korea, korean face features, streaming on twitch, feminine slim figure, beautiful young korean woman, elegant high quality, photo of slim girl, girl silver ponytail hair
2.2 百度翻译API
要使用百度翻译API,您需要先在百度翻译官网上注册并获取API密钥。以下是使用百度翻译API的步骤:
- 在百度翻译官网上注册并登录。
- 在左侧导航栏中选择“API管理”。
- 点击“前往API平台”按钮。
- 在API平台页面上,选择“翻译API”。
- 点击“获取密钥”按钮。
- 在弹出的对话框中,输入相关信息并点击“确定”。
- 等待一段时间,您的API密钥将发送到您的注册邮箱。
- 在邮箱中找到API密钥并复制。
- 在您的应用程序中使用API密钥,调用百度翻译API进行翻译操作。
请注意,在使用API之前,您需要了解API的使用规则和限制,以避免滥用和违反相关法规。此外,您还需要根据API文档中的说明,编写相应的代码来调用API。
2.2.1 翻译函数
import requests
import random
import json
from hashlib import md5
# 可以更换为你自己的appid/appkey.
appid = '20230805001770257'
appkey = '10MxfKpV0a5qT9s6fXt1'
# 如果需要更多语言的互译,请阅读以下地址 `https://api.fanyi.baidu.com/doc/21, 获取更多信息。`
from_lang = 'en'
to_lang = 'zh'
endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path
# Generate salt and sign
def make_md5(s, encoding='utf-8'):
return md5(s.encode(encoding)).hexdigest()
def translate(query)