多模态(1)—— OpenAI 多模态入门

大模型向量数据库云通信
  1. 多模态概述 ========

多模态技术,指的是通过跨模态对齐(如将图像与描述文本关联)和信息互补(如视频结合语音理解情感),实现更全面的感知能力。例如,大模型不仅能理解“苹果”的文字描述,还能识别图像中的苹果并关联其味道、用途等知识。

常见的多模态类型包括文生图、文生视频、图片理解等等。

这里我列了一张表格,整理出当下主流的多模态大模型及其用途:

picture.image

了解了多模态大模型的分类及应用场景之后,下面我们就从 OpenAI 入手,实战下多模态的功能。

  1. 文生图 ======

在当前的发展阶段,文生图可以说应该是应用范围最广、且发展最成熟的多模态应用场景之一了,在各大AIGC 应用中都可以看到各类根据文字生成图片的功能。

OpenAI 的DALL-E、Stable Diffusion 和 Midjourney 都是比较主流的图片模型,这里我们通过代码演示下 DALL-E 的具体用法。

  
import os  
  
import dotenv  
# 导入openai依赖库  
from openai import OpenAI  
  
# 加载环境变量  
dotenv.load_dotenv()  
  
# 创建OpenAI客户端  
client = OpenAI(base_url=os.getenv("OPENAI_API_BASE"))  
  
# 调用images.generate接口,生成图片  
resp = client.images.generate(  
    model="dall-e-3",  # 指定模型,可选dall-e-2和dall-e-3(默认)  
    prompt="一只英短蓝猫,正躺在沙发上睡觉,非常惬意",  # 生成图片的Prompt  
    n=1,  # 生成图片的数量  
    quality="hd",  # 图片质量,可选hd和standard(默认)  
    size="1024x1024",  # 图片尺寸  
    style="natural",  # 图片风格,可选vivid和natural(默认)  
    response_format="url",  # 返回图片的格式,可选url和b64_json(默认)  
)  
  
# 打印生成图片的url  
print(resp.data[0].url)  

代码比较简单,这里对一些 API 参数进行补充说明:

  • model:指定生成图片的模型,可选的模型有 dall-e-2和dall-e-3,默认为 dall-e-3。

  • prompt:生成图片的描述。

  • n: 生成图片的数量

  • quality: 图片质量,可选值为 standard(标准)和 hd (高清),默认为 standard。如果采用 hd 质量的话,生成图片的细节会更加精细、图像一致性也更好。该参数仅 dall-e-3 模型生效。

  • response_format: 返回图片的格式,可选值为 url 和 b64_json,默认为 url。通常来说,url 适用于生成在线图片,而 b64_json 适应于本地图片。注:如果采用 url 模式,则该图片仅在60分钟内有效。

  • size: 图片尺寸,针对 dall-e-3 模型,可选值为 1024x1024、1792x1024 和 1024x1792。

  • style: 图片风格,有 vivid 和 natural 两种:vivid 为生动风,图片更富创造性;而 natural 为写实风,图片更自然、贴近现实。默认值为 vavid。

执行上面的代码,就可以生成一张蓝猫睡觉的图片。

picture.image

除了图片生成之外,DALL-E 模型还支持图片编辑、图片伸缩、换脸等功能,大家如果感兴趣的话,可以参考官网文档进行学习,这里就不做展开了。

  1. 图片理解 =======

对于 gpt-4o 及以上的模型,即可以在 ChatCompletion 接口中,通过传入图片 url 的方式,实现图片理解的功能。参考代码如下:

  
import base64  
import os  
  
import dotenv  
from openai import OpenAI  
  
# 加载环境变量  
dotenv.load_dotenv()  
  
# 创建OpenAI客户端  
client = OpenAI(base_url=os.getenv("OPENAI_API_BASE"))  
  
# 读取本地图片并进行base64编码  
with open("./data/cat.png", "rb") as image_file:  
    encoded_image = base64.b64encode(image_file.read()).decode('utf-8')  
  
# 调用chat.completions.create接口,并指定content type为图片  
response = client.chat.completions.create(  
    model="gpt-4o-mini",  # 使用gpt-4o-mini模型  
    messages=[  
        {  
            "role": "user",  
            "content": [  
                {"type": "text", "text": "给我讲下这张图片描绘了什么,用中文回答。"},  
                {  
                    "type": "image_url",  # 指定content类型为image_url,并将本地图片的base64编码后的路径传递过去  
                    "image_url": {  
                        "url": f"data:image/png;base64,{encoded_image}",  
                    }  
                },  
            ],  
        }  
    ],  
    max_tokens=300,  
)  
  
# 打印结果  
print(response.choices[0].message.content)  

这里的 API 也非常简单,还是通用的 Chat Completion 格式,只是需要特别注意下 image_url 的用法:

  • 针对在线图片,可以直接传入图片的公网 url ,模型会将图片下载后再进行处理。

  • 针对本地图片,需要首先对图片进行 BASE64 编码,之后把编码后的路径按照固定格式:data:image/png;base64,{encoded_image} 传入。

图片识别的结果如下:

  
这张图片描绘了一只可爱的灰色猫咪正在沙发上安静地睡觉。  
猫咪蜷缩成一个圆球,显得非常舒适和放松。  
沙发上有几只不同颜色的靠垫,而背景的光线柔和,  
营造出温馨、宁静的居家气氛。整体画面让人感到放松和愉悦。
  1. 文本转语音 ========

介绍完了图片,我们再来看下多模态中的 Audio 语音类型。

OpenAI 提供了一个 TTS (Text-to-Speech)模型,可以根据文本生成语音,非常适合新闻播报、电子书阅读类的 app 来使用。

下面我们看下具体的代码。

  
import os  
  
import dotenv  
from openai import OpenAI  
  
# 加载环境变量  
dotenv.load_dotenv()  
  
# 创建OpenAI客户端  
client = OpenAI(base_url=os.getenv("OPENAI_API_BASE"))  
  
# 指定文件路径  
speech_file_path = "./data/静夜思.mp3"  
  
# 指定语言内容  
text = "床前明月光,疑似地上霜。举头望明月,低头思故乡"  
  
# 调用TTS API,生成音频文件  
response = client.audio.speech.create(  
    model="tts-1",  # 指定模型,可选tts-1和tts-1-hd  
    voice="alloy",  # 指定音色,TTS模型支持多种音色,如alloy、ash等  
    input=text,  # 指定文本内容  
)  
  
# 将音频文件保存到本地  
response.stream_to_file(speech_file_path)  
print("音频生成成功")  

我把最终生成的音频也附在文档中,大家可以感受一下效果!

  1. 小结 =====

本篇文章中,我们介绍了当下在大模型领域非常火爆的多模态功能,并以 OpenAI 的相关模型为例,具体讲解了如何实现文生图、图片理解和文本转语音等功能。

多模态相关技术目前还不算非常成熟,内容的一致性、流畅度、指令遵从等一些列问题还有待解决。相信随着大模型能力的快速提升,多模态将会被越来越广泛的应用到各类业务场景中。毕竟,图片、音频、视频才是对人类更加友好的内容形态。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
CV 技术在视频创作中的应用
本次演讲将介绍在拍摄、编辑等场景,我们如何利用 AI 技术赋能创作者;以及基于这些场景,字节跳动积累的领先技术能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论