AI頓悟的YouTube步行
這是Boris Dayma的Dall·e Mini(具有巨型重量)的快速,最小的港口。它已被剝離以進行推理,並轉換為Pytorch。唯一的第三方依賴性是Numpy,請求,枕頭和火炬。
要生成一個3x3網格的dall·e Mega圖像:
這是A100上性能的更詳細的細分。歸功於 @Technobird22和他的Neogen Discord bot。 
可以在此處找到用於將其轉換為火炬的亞麻模型和代碼。
$ pip install min-dalle加載一次模型參數,然後重複使用模型生成多個圖像。
from min_dalle import MinDalle
model = MinDalle (
models_root = './pretrained' ,
dtype = torch . float32 ,
device = 'cuda' ,
is_mega = True ,
is_reusable = True
)如果尚未那裡,則需要將所需的型號下載到models_root 。將dtype設置為torch.float16以保存GPU內存。如果您有安培體系結構GPU,則可以使用torch.bfloat16 。將device設置為“ CUDA”或“ CPU”。一旦所有內容都完成了初始化,請隨意使用一些文本來調用generate_image 。使用陽性seed可再現結果。較高的supercondition_factor值可以更好地與文本一致,但生成的圖像較窄。每個圖像令牌都是從top_k最有可能的令牌中採樣的。最大的logit從logits中減去以避免INF。然後將邏輯除以temperature 。如果is_seamless是正確的,則圖像網格將在令牌空間中舖有瓷磚而不是像素空間。
image = model . generate_image (
text = 'Nuclear explosion broccoli' ,
seed = - 1 ,
grid_size = 4 ,
is_seamless = False ,
temperature = 1 ,
top_k = 256 ,
supercondition_factor = 32 ,
is_verbose = False
)
display ( image )
示例為@hardmaru
如果您想手動處理圖像,這些圖像也可以作為FloatTensor生成。
images = model . generate_images (
text = 'Nuclear explosion broccoli' ,
seed = - 1 ,
grid_size = 3 ,
is_seamless = False ,
temperature = 1 ,
top_k = 256 ,
supercondition_factor = 16 ,
is_verbose = False
)要將圖像變成PIL格式,您必須首先將圖像移至CPU,然後將張量轉換為Numpy陣列。
images = images . to ( 'cpu' ). numpy ()然後圖像
image = Image . fromarray ( images [ i ])
image . save ( 'image_{}.png' . format ( i ))如果模型被交互使用(例如,筆記本中的模型) generate_image_stream可用於在模型解碼時生成圖像流。 denokenizer為每個圖像增加了一個小延遲。將progressive_outputs設置為True以啟用此功能。 COLAB中實現了一個示例。
image_stream = model . generate_image_stream (
text = 'Dali painting of WALL·E' ,
seed = - 1 ,
grid_size = 3 ,
progressive_outputs = True ,
is_seamless = False ,
temperature = 1 ,
top_k = 256 ,
supercondition_factor = 16 ,
is_verbose = False
)
for image in image_stream :
display ( image )
使用image_from_text.py從命令行生成圖像。
$ python image_from_text.py --text= ' artificial intelligence ' --no-mega