Japanese Stable Diffusion
Stable Diffusion 由 CompVis、Stability AI 和 LAION 共同开发,因其只需输入文本提示即可生成高度精确图像的能力而引起了广泛关注。Stable Diffusion 主要使用 LAION-5B 数据集的英文子集 LAION2B-en 作为训练数据,因此,它需要输入英文文本提示,生成的图像也往往更偏向西方文化。
rinna Co., Ltd. 通过对带有日语字幕的图像进行 Stable Diffusion 微调,开发了一款针对日语的文本到图像模型,名为“Japanese Stable Diffusion”。Japanese Stable Diffusion 接受日语文本提示,并生成反映日语世界文化的图像,这些图像可能难以通过翻译表达出来。
在本博客中,我们将讨论 Japanese Stable Diffusion 的开发背景及其学习方法。Japanese Stable Diffusion 已在 Hugging Face 和 GitHub 上提供。代码基于 🧨 Diffusers。
- Hugging Face 模型卡:https://huggingface.co/rinna/japanese-stable-diffusion
- Hugging Face Spaces:https://huggingface.co/spaces/rinna/japanese-stable-diffusion
- GitHub:https://github.com/rinnakk/japanese-stable-diffusion
Stable Diffusion
最近,有报道称扩散模型在图像人工合成方面非常有效,甚至比 GANs(生成对抗网络)更出色。Hugging Face 在以下文章中解释了扩散模型的工作原理:
通常,文本到图像模型由一个解释文本的文本编码器和一个从其输出生成图像的生成模型组成。
Stable Diffusion 使用 OpenAI 的语言-图像预训练模型 CLIP 作为其文本编码器,并使用潜在扩散模型(扩散模型的改进版本)作为生成模型。Stable Diffusion 主要在 LAION-5B 的英文子集上进行训练,只需输入文本提示即可生成高性能图像。除了高性能,Stable Diffusion 还易于使用,推理计算成本约为 10GB VRAM GPU。
摘自 Stable Diffusion with 🧨 Diffusers
Japanese Stable Diffusion
我们为什么需要 Japanese Stable Diffusion?
Stable Diffusion 是一款非常强大的文本到图像模型,不仅在质量上,在计算成本上也表现出色。由于 Stable Diffusion 是在英文数据集上训练的,因此需要首先将非英文提示翻译成英文。令人惊讶的是,即使使用非英文提示,Stable Diffusion 有时也能生成正确的图像。
那么,我们为什么需要特定语言的 Stable Diffusion 呢?答案是,我们希望有一个能够理解日本文化、身份和包括俚语在内的独特表达的文本到图像模型。例如,日语中一个比较常见的词语“salary man”是英文“businessman”的重新诠释,我们通常将其想象成一个穿着西装的男人。Stable Diffusion 无法正确理解这些日语特有词汇,因为日语不是它的目标语言。
来自原始 Stable Diffusion 的“salary man, oil painting”
这就是我们制作特定语言版本的 Stable Diffusion 的原因。与原始 Stable Diffusion 相比,Japanese Stable Diffusion 可以实现以下几点:
- 生成日式风格图像
- 理解来自英文的日语词汇
- 理解日语特有的拟声词
- 理解日语专有名词
训练数据
我们使用了大约 1 亿张带有日语字幕的图片,其中包括 LAION-5B 的日语子集。此外,为了去除低质量样本,我们使用了 rinna Co., Ltd. 发布的 japanese-cloob-vit-b-16 作为预处理步骤,以去除分数低于某个阈值的样本。
训练详情
制作日语专用文本到图像模型最大的挑战是数据集的大小。非英语数据集比英语数据集小得多,这导致基于深度学习的模型性能下降。用于训练 Japanese Stable Diffusion 的数据集大小是训练 Stable Diffusion 数据集的 1/20。为了用如此小的数据集制作一个好的模型,我们对强大的 Stable Diffusion(在英语数据集上训练)进行了微调,而不是从头开始训练一个文本到图像模型。
为了制作一个好的特定语言文本到图像模型,我们不仅仅是简单地进行微调,而是按照 PITI 的思想应用了两个训练阶段。
第一阶段:训练日语专用文本编码器
在第一阶段,潜在扩散模型被固定,我们用一个经过训练的日语专用文本编码器替换了英语文本编码器。此时,我们使用自己的日语 SentencePiece 分词器作为分词器。如果直接使用 CLIP 分词器,日语文本将被字节化分词,这使得学习词元依赖性变得困难,并且词元数量会不必要地增加。例如,如果我们对“サラリーマン 油絵”进行分词,我们会得到 ['ãĤ', 'µ', 'ãĥ©', 'ãĥª', 'ãĥ¼ãĥ', 'ŀ', 'ãĥ³</w>', 'æ', '²', '¹', 'çµ', 'µ</w>']
,这些是无法解释的词元。
from transformers import CLIPTokenizer
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14")
text = "サラリーマン 油絵"
tokens = tokenizer(text, add_special_tokens=False)['input_ids']
print("tokens:", tokenizer.convert_ids_to_tokens(tokens))
# tokens: ['ãĤ', 'µ', 'ãĥ©', 'ãĥª', 'ãĥ¼ãĥ', 'ŀ', 'ãĥ³</w>', 'æ', '²', '¹', 'çµ', 'µ</w>']
print("decoded text:", tokenizer.decode(tokens))
# decoded text: サラリーマン 油絵
另一方面,通过使用我们的日语分词器,提示被分割成可解释的词元,并且词元数量减少了。例如,“サラリーマン 油絵”可以被分词为 [' ', 'サラリーマン', ' ', '油', '絵']
,这在日语中是正确的分词。
from transformers import T5Tokenizer
tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-stable-diffusion", subfolder="tokenizer", use_auth_token=True)
tokenizer.do_lower_case = True
tokens = tokenizer(text, add_special_tokens=False)['input_ids']
print("tokens:", tokenizer.convert_ids_to_tokens(tokens))
# tokens: ['▁', 'サラリーマン', '▁', '油', '絵']
print("decoded text:", tokenizer.decode(tokens))
# decoded text: サラリーマン 油絵
这个阶段使模型能够理解日语提示,但仍然无法输出日式图像,因为潜在扩散模型根本没有改变。换句话说,日语词“salary man”可以被解释为英语词“businessman”,但生成的结果是一个西方面孔的商人,如下图所示。
第一阶段 Japanese Stable Diffusion 生成的“サラリーマン 油絵”(意为“上班族,油画”)
因此,在第二阶段,我们训练模型以输出更多日式风格的图像。
第二阶段:联合微调文本编码器和潜在扩散模型
在第二阶段,我们将同时训练文本编码器和潜在扩散模型,以生成日式图像。这一阶段对于使模型成为更具语言特色的模型至关重要。在此之后,模型终于可以生成具有日本人面孔的商人,如下图所示。
第二阶段 Japanese Stable Diffusion 生成的“サラリーマン 油絵”(意为“上班族,油画”)
rinna 的开放策略
众多研究机构正在基于人工智能民主化的理念发布他们的研究成果,旨在创建一个任何人都能轻松使用人工智能的世界。特别是最近,基于大规模训练数据的预训练模型已成为主流,人们担心高性能人工智能会被拥有计算资源的研究机构垄断。不过,幸运的是,许多预训练模型已经发布,并正在为人工智能技术的发展做出贡献。然而,文本预训练模型通常以英语为目标,这是世界上最流行的语言。为了实现一个任何人都能轻松使用人工智能的世界,我们认为能够使用除英语之外的其他语言的最新人工智能是可取的。
因此,rinna Co., Ltd. 发布了专门针对日语的 GPT、BERT 和 CLIP,现在又发布了 Japanese Stable Diffusion。通过发布专门针对日语的预训练模型,我们希望能够打造出一种不偏向英语世界文化,同时也融入日语世界文化的人工智能。让所有人都能使用它将有助于人工智能的民主化,从而保障日本的文化认同。
未来展望?
与 Stable Diffusion 相比,Japanese Stable Diffusion 的通用性不强,仍然存在一些准确性问题。然而,通过 Japanese Stable Diffusion 的开发和发布,我们希望向研究界传达特定语言模型开发的重要性和潜力。
rinna Co., Ltd. 已发布用于日语文本的 GPT 和 BERT 模型,以及用于日语文本和图像的 CLIP、CLOOB 和 Japanese Stable Diffusion 模型。我们将继续改进这些模型,接下来我们将考虑发布基于日语语音自监督学习的模型。