AI 주현절의 YouTube 연습
이것은 Boris Dayma의 Dall · e 미니 (메가 웨이트)의 빠르고 최소한의 항구입니다. 그것은 추론을 위해 제거되었고 Pytorch로 전환되었습니다. 유일한 타사 종속성은 Numpy, 요청, 베개 및 토치입니다.
Dall · E 메가 이미지의 3x3 그리드를 생성하려면 다음과 같습니다.
다음은 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 에 다운로드됩니다. GPU 메모리를 저장하려면 dtype torch.float16 으로 설정하십시오. Ampere Architecture GPU가있는 경우 torch.bfloat16 사용할 수 있습니다. device "CUDA"또는 "CPU"로 설정하십시오. 모든 것이 초기화가 완료되면 원하는만큼 텍스트로 generate_image 호출하십시오. 재현 가능한 결과를 위해 긍정적 인 seed 사용하십시오. supercondition_factor 의 값이 높으면 텍스트와 더 잘 일치하지만 다양한 생성 이미지가 좁습니다. 모든 이미지 토큰은 top_k 에서 가장 가능한 토큰에서 샘플링됩니다. 가장 큰 로이트는 로트에서 빼기 위해 infs를 피합니다. 로그는 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로 이동하고 텐서를 멍청한 배열로 변환해야합니다.
images = images . to ( 'cpu' ). numpy () 그런 다음 이미지
image = Image . fromarray ( images [ i ])
image . save ( 'image_{}.png' . format ( i )) 모델이 대화식으로 사용되는 경우 (예 : 노트북에서) generate_image_stream 사용하여 모델이 디코딩 될 때 이미지 스트림을 생성 할 수 있습니다. detokenizer는 각 이미지에 대해 약간의 지연을 추가합니다. 이를 활성화하려면 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