目錄
引言
一、AIGC 生圖技術原理
(一)技術基礎
1.深度學習:
2.生成式模型:
(二)主要模型
1.生成對抗網絡(GAN):
2.擴散模型(Diffusion Model):
(三)工作原理
1.數據學習:
2.特徵提取:
3.圖像生成:
4.優化調整:
二、AIGC 生圖代碼示例
三、AIGC 生圖應用案例
引言
在當今數字化浪潮洶涌澎湃的時代,人工智能生成內容(AIGC)領域正以令人矚目的速度不斷演進與拓展。
其中,AIGC 生圖技術作為一顆璀璨的明星,正逐漸改變着我們對於圖像創作與生成的傳統認知。從藝術設計到商業廣告,從影視特效到遊戲開發,AIGC 生圖技術都展現出了其獨特的魅力與巨大的潛力。
本文將深入剖析 AIGC 生圖的技術原理,通過詳細的代碼示例揭示其背後的技術奧秘,並展示一系列豐富多樣的應用案例,帶領讀者全面領略 AIGC 生圖技術所構建的奇妙視覺世界,探尋其如何在各個領域中掀起創新變革的浪潮,為技術愛好者、創作者以及相關從業者提供一份全面而深入的 AIGC 生圖技術指南。
一、AIGC 生圖技術原理
編輯
AIGC 生圖主要基於深度學習和生成式模型,特別是生成對抗網絡(GAN)和擴散模型(Diffusion Model)等先進技術。通過學習大量圖像數據中的規律和模式,能夠生成具有高度真實感和多樣性的圖像。
(一)技術基礎
1.深度學習:
利用神經網絡技術模擬人腦學習過程,在 AIGC 圖像生成中,通過學習大量圖像數據掌握生成圖像所需的特徵和規律。
深度學習是機器學習的一個重要分支,它採用神經網絡結構來模擬人腦的學習方式。在 AIGC 圖像生成領域,深度學習模型通過對海量的圖像數據進行學習,逐步理解圖像的各種特徵,如顏色、紋理、形狀等,以及更高層次的語義信息。這些模型能夠從數據中自動提取特徵,並利用這些特徵來生成新的圖像。
2.生成式模型:
根據輸入數據生成新數據的模型,在 AIGC 圖像生成中,捕捉訓練數據中的分佈信息,生成與真實圖像相似的圖像。
生成式模型是一類能夠根據輸入數據生成新數據的模型。在 AIGC 圖像生成中,生成式模型的作用是捕捉訓練數據中的分佈信息,從而能夠生成與真實圖像相似的圖像。這些模型可以接受各種類型的輸入,如文本、噪聲等,並通過學習數據的分佈規律,生成具有特定特徵和風格的圖像。
(二)主要模型
1.生成對抗網絡(GAN):
由生成網絡和判別網絡組成,兩者在訓練過程中相互對抗,不斷優化,直至生成網絡能生成足夠真實的圖像以欺騙判別網絡。
生成對抗網絡(GAN)是 AIGC 圖像生成中一種重要的模型。它由生成網絡(Generator)和判別網絡(Discriminator)兩部分組成。生成網絡的任務是生成逼真的圖像,而判別網絡則負責判斷輸入的圖像是真實的還是由生成網絡生成的。在訓練過程中,生成網絡和判別網絡相互對抗,不斷優化自身的性能。生成網絡試圖生成更加真實的圖像來欺騙判別網絡,而判別網絡則努力提高自己的辨別能力。通過這種對抗訓練,生成網絡逐漸能夠生成足夠真實的圖像,以騙過判別網絡。
2.擴散模型(Diffusion Model):
分為去噪和採樣兩個階段,通過不斷優化去噪過程,從噪聲中生成高質量的圖像。
擴散模型也是 AIGC 圖像生成中的一種重要模型。它分為去噪和採樣兩個階段。在去噪階段,模型通過學習如何從噪聲中去除干擾,逐步還原出圖像的信息。在採樣階段,模型根據去噪後的結果生成高質量的圖像。通過不斷優化去噪過程,擴散模型能夠從噪聲中生成具有高度真實感和多樣性的圖像。
(三)工作原理
1.數據學習:
學習大量圖像數據,為模型提供豐富的視覺信息。
在訓練階段,AIGC 圖像生成模型會學習大量的圖像數據。這些數據涵蓋了各種風格、場景和對象的圖像,為模型提供了豐富的視覺信息。通過對這些圖像數據的學習,模型能夠掌握不同圖像的特徵和規律,為後續的圖像生成做好準備。
2.特徵提取:
自動提取圖像中的特徵和規律。
通過深度學習技術,模型能夠自動提取圖像中的特徵和規律。這些特徵包括顏色、紋理、形狀等低層次特徵,以及更高級別的語義特徵。低層次特徵描述了圖像的基本視覺屬性,而語義特徵則反映了圖像的內容和含義。通過提取這些特徵,模型能夠更好地理解圖像,並在生成圖像時利用這些特徵來創造出更加逼真和有意義的圖像。
3.圖像生成:
根據輸入的數據生成新的圖像,生成過程通常涉及隨機性。
在生成階段,模型會根據輸入的數據生成新的圖像。輸入數據可以是文本描述、噪聲等。生成過程通常涉及隨機性,這是為了確保生成的圖像具有多樣性。通過引入隨機性,模型可以在生成圖像時產生不同的結果,從而滿足用户對多樣化圖像的需求。
4.優化調整:
通過 GAN 或擴散模型的優化調整,生成的圖像不斷接近真實圖像的質量,並進行合規檢測。
生成的圖像會通過 GAN 或擴散模型進行優化調整。在這個過程中,模型會不斷地改進生成的圖像,使其質量不斷接近真實圖像。同時,模型還會進行合規檢測,確保生成的圖像不包含違法和不良信息。合規檢測是非常重要的一步,它可以保證生成的圖像符合法律法規和道德規範,避免出現不良影響。
二、AIGC 生圖代碼示例
編輯
1.安裝所需的庫和工具,如 Data-Juicer、DiffSynth-Studio、peft、lightning、pandas、torchvision 等。
- 安裝過程可以參考以下步驟:首先安裝 simple-aesthetics-predictor;接着以開發模式安裝 data-juicer;然後卸載 pytorch-lightning;再安裝 peft、lightning、pandas 和 torchvision;最後以開發模式安裝 DiffSynth-Studio。具體命令如下:
!pip install simple-aesthetics-predictor
!pip install -v -e data-juicer
!pip uninstall pytorch-lightning -y
!pip install peft lightning pandas torchvision
!pip install -e DiffSynth-Studio
2.從魔搭數據集中下載數據集,並進行數據篩選過濾。
- 從魔搭數據集中下載名為 “AI-ModelScope/lowres_anime” 的數據集,代碼如下:
from modelscope.msdatasets import MsDataset
ds = MsDataset.load('AI-ModelScope/lowres_anime',subset_name='default',split='train',cache_dir="/mnt/workspace/kolors/data")
- 對下載的數據集進行預處理,將圖像轉換為 RGB 格式並保存,同時將每張圖像的路徑和對應的標籤寫入 metadata.jsonl 文件。然後定義配置文件,對數據集進行清洗,包括圖像尺寸和寬高比的篩選。清洗後的數據處理包括讀取結果文件,提取文本描述和圖像路徑,保存為 CSV 文件。代碼如下:
import json, os
from data_juicer.utils.mm_utils import SpecialTokens
from tqdm import tqdm
os.makedirs("./data/lora_dataset/train", exist_ok=True)
os.makedirs("./data/data-juicer/input", exist_ok=True)
with open("./data/data-juicer/input/metadata.jsonl", "w") as f:
for data_id, data in enumerate(tqdm(ds)):
image = data["image"].convert("RGB")
image.save(f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg")
metadata = {"text": "二次元", "image": [f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg"]}
f.write(json.dumps(metadata))
f.write("\n")
# 配置文件定義與數據清洗
data_juicer_config = """
# global parameters
project_name: 'data-process'
dataset_path: './data/data-juicer/input/metadata.jsonl' # path to your dataset directory or file
np:4 # number of subprocess to process your dataset
text_keys: 'text'
image_key: 'image'
image_special_token: '<__dj__image>'
export_path: './data/data-juicer/output/result.jsonl'
# process schedule
# a list of several process operators with their arguments
process:
- image_shape_filter:
min_width: 1024
min_height: 1024
any_or_all: any
- image_aspect_ratio_filter:
min_ratio: 0.5
max_ratio: 2.0
any_or_all: any
"""
with open("data/data-juicer/data_juicer_config.yaml", "w") as file:
file.write(data_juicer_config.strip())
!dj-process --config data/data-juicer/data_juicer_config.yaml
# 清洗後數據集處理
import pandas as pd
import os, json
from PIL import Image
from tqdm import tqdm
texts, file_names = [], []
os.makedirs("./data/data-juicer/output/images", exist_ok=True)
with open("./data/data-juicer/output/result.jsonl", "r") as f:
for line in tqdm(f):
metadata = json.loads(line)
texts.append(metadata["text"])
file_names.append(metadata["image"][0])
df = pd.DataFrame({"text": texts, "file_name": file_names})
df.to_csv("./data/data-juicer/output/result.csv", index=False)
3.下載可圖模型,如 Kolors、SDXL-vae-fp16-fix。
- 下載模型代碼如下:
from diffsynth import download_models
download_models(["Kolors", "SDXL-vae-fp16-fix"])
4.使用不同的工具和技術進行圖像生成,如 Stable Diffusion、騰訊雲的大模型圖像創作引擎等,包括創建虛擬環境、搭建 torch 環境、使用特定的函數模塊進行線稿生圖等。
- 使用 Stable Diffusion 進行圖像生成需要安裝相關軟件和依賴,如 Python、torch 等,並加載預訓練模型。以下是一個簡單的示例代碼:
# 註冊賬號並開通服務
# 在使用大模型圖像創作引擎服務前,需要先註冊騰訊雲賬號。
# 註冊並通過實名認證後,登錄騰訊雲大模型圖像創作引擎控制枱,閲讀和同意服務條款,單擊立即開通,即可獲得大模型圖像創作引擎的 API 接口調用權限。
# 新建/查看雲 API 密鑰
# 在控制枱訪問管理中,點擊訪問密鑰菜單欄,進入 API 密鑰管理頁面,新建或查看密鑰,保存 secretId 和 secretKey。
# 新建項目文件夾並安裝依賴
# 進入項目目錄,打開終端,輸入以下命令安裝依賴:
npm install tencentcloud-sdk-nodejs-aiart
# 新建雲 API 函數模塊 tencentCloudApi.js 文件
import tencentcloud from "tencentcloud-sdk-nodejs-aiart";
const AiartClient = tencentcloud.aiart.v20221229.Client;
const clientConfig = {
credential: {
secretId: "AKIDjIcgU1HI2VhcHxxxxxxxxxxxxxxxxxxxxx",
secretKey: "KOBhwykFagX8UaS5Sxxxxxxxxxxxxxxxx",
},
region: "ap-shanghai",
profile: {
httpProfile: {
endpoint: "aiart.tencentcloudapi.com",
},
},
};
const client = new AiartClient(clientConfig);
export async function sketchToImage(prompt, inputImage) {
const params = {
"Prompt": prompt,
"InputImage": inputImage,
"RspImgType": "url",
};
try {
const response = await client.SketchToImage(params);
if (!response.RequestId) {
throw new Error(`HTTP error!`);
}
return response;
} catch (error) {
console.error(`Error fetching`, error);
throw error;
}
}
# 新建保存 Url 圖片功能函數 saveImageFromUrl.js
import https from 'https';
import fs from 'fs';
export async function saveImageFromUrl(url, outputFilePath) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(outputFilePath);
https.get(url, (response) => {
if (response.statusCode!== 200) {
reject(new Error(`Failed to get image, status code: ${response.statusCode}`));
return;
}
response.pipe(file);
file.on('finish', () => {});
});
});
}
- 使用騰訊雲的大模型圖像創作引擎進行線稿生圖,步驟如下:
# 註冊賬號並開通服務
# 在使用大模型圖像創作引擎服務前,需要先註冊騰訊雲賬號。
# 註冊並通過實名認證後,登錄騰訊雲大模型圖像創作引擎控制枱,閲讀和同意服務條款,單擊立即開通,即可獲得大模型圖像創作引擎的 API 接口調用權限。
# 新建/查看雲 API 密鑰
# 在控制枱訪問管理中,點擊訪問密鑰菜單欄,進入 API 密鑰管理頁面,新建或查看密鑰,保存 secretId 和 secretKey。
# 新建項目文件夾並安裝依賴
# 進入項目目錄,打開終端,輸入以下命令安裝依賴:
npm install tencentcloud-sdk-nodejs-aiart
# 新建雲 API 函數模塊 tencentCloudApi.js 文件
import tencentcloud from "tencentcloud-sdk-nodejs-aiart";
const AiartClient = tencentcloud.aiart.v20221229.Client;
const clientConfig = {
credential: {
secretId: "AKIDjIcgU1HI2VhcHxxxxxxxxxxxxxxxxxxxxx",
secretKey: "KOBhwykFagX8UaS5Sxxxxxxxxxxxxxxxx",
},
region: "ap-shanghai",
profile: {
httpProfile: {
endpoint: "aiart.tencentcloudapi.com",
},
},
};
const client = new AiartClient(clientConfig);
export async function sketchToImage(prompt, inputImage) {
const params = {
"Prompt": prompt,
"InputImage": inputImage,
"RspImgType": "url",
};
try {
const response = await client.SketchToImage(params);
if (!response.RequestId) {
throw new Error(`HTTP error!`);
}
return response;
} catch (error) {
console.error(`Error fetching`, error);
throw error;
}
}
# 新建保存 Url 圖片功能函數 saveImageFromUrl.js
import https from 'https';
import fs from 'fs';
export async function saveImageFromUrl(url, outputFilePath) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(outputFilePath);
https.get(url, (response) => {
if (response.statusCode!== 200) {
reject(new Error(`Failed to get image, status code: ${response.statusCode}`));
return;
}
response.pipe(file);
file.on('finish', () => {});
});
});
}
三、AIGC 生圖應用案例
編輯
1.設計提效:
縮短概念風格、設計初稿和設計終稿的反覆溝通時間,提升效率 25 - 55%。
當未使用 Midjourney 和 Stable Diffusion 時,設計師在設計參考階段需要花費大量時間找參考圖,還需繪製設計草圖,然後與業務確認風格和草圖,接着進行設計建模和細化設計,最後確定設計定稿。而有了 AIGC 工具的輔助,如使用 Midjourney 生成設計參考圖,可快速與業務確認設計風格,繪製線稿草圖後,通過 Stable Diffusion 直接生成設計圖,設計師再做細節優化,極大地縮短了整個設計流程的時間,提升了效率。
2.活動彈窗設計:
運用 ChatGPT 獲取設計思路,通過 Stable Diffusion 生成更有質感和高級感的設計主體元素。
先運用 ChatGPT 獲取彈窗的設計思路,從多角度切入設計,使設計方案更完善。通過 ChatGPT 分析後,提取關鍵詞如黑金、高級感、精緻、質感等,再具象延伸添加寶石、榮耀感、堅硬感和鑽石等關鍵詞,並轉化為英文。將初稿中的鑽石圖放進 Stable Diffusion 圖生圖功能,輸入關鍵詞,重複幅度調到 5 以下,反覆多批量產出後篩選出想要的結果,通過 Stable Diffusion 生成更有質感和高級感的設計主體元素,節省大量設計細節的時間。
3.勳章圖標設計:
利用 Stable Diffusion 製作勳章圖標,從簡化版設計深入刻畫精細版。
Midjourney 和 Stable Diffusion 可以製作勳章圖標。勳章一般有簡化版和精細版,用於不同尺寸的場景。以網易大神夢幻西遊武神壇勳章為例,藉助 Stable Diffusion,輸出簡化版本的設計,讓 Stable Diffusion 深入刻畫。從勳章自帶榮譽感屬性出發,得到寶石、金屬質感、閃耀感和高級感等關鍵詞,轉化為英文後輸入,得到設計圖。然後用生成最滿意的圖繼續下一輪刻畫,以達到最貼合需求的出圖效果。
4.IP 設計:
通過 Stable Diffusion 結合線稿和關鍵詞生成 IP 形象,包括選擇合適的模型和插件、設置 controlnet 面板等步驟。
在設計 IP 前期,確定 IP 的應用場景和角色動作。以網易大神 IP 霸哥為例,講解如何用 Stable Diffusion 製作 IP 素材。首先繪製角色動作線稿,給角色設定動作如單手持玩具槍,眼神堅毅望向前方,注意草圖線稿要乾淨連貫。然後選擇並下載合適模型以及插件,結合 IP 形象特點,在 C 站選擇相對應的模型,如大模型 MeinaMix,Lora 插件 blindbox。接着設置 controlnet 面板,在文生圖界面找到 ControlNet 一欄,上傳繪製好的線稿草稿,勾選啓用,若線稿圖片背景為白色,可勾選反色模式,並選擇好預處理器和模型。最後輸入關鍵詞並設置參數,如描述霸哥形象特徵的關鍵詞,生成 IP 形象。
5.其他應用案例:
如模特宣傳海報生成、表情包生成等,展示了 Midjourney 在不同領域的應用。
- 模特宣傳海報生成:利用 Midjourney 生成模特宣傳海報。首先通過 Midjourney 的圖生文功能獲取關鍵詞靈感,生成模特素材,如 “Full body photo of a Chinese female model standing in front of a bright wall, Asian style, Product photography, Sophisticated and high-end, Panoramic view, 100mm lens, Super details of the highest quality, 8K --ar 9:16 --v 5.2”。然後生成服飾素材,用服裝名稱作為關鍵詞,如 “a Plaid cardigan, White background, 8K --v 5.2 --no people”。接着把衣服素材摳圖後疊到選好的模特圖上,上傳初步融合的模特圖,通過墊圖 + 關鍵詞的方法批量生成模特圖。最後挑選合適的模特圖進行後期微調排版,完成海報。
- 表情包生成:使用 Midjourney 生成表情包。首先通過 Midjourney 的圖生文功能獲取關鍵詞靈感,結合關鍵詞描述的基本句式,如 “畫面主體:企鵝卡通貼紙;畫面修飾:企鵝的各種表情和動作,快樂的,生氣的,悲傷的,失望的,吃驚的等;細節描述:白色背景,九宮格佈局,插畫設計,皮克斯風格;參數後綴:--niji 5”,生成一大批小企鵝。然後可以通過 Variations 升頻控制等方法保持表情包的一致性。