往期學習: Datawhale X 魔搭 AI夏令營-第四期(AIGC方向)-Task01-可圖Kolors-LoRA風格故事挑戰賽
本期學習的主要內容為:
- 使用阿里雲的“通義千問”大模型,來解釋並幫助我們讀懂Task1中的程式碼。
- 使用“通義千問”大模型來輔助設計生圖提示詞,並生成8圖話劇。
下面分部分講解我的學習過程:
一、使用通義千問輔助讀懂Task1中的程式碼
先貼通義千問連結:https://tongyi.aliyun.com/qianwen/
這一部分我分別進行了五次嘗試,下面是對應的prompts:
Prompt01:你是一個優秀的python開發工程師,現在我們需要你幫我們分析這個程式碼的主體框架,你需要把程式碼按照工作流分成幾部分,用中文回答我的問題。{貼上程式碼}
Answer01 如下。可以看到,它對程式碼中所包含的主要工作流程進行了準確的概括說明。
Prompt02:你是一個優秀的python開發工程師,現在我們需要你幫我們逐行分析這個程式碼,用中文回答我的問題。{貼上程式碼}
Answer02 如下。可以看到,相比Answer01中概括的工作流程,Answer02它按步驟對程式碼給出了更為細緻的說明。
Prompt03:你是一個優秀的python開發工程師,現在我們需要你幫我們逐行分析這個程式碼,每一行程式碼都增加上中文語義備註。{貼上程式碼}
Answer03 如下。可以看到,它對程式碼進行了細緻的逐行解釋,但它沒有達到我預期的效果,即返回帶註釋的程式碼。
Prompt04:你是一個優秀的python開發工程師,現在我們需要你幫我們逐行分析下面的程式碼,每一行程式碼都增加上中文語義備註,並返回帶有中文註釋的程式碼。{貼上程式碼}
Answer04 如下。可以看到,它實現了返回帶註釋程式碼的效果,這對於程式設計師來說有更強的易讀性。
Prompt05:我對其中的{目的碼}還是不太理解,給我再詳細介紹一下。
Answer05 如下。可以看到,在這個prompt中,我對AI進行了追問,要求它對某一塊程式碼進行更細緻的解釋。通義千問對這塊程式碼做了非常細緻的解釋。
二、基於話劇的連環畫製作
透過使用通義千問大模型,來生成8圖連環畫話劇的生圖提示詞,我給的提示詞如下:
你是一個文生圖專家,我們現在要做一個實戰專案,就是要編排一個文生圖話劇 話劇由8張場景圖片生成,你需要輸出每張圖片的生圖提示詞 具體的場景圖片 1、女主在實驗臺上醒來 2、發現自己被改造成了機器人 3、觀察四周,發現周圍都是與自己一模一樣的機器人 4、女主逃出實驗室,發現外面是一個龐大的賽博朋克都市 5、女主找到自己原來的家,已經變成廢墟,空無一人 6、女主回想起來,自己和家人遭遇了車禍 7、女主發現自己的身體現在靈活度很高、力量很大 8、女主下定決心,要回實驗室找回自己的家人 生圖提示詞要求 1、風格為賽博朋克風格 2、根據場景確定是使用全身還是上半身 3、人物描述 4、場景描述 5、做啥事情 例子: 賽博朋克風,一個白色短髮少女,躺在冰冷的實驗臺上,睜開眼睛,眼神空洞,上半身,機械軀幹
以下為通義千問給出的回答:
提示詞
基於通義千問給出的回答,在魔搭提供的免費例項上再次執行Task1中的baseline,並進一步調整,最終的生圖提示詞如下:序號 | 故事描述 | 正向提示詞 | 反向提示詞 |
1 |
女主在實驗臺上醒來
|
生物力學賽博朋克。一個白色短髮少女,躺在冰冷的實驗臺上,睜開眼睛,眼神空洞,上半身特寫,背景是昏暗的實驗室,充滿未知的裝置。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 |
自然,色彩鮮豔,變形,素描,低對比度,水彩 |
2 |
發現自己被改造成了機器人
|
生物力學賽博朋克。一個白色短髮的女性機器人,站在鏡子前觀察自己的身體,鏡子裡反射出她帶有機械臂和裸露電路的身體,全身展示,實驗室背景,表情疑惑且略帶恐懼。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
3 |
觀察四周,發現周圍都是與自己一模一樣的機器人
|
生物力學賽博朋克。一個白色短髮的女性機器人,環視四周,周圍站著許多與她外觀相同的機器人,全身展示,實驗室背景,表情困惑。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
4 |
女主逃出實驗室,發現外面是一個龐大的賽博朋克都市
|
生物力學賽博朋克。一個白色短髮的女性機器人,從破舊的實驗室門裡跑出來,背後是燈火輝煌、高樓林立的都市夜景,全身展示,緊張而好奇的表情。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
5 |
女主找到自己原來的家,已經變成廢墟,空無一人
|
生物力學賽博朋克。一個白色短髮的女性機器人,站在被破壞的城市廢墟之中,面前是她曾經的家,現在已成為一片廢墟,全身展示,表情悲傷。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
6 |
女主回想起來,自己和家人遭遇了車禍
|
生物力學賽博朋克。一個白色短髮的女性機器人,站在車禍現場的回憶之中,旁邊是翻倒的車輛殘骸,上半身特寫,眼神中帶著痛苦和回憶。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
7 |
女主發現自己的身體現在靈活度很高、力量很大
|
生物力學賽博朋克。一個白色短髮的女性機器人,在空曠的倉庫內測試自己的身體能力,展示她的靈活性和力量,全身展示,背景是廢棄倉庫,表情自信且驚訝。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
8 |
女主下定決心,要回實驗室找回自己的家人
|
生物力學賽博朋克。一個白色短髮的女性機器人,站在實驗室入口處,眼神堅定地看向內部,全身展示,背景是陰暗的實驗室入口,表情堅決。控制論、人機融合、反烏托邦、有機與人工的結合、黑暗、複雜、高度詳細 | 自然,色彩鮮豔,變形,素描,低對比度,水彩 |
生成結果與評分
pip install simple-aesthetics-predictor import torch, os from PIL import Image from transformers import CLIPProcessor from aesthetics_predictor import AestheticsPredictorV2Linear from modelscope import snapshot_download model_id = snapshot_download('AI-ModelScope/aesthetics-predictor-v2-sac-logos-ava1-l14-linearMSE', cache_dir="models/") predictor = AestheticsPredictorV2Linear.from_pretrained(model_id) processor = CLIPProcessor.from_pretrained(model_id) device = "cuda" predictor = predictor.to(device) def get_aesthetics_score(image): inputs = processor(images=image, return_tensors="pt") inputs = {k: v.to(device) for k, v in inputs.items()} with torch.no_grad(): outputs = predictor(**inputs) prediction = outputs.logits return prediction.tolist()[0][0] def evaluate(folder): scores = [] for file_name in os.listdir(folder): if os.path.isfile(os.path.join(folder, file_name)): image = Image.open(os.path.join(folder, file_name)) scores.append(get_aesthetics_score(image)) if len(scores) == 0: return 0 else: return sum(scores) / len(scores) score = evaluate("./images") print(score)
可以看到,生成影像的質量不錯,但是內容形式較為單調,沒有很好地表達我的故事內容。
使用美學評分的結果為:6.50
二、然後,我使用通義千問給出的生成提示詞來進行生成,結果如下:
使用美學評分的結果為:6.40
可以看到,生成影像的內容更加符合我給出的故事描述,這是因為通義千問根據我的描述給出了更細化的生成提示詞。
但是美學評分沒有提升,反而有略微下降。這可能說明提示詞的精細化主要提升了對故事劇情的表現力,而並沒有起到提升質量的效果。
三、試用scepter webui
淺試了一下scepter webui的生成效果,發現生成結果並不穩定,會生成不相關風格的圖片。可能原因是沒有在相應資料集上進行微調訓練。生成結果如下:
總結
作為一個計算機專業的學生,在平時程式設計時會接觸一些比較複雜難懂的程式碼,如果僅憑自己一行行去閱讀程式碼是很費時費力的,還有可能產生誤解。
透過使用AI大語言模型來瞭解程式碼工作流程、獲取程式碼解釋,對於快速理解程式碼功能、幫助自己初步讀懂程式碼,是非常有幫助的。
並且,可以透過精細化調整prompts,並明確表達自己的要求,來使回答更接近自己想要的狀態。
對於文生圖任務,我們也可以透過給出概括的描述,而讓大語言模型來為我們將prompts精細化,並透過自己的調整,使生成影像接近理想的狀態。