Japanese Stable Diffusion

釋出於 2022 年 10 月 5 日
在 GitHub 上更新

Open In Hugging Face Spaces

Open In Colab

Stable Diffusion 由 CompVisStability AILAION 共同開發,因其只需輸入文字提示即可生成高度精確影像的能力而引起了廣泛關注。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

Stable Diffusion

最近,有報道稱擴散模型在影像人工合成方面非常有效,甚至比 GANs(生成對抗網路)更出色。Hugging Face 在以下文章中解釋了擴散模型的工作原理:

通常,文字到影像模型由一個解釋文字的文字編碼器和一個從其輸出生成影像的生成模型組成。

Stable Diffusion 使用 OpenAI 的語言-影像預訓練模型 CLIP 作為其文字編碼器,並使用潛在擴散模型(擴散模型的改進版本)作為生成模型。Stable Diffusion 主要在 LAION-5B 的英文子集上進行訓練,只需輸入文字提示即可生成高效能影像。除了高效能,Stable Diffusion 還易於使用,推理計算成本約為 10GB VRAM GPU。

sd-pipeline

摘自 Stable Diffusion with 🧨 Diffusers

Japanese Stable Diffusion

我們為什麼需要 Japanese Stable Diffusion?

Stable Diffusion 是一款非常強大的文字到影像模型,不僅在質量上,在計算成本上也表現出色。由於 Stable Diffusion 是在英文資料集上訓練的,因此需要首先將非英文提示翻譯成英文。令人驚訝的是,即使使用非英文提示,Stable Diffusion 有時也能生成正確的影像。

那麼,我們為什麼需要特定語言的 Stable Diffusion 呢?答案是,我們希望有一個能夠理解日本文化、身份和包括俚語在內的獨特表達的文字到影像模型。例如,日語中一個比較常見的詞語“salary man”是英文“businessman”的重新詮釋,我們通常將其想象成一個穿著西裝的男人。Stable Diffusion 無法正確理解這些日語特有詞彙,因為日語不是它的目標語言。

salary man of 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”,但生成的結果是一個西方面孔的商人,如下圖所示。

salary man of japanese stable diffusion at stage 1

第一階段 Japanese Stable Diffusion 生成的“サラリーマン 油絵”(意為“上班族,油畫”)

因此,在第二階段,我們訓練模型以輸出更多日式風格的影像。

第二階段:聯合微調文字編碼器和潛在擴散模型

在第二階段,我們將同時訓練文字編碼器和潛在擴散模型,以生成日式影像。這一階段對於使模型成為更具語言特色的模型至關重要。在此之後,模型終於可以生成具有日本人面孔的商人,如下圖所示。

salary man of japanese stable diffusion

第二階段 Japanese Stable Diffusion 生成的“サラリーマン 油絵”(意為“上班族,油畫”)

rinna 的開放策略

眾多研究機構正在基於人工智慧民主化的理念釋出他們的研究成果,旨在建立一個任何人都能輕鬆使用人工智慧的世界。特別是最近,基於大規模訓練資料的預訓練模型已成為主流,人們擔心高效能人工智慧會被擁有計算資源的研究機構壟斷。不過,幸運的是,許多預訓練模型已經發布,並正在為人工智慧技術的發展做出貢獻。然而,文字預訓練模型通常以英語為目標,這是世界上最流行的語言。為了實現一個任何人都能輕鬆使用人工智慧的世界,我們認為能夠使用除英語之外的其他語言的最新人工智慧是可取的。

因此,rinna Co., Ltd. 釋出了專門針對日語的 GPTBERTCLIP,現在又釋出了 Japanese Stable Diffusion。透過釋出專門針對日語的預訓練模型,我們希望能夠打造出一種不偏向英語世界文化,同時也融入日語世界文化的人工智慧。讓所有人都能使用它將有助於人工智慧的民主化,從而保障日本的文化認同。

未來展望?

與 Stable Diffusion 相比,Japanese Stable Diffusion 的通用性不強,仍然存在一些準確性問題。然而,透過 Japanese Stable Diffusion 的開發和釋出,我們希望向研究界傳達特定語言模型開發的重要性和潛力。

rinna Co., Ltd. 已釋出用於日語文字的 GPT 和 BERT 模型,以及用於日語文字和影像的 CLIP、CLOOB 和 Japanese Stable Diffusion 模型。我們將繼續改進這些模型,接下來我們將考慮釋出基於日語語音自監督學習的模型。

社群

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.