動手學Avalonia:基於矽基流動構建一個文生圖應用(一)

mingupupup發表於2024-07-10

文生圖

文生圖,全稱“文字生成影像”(Text-to-Image),是一種AI技術,能夠根據給定的文字描述生成相應的影像。這種技術利用深度學習模型,如生成對抗網路(GANs)或變換器(Transformers),來理解和解析文字中的語義資訊,並將其轉化為視覺表現。文生圖可以用於創意設計、影像編輯、虛擬現實、遊戲開發等多個領域,為使用者提供了從文字到影像的創造性轉換工具。例如,使用者可以輸入“一隻藍色的貓坐在月球上”,AI將嘗試生成符合描述的影像。

img

Stable Diffusion

Stable Diffusion 是一種潛在的文字到影像擴散模型。得益於 Stability AI 慷慨的計算資源捐贈以及 LAION 的支援,我們得以使用 LAION-5B 資料庫的一個子集中的 512x512 影像來訓練一個潛在擴散模型。與 Google 的 Imagen 類似,此模型使用一個凍結的 CLIP ViT-L/14 文字編碼器來根據文字提示對模型進行條件設定。該模型擁有 8.6 億引數的 UNet 和 1.23 億引數的文字編碼器,相對輕量,只需要至少 10GB VRAM 的 GPU 即可執行。詳情請參閱以下部分和模型卡片。

簡而言之,Stable Diffusion 是一個由 Stability AI 和 LAION 支援的專案,使用 LAION-5B 資料庫中的影像訓練而成。它借鑑了 Google Imagen 的設計理念,使用 CLIP ViT-L/14 文字編碼器處理文字提示,具有相對較小的模型大小,使得它在普通 GPU 上即可執行。

Stable Diffusion 3 Medium 是目前 Stable Diffusion 3 系列中最新、最先進的文字到影像 AI 模型,包含 20 億個引數。它擅長照片級真實感,處理複雜的提示並生成清晰的文字。

stable-diffusion-3-medium模型開源地址:https://huggingface.co/stabilityai/stable-diffusion-3-medium

image-20240710190246175

矽基流動

由於我目前硬體資源不行無法本地執行stable-diffusion-3-medium,但又想試試文生圖模型,因此現階段可以採用呼叫api的方式來使用。矽基流動平臺目前提供了stable-diffusion-3的呼叫介面,並且限時免費,因為選擇呼叫矽基流動提供的api。

image-20240710190603718

Avalonia

基於Avalonia可以使用C#+Xaml構建跨平臺應用。

本專案或許不具備太大的實用價值,權且當做學習Avalonia的一個練手專案。

專案架構:

image-20240710193030861

在使用Avalonia的模板建立專案之後,更改專案為.net8,並升級一下包,這樣可能會避免一些報錯。

由於發現不支援中文提示詞,因此還是使用SemanticKerenl基於LLM將中文提示詞翻譯為英文提示詞,然後根據英文提示詞繪圖。

觀察一下桌面端的依賴項,桌面端引用了核心專案,使用的包是Avalonia.Desktop。

image-20240710193917453

桌面端實現效果如下所示:

image-20240710191656219

觀察一下Android端的依賴項,Android端也引用了核心專案,使用的包是Avalonnia.Android與Xamarin.AndroidX.Core.SplashScreen。

image-20240710194047415

Android端除錯可以選擇模擬器與物理機。

image-20240710193601252

避坑

選擇物理機除錯時要開啟開發者模式,開啟USB除錯,最重要的是要允許透過USB安裝,我之前沒有設定這個,就會遇到一個被使用者取消的錯誤提示。

Android端不知道為什麼SenmanticKernel對提示模板不起作用如下所示:

現在只能自己寫英文提示詞繪圖。

Android端的實現效果如下:

以上就是動手學Avalonia:基於矽基流動構建一個文生圖應用(一)的內容,希望對使用C#構建跨平臺應用感興趣的小夥伴有所幫助。

相關文章