更新於 2024/10/19閱讀時間約 6 分鐘

生成式AI繪圖:呼叫Colab,自己也來畫個幾張吧!

今年是AI大爆發的一年,從產生簡報、生成圖片,到Youtube出現AI生成的孫燕姿翻唱歌曲,無論在娛樂或提高工作生產力,生成式AI的潛力似乎才剛被發掘,還有更多應用可期待。今天要介紹幾個有名的AI繪圖服務,如果想要挑戰自己寫code產生圖片,記得看到文章最後喔(你的coding 魂被燃燒起來了嗎?)

有名的AI繪圖服務

今天要介紹幾個有名的AI繪圖服務,如果想要挑戰自己寫code產生圖片,記得看到文章最後喔(你的coding 魂被燃燒起來了嗎?)

Midjourney

目前Midjourney已經開始收費了,從每月8美元起跳。雖說沒付費就無法自己創作,但Midjourney本身是個社群平台,community showcase裡的創作的確還是很令人驚豔。

OpenAI DALL-E-2

DALL-E-2也是釋出ChatGPT的OpenAI開發的,到目前為止每個月他們提供使用者幾個免費credit產生圖片。免費圖片在圖的右下角會有個類似浮水印的彩色方塊小標記,但不明顯。只要提示詞給的好,圖片很有藝術感。

整體來說出圖速度快,圖片品質佳👍。

輸入 "summer plate, berries, kiwi, banana, happy cat flying"提示詞,DALL-E-2生成的作品


Craiyon

諧音類似英文的蠟筆,他們的logo也是蠟筆。同樣也提供免費服務,付費會員出圖速度較快。免費服務大約等個1~2分鐘可以得到9張圖,圖片上也有浮水印。(等待的時間會被強迫看很多廣告,畢竟 AI是個燒錢行業,總是要有些方法支持團隊營運)。下圖是相同提示詞生成的圖片:summer plate, berries, kiwi, banana, happy cat flying,可看出Craiyon產生的圖片風格與OpenAI 明顯不同。OpenAI對於這種天馬行空的提示詞,生成的圖片大多有點小清新配色柔和 ; 而Craiyon生成的作品常常給我一種時空扭曲的超現實感!

輸入 "summer plate, berries, kiwi, banana, happy cat flying"提示詞,Craiyon生成的作品

Colab + Tensorflow KerasCV (100% 免費)

這是100%免費的方案!自己寫python code產生。Tensorflow 在High-performance image generation using Stable Diffusion in KerasCV 這篇文章有很棒的範例,照著他的colab筆記本實作不算太困難。

若遇到缺套件,缺什麼就pip install安裝

直接來看成果:

輸入 "photograph of an astronaut riding a horse" StableDiffusion model 生成的作品

輸入 "A cat family, fancy, pink and purple lovely background" StableDiffusion model 生成的作品

第二張圖好像有點太pink and purple, 也太lovely了

心得

  • AI繪圖看似不難,想要畫得精緻美麗,關鍵在於提供AI精準的描述。所以將來無論你是文科生或理工仔,語文能力勢必更被看重。倘若你文筆好,便可借助AI畫出一口好圖!文字工作者與美術工作者藉著AI將有更多的交集!
  • 以後簡報缺圖片時,快開出colab 幫自己畫個幾張圖,還可避免誤用圖片有侵權的困擾
  • 下次要試試看讓ChatGPT幫忙產生提示詞 (歡迎分享成果)

StableDiffusion Model Python 程式碼範例

參考High-performance image generation using Stable Diffusion in KerasCV內容。可透過colab環境操作,若在本機操作,可能需要更新Tensorflow。

首先安裝需要的套件:

pip install tensorflow keras_cv --upgrade --quiet
pip install keras_core

產生圖片的Python程式碼:

#匯入需要的套件
import time
import keras_cv
from tensorflow import keras
import matplotlib.pyplot as plt

#使用Tensorflow提供的模型
model = keras_cv.models.StableDiffusion(img_width=512, img_height=512)

#匯入需要的套件,將提示詞填入" "當中, batch_size是產生圖片的數量。圖片越多需要時間越長。以下將產生3張圖片
images = model.text_to_image("photograph of an astronaut riding a horse", batch_size=3)

#畫出結果
def plot_images(images):
plt.figure(figsize=(20, 20))
for i in range(len(images)):
ax = plt.subplot(1, len(images), i + 1)
plt.imshow(images[i])
plt.axis("off")


plot_images(images)


文章同步發表於慧思科研雲端教室




分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.