购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3
数据和任务

随着人工智能技术的飞速发展,生成式AI已经成为科技领域最令人兴奋的前沿技术之一。它利用深度学习模型,通过理解大量的数据来创造全新的内容,这些内容涵盖文本、图像、音频甚至视频等多种形式。它不仅为人类创造力的延伸提供了无限可能,而且在很多行业开辟了新的应用场景。本节将深入探讨生成式AI在不同数据类型和常见任务中的应用,包括如何运用先进模型进行文本生成、图像创作、音频生产以及视频制作。

1.3.1 数据类型

常见的数据类型如下。

文本数据。文本数据是生成式AI中最常见的数据类型之一,广泛应用于聊天机器人、自动写作、内容生成等任务。这些文本数据可以来自书籍、文章、网页等多种来源。

图像数据。图像数据涉及静态的视觉内容,包括照片、绘画、设计图等。生成式AI在这一领域的应用包括生成新的艺术作品、编辑现有图像以及创建虚拟场景等。

音频数据。音频数据包括声音记录和音乐。生成式AI能够创造新的音乐作品、模仿特定的声音或音乐风格,以及进行语音合成和变换等。

1.3.2 常见任务

1. 文本生成

文本生成任务主要包括如下内容。

新闻文章。自动化生成新闻内容,旨在提高新闻报道的效率和速度。

故事创作。创造新颖的故事和小说,为作家和内容创造者提供灵感。

代码生成。自动生成代码片段,帮助开发者提高开发效率。

文本总结是文本生成最广泛的应用之一,即将长文档缩写成较短的文本,同时保留其中的重要信息。一些模型可以从初始输入中提取文本,而其他模型可以生成全新的文本。

接下来我们通过如下代码进行实践。

Python
from transformers import pipeline
 
classifier = pipeline("summarization")
classifier("Paris is the capital and most populous city of France, with an estimated population of 2,175,601 residents as of 2018, in an area of more than 105 square kilometres (41 square miles). The City of Paris is the centre and seat of government of the region and province of Île-de-France, or Paris Region, which has an estimated population of 12,174,880, or about 18 percent of the population of France as of 2017.")
## [{ "summary_text": " Paris is the capital and most populous city of France..." }]

可以看到,借助Hugging Face的transformers库,可以快速完成文本生成任务。

2. 图像生成

图像生成任务主要包括如下内容。

艺术创作。利用AI创作独特的艺术品,模仿或超越传统的艺术风格。

图像编辑。自动调整图像参数或进行复杂的编辑任务,如风格转换、面部编辑等。

虚拟现实内容。生成虚拟现实环境中的视觉内容,用于游戏、模拟和教育等场景。

图1-3展示了无条件图像生成,即在任何上下文(如提示文本或另一幅图像)中无条件生成图像的任务。一旦训练完成,模型将创造出类似其训练数据分布的图像。这个领域中非常流行的模型包括生成对抗网络和变分自编码器模型。由于此类模型不如Stable Diffusion模型更有用,因此本书不会花大量篇幅介绍这类较为过时的模型。

图1-3 无条件图像生成

图1-4展示了文生图模型的应用过程,即输入文本生成图像。这些模型可以用来根据文本提示生成或修改图像。

图1-4 输入文本生成图像

这里我们使用第三方库进行文生图代码的实践。示例代码如下。

Python
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
 
model_id = "stabilityai/stable-diffusion-2"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
 
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]

3. 音频生成

音频生成任务主要包括如下内容。

音乐创作。创造新的音乐作品,模仿特定艺术家或风格,或完全创新。

语音合成。生成清晰、自然的语音输出,用于虚拟助手、有声读物和其他应用。

音频到音频是一类任务,其中输入是一个音频,输出是一个或多个生成的音频。示例任务如语音增强和声源分离等。图1-5展示了音频到音频转换的过程。

图1-5 音频到音频转换

音频到音频转换的示例代码如下。

Python
from speechbrain.pretrained import SpectralMaskEnhancement
model = SpectralMaskEnhancement.from_hparams(
  "speechbrain/mtl-mimic-voicebank"
)
model.enhance_file("file.wav")

如图1-6所示,文本转语音(Text-to-Speech,TTS)模型可用于任何需要将文本转换成模仿人声的语音应用中。在智能设备上,TTS模型被用来创建语音助手。与通过录制声音并映射它们来构建助手的拼接方法相比,TTS模型是更好的选择,因为TTS模型生成的输出包含自然语音中的元素,如重音。在机场和公共交通的公告系统中,TTS模型被广泛使用,主要用于将给定文本的公告转换成语音。

图1-6 文本转语音

文本转语音的示例代码如下。

Python
from transformers import pipeline
synthesizer = pipeline("text-to-speech", "suno/bark")
synthesizer("Look I am generating speech in three lines of code!")

4. 视频生成

视频生成任务主要包括如下内容。

基于脚本的视频生成。根据提供的文本脚本创建短视频内容,如营销视频,解释产品工作原理等。

内容格式转换。将长篇文本、博文、文章和文本文件转换成视频,用于制作教育视频,让内容变得更加吸引人,互动性更强。

配音和语音。创建AI新闻播报员以传递日常新闻,或者由电影制作人创建短片或音乐视频等。

视频生成任务的变体如下。

文本到视频编辑。生成基于文本的视频样式和局部属性编辑,简化裁剪、稳定、色彩校正、调整大小和音频编辑等任务。

文本到视频搜索。检索与给定文本查询相关的视频,通过语义分析、视觉分析和时间分析,确定与文本查询最相关的视频。

文本驱动的视频预测。根据文本描述生成视频序列,目标是生成视觉上真实且与文本描述语义一致的视频。

视频翻译。将视频从一种语言翻译成另一种语言,或允许使用非英语句子查询多语言文本-视频模型,适用于希望观看包含自己不懂的语言的视频的人群,特别是当有多语言字幕可供训练时。

视频生成(这里使用了文生视频模型,即从文字生成视频模型)的示例如图1-7所示。

图1-7 视频生成

5. 多模态任务

如图1-8所示,图像问答(也称为视觉问答)是基于图像回答开放式问题的任务。它们对自然语言问题输出自然语言响应。

图1-8 图像问答

图像问答的示例代码如下。

Python
from PIL import Image
from transformers import pipeline
 
vqa_pipeline = pipeline("visual-question-answering")
 
image =  Image.open("elephant.jpeg")
question = "Is there an elephant?"
 
vqa_pipeline(image, question, top_k=1)
#[{'score': 0.9998154044151306, 'answer': 'yes'}]

如图1-9所示,文档问答(也称为文档视觉问答)是指在文档图像上回答问题的任务。文档问答模型将文档-问题对作为输入,并返回自然语言的答案。这类模型通常依赖于多模态特征,涉及文本、单词位置(边界框)和图像等。

图1-9 文档问答

文档问答的示例代码如下。 BynDxFZiH3ocuOnUbCGtLdA9nuvCpCqujD1r6UYirGAypojF2Yan87pCuj0IPKrj

Python
from transformers import pipeline
from PIL import Image
 
pipe = pipeline("document-question-answering", model="naver-clova-ix/donut-base-finetuned-docvqa")
 
question = "What is the purchase amount?"
image = Image.open("your-document.png")
 
pipe(image=image, question=question)
 
## [{'answer': '20,000$'}]
点击中间区域
呼出菜单
上一章
目录
下一章
×