Files changed (19) hide show
  1. .gitattributes +35 -30
  2. .gitignore +0 -1
  3. 10o.png +0 -3
  4. 1o.png +0 -3
  5. 2o.png +0 -3
  6. 3o.png +0 -3
  7. 4o.png +0 -3
  8. 5o.png +0 -3
  9. 6o.png +0 -3
  10. 7o.png +0 -3
  11. 8o.png +0 -3
  12. 9o.png +0 -3
  13. README.md +8 -8
  14. app.py +139 -485
  15. nsfweffnetv2-b02-3epochs.h5 +0 -3
  16. patch_sdxl.py +559 -0
  17. requirements.txt +1 -8
  18. safety_checker_improved.py +0 -46
  19. twitter_prompts.csv +2087 -46
.gitattributes CHANGED
@@ -1,30 +1,35 @@
1
- nsfweffnetv2-b02-3epochs.h5 filter=lfs diff=lfs merge=lfs -text
2
- fifth.gemb_.pt filter=lfs diff=lfs merge=lfs -text
3
- ninth.im_.pt filter=lfs diff=lfs merge=lfs -text
4
- tenth.gemb_.pt filter=lfs diff=lfs merge=lfs -text
5
- third.gemb_.pt filter=lfs diff=lfs merge=lfs -text
6
- eigth.gemb_.pt filter=lfs diff=lfs merge=lfs -text
7
- first.gemb_.pt filter=lfs diff=lfs merge=lfs -text
8
- fourth.gemb_.pt filter=lfs diff=lfs merge=lfs -text
9
- ninth.gemb_.pt filter=lfs diff=lfs merge=lfs -text
10
- sixth.gemb_.pt filter=lfs diff=lfs merge=lfs -text
11
- tenth.im_.pt filter=lfs diff=lfs merge=lfs -text
12
- eigth.im_.pt filter=lfs diff=lfs merge=lfs -text
13
- seventh.gemb_.pt filter=lfs diff=lfs merge=lfs -text
14
- sixth.im_.pt filter=lfs diff=lfs merge=lfs -text
15
- third.im_.pt filter=lfs diff=lfs merge=lfs -text
16
- fifth.im_.pt filter=lfs diff=lfs merge=lfs -text
17
- first.im_.pt filter=lfs diff=lfs merge=lfs -text
18
- fourth.im_.pt filter=lfs diff=lfs merge=lfs -text
19
- second.gemb_.pt filter=lfs diff=lfs merge=lfs -text
20
- second.im_.pt filter=lfs diff=lfs merge=lfs -text
21
- seventh.im_.pt filter=lfs diff=lfs merge=lfs -text
22
- image';l';.png filter=lfs diff=lfs merge=lfs -text
23
- second.png filter=lfs diff=lfs merge=lfs -text
24
- sixth.png filter=lfs diff=lfs merge=lfs -text
25
- third.png filter=lfs diff=lfs merge=lfs -text
26
- fifth.png filter=lfs diff=lfs merge=lfs -text
27
- first.png filter=lfs diff=lfs merge=lfs -text
28
- fourth.png filter=lfs diff=lfs merge=lfs -text
29
- *.mp4 filter=lfs diff=lfs merge=lfs -text
30
- *.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore DELETED
@@ -1 +0,0 @@
1
- __pycache__*
 
 
10o.png DELETED

Git LFS Details

  • SHA256: c4cc3479937b13dd2b3d66479a44becd24f5f7e8262e47b93a6ec94883733ffe
  • Pointer size: 132 Bytes
  • Size of remote file: 1.15 MB
1o.png DELETED

Git LFS Details

  • SHA256: a974ed58fe3428b64b808776d43569b7a2dcad667f636c73f9a150c434b46315
  • Pointer size: 132 Bytes
  • Size of remote file: 1.82 MB
2o.png DELETED

Git LFS Details

  • SHA256: 15faf7373356cbcc59531da9d02ffe3642826c156409a4a8d88904aca295ebba
  • Pointer size: 131 Bytes
  • Size of remote file: 357 kB
3o.png DELETED

Git LFS Details

  • SHA256: 38fa93ce97f1108e2d5263d0935f247b894521660b7d3b5145e6a14b76a1a460
  • Pointer size: 132 Bytes
  • Size of remote file: 1.44 MB
4o.png DELETED

Git LFS Details

  • SHA256: 27c35d730f0b67039915ae14a0ea07bd2425bce04525cb88672428177e7b0117
  • Pointer size: 131 Bytes
  • Size of remote file: 956 kB
5o.png DELETED

Git LFS Details

  • SHA256: 5ab520099c498f5e300282522c0a85d1469451d30a77742cc34af80f29182d23
  • Pointer size: 132 Bytes
  • Size of remote file: 1.43 MB
6o.png DELETED

Git LFS Details

  • SHA256: 6cf8b9917283b2c5b2d74d5042d0219f7d458e85d1e0c8189aae99f16e304adb
  • Pointer size: 132 Bytes
  • Size of remote file: 1.53 MB
7o.png DELETED

Git LFS Details

  • SHA256: a2919c8daed335927f5b6cf9b46016bf1717952b9a475db3eee8a1cd36b89d56
  • Pointer size: 132 Bytes
  • Size of remote file: 1.98 MB
8o.png DELETED

Git LFS Details

  • SHA256: ce5a40a8ef28cf70a49b5dc5318f382a738f58d1a838fedae25ee2206e7e174a
  • Pointer size: 132 Bytes
  • Size of remote file: 1.44 MB
9o.png DELETED

Git LFS Details

  • SHA256: d0557ac42ac530a2a562609cde5ecbbeefb49eab392c69ddb7e80187495ba14b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.4 MB
README.md CHANGED
@@ -1,12 +1,12 @@
1
  ---
2
- license: mit
3
- title: Blue Tigers
 
 
4
  sdk: gradio
5
- emoji: 👁
6
- colorFrom: blue
7
- colorTo: purple
8
- pinned: true
9
  ---
10
- # Blue Tigers
11
 
12
- Zahir with movement.
 
1
  ---
2
+ title: Generative Recsys
3
+ emoji: 🐨
4
+ colorFrom: purple
5
+ colorTo: blue
6
  sdk: gradio
7
+ sdk_version: 4.25.0
8
+ app_file: app.py
9
+ pinned: false
 
10
  ---
 
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py CHANGED
@@ -1,336 +1,127 @@
 
1
 
2
-
3
- # TODO unify/merge origin and this
4
- # TODO save & restart from (if it exists) dataframe parquet
5
- import torch
6
-
7
- # lol
8
- DEVICE = 'cuda'
9
- STEPS = 8
10
- output_hidden_state = False
11
- device = "cuda"
12
- dtype = torch.bfloat16
13
-
14
-
15
- import spaces
16
-
17
- import matplotlib.pyplot as plt
18
- import matplotlib
19
- import logging
20
-
21
- import os
22
- import imageio
23
  import gradio as gr
24
  import numpy as np
25
  from sklearn.svm import LinearSVC
 
26
  import pandas as pd
27
- from apscheduler.schedulers.background import BackgroundScheduler
28
- import sched
29
- import threading
 
 
 
30
 
31
  import random
32
  import time
33
- from PIL import Image
34
- # from safety_checker_improved import maybe_nsfw
35
 
 
 
36
 
37
- torch.set_grad_enabled(False)
38
- torch.backends.cuda.matmul.allow_tf32 = True
39
- torch.backends.cudnn.allow_tf32 = True
40
-
41
- prevs_df = pd.DataFrame(columns=['paths', 'embeddings', 'ips', 'user:rating', 'latest_user_to_rate', 'from_user_id', 'text', 'gemb'])
42
 
43
- import spaces
44
- start_time = time.time()
45
 
46
  prompt_list = [p for p in list(set(
47
  pd.read_csv('./twitter_prompts.csv').iloc[:, 1].tolist())) if type(p) == str]
48
 
 
49
 
50
  ####################### Setup Model
51
- from diffusers import EulerDiscreteScheduler, LCMScheduler, AutoencoderTiny, UNet2DConditionModel, AutoencoderKL, AutoPipelineForText2Image
52
- from transformers import CLIPTextModel
53
- from huggingface_hub import hf_hub_download
54
- from safetensors.torch import load_file
55
- from PIL import Image
56
- from transformers import CLIPVisionModelWithProjection
57
- import uuid
58
- import av
59
-
60
- def write_video(file_name, images, fps=16):
61
- container = av.open(file_name, mode="w")
62
-
63
- stream = container.add_stream("h264", rate=fps)
64
- # stream.options = {'preset': 'faster'}
65
- stream.thread_count = 1
66
- stream.width = 512
67
- stream.height = 512
68
- stream.pix_fmt = "yuv420p"
69
-
70
- for img in images:
71
- img = np.array(img)
72
- img = np.round(img).astype(np.uint8)
73
- frame = av.VideoFrame.from_ndarray(img, format="rgb24")
74
- for packet in stream.encode(frame):
75
- container.mux(packet)
76
- # Flush stream
77
- for packet in stream.encode():
78
- container.mux(packet)
79
- # Close the file
80
- container.close()
81
-
82
- def imio_write_video(file_name, images, fps=15):
83
- writer = imageio.get_writer(file_name, fps=fps)
84
-
85
- for im in images:
86
- writer.append_data(np.array(im))
87
- writer.close()
88
-
89
-
90
- image_encoder = CLIPVisionModelWithProjection.from_pretrained("h94/IP-Adapter", subfolder="sdxl_models/image_encoder", torch_dtype=dtype,
91
- device_map='cuda')
92
- #vae = AutoencoderTiny.from_pretrained("madebyollin/taesd", torch_dtype=dtype)
93
-
94
- # vae = ConsistencyDecoderVAE.from_pretrained("openai/consistency-decoder", torch_dtype=dtype)
95
- # vae = compile_unet(vae, config=config)
96
-
97
- #finetune_path = '''/home/ryn_mote/Misc/finetune-sd1.5/dreambooth-model best'''''
98
- #unet = UNet2DConditionModel.from_pretrained(finetune_path+'/unet/').to(dtype)
99
- #text_encoder = CLIPTextModel.from_pretrained(finetune_path+'/text_encoder/').to(dtype)
100
-
101
- #rynmurdock/Sea_Claws
102
  model_id = "stabilityai/stable-diffusion-xl-base-1.0"
103
  sdxl_lightening = "ByteDance/SDXL-Lightning"
104
- ckpt = "sdxl_lightning_8step_unet.safetensors"
105
- unet = UNet2DConditionModel.from_config(model_id, subfolder="unet", low_cpu_mem_usage=True, device_map=DEVICE).to(torch.float16)
106
- unet.load_state_dict(load_file(hf_hub_download(sdxl_lightening, ckpt)))
107
-
108
- image_encoder = CLIPVisionModelWithProjection.from_pretrained("h94/IP-Adapter", subfolder="models/image_encoder", torch_dtype=torch.float16, low_cpu_mem_usage=True, device_map=DEVICE)
109
- pipe = AutoPipelineForText2Image.from_pretrained(model_id, unet=unet, torch_dtype=torch.float16, variant="fp16", image_encoder=image_encoder, low_cpu_mem_usage=True)
110
- pipe.unet._load_ip_adapter_weights(torch.load(hf_hub_download('h94/IP-Adapter', 'sdxl_models/ip-adapter_sdxl_vit-h.bin')))
111
- pipe.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter_sdxl_vit-h.bin")
112
- pipe.register_modules(image_encoder = image_encoder)
113
- pipe.set_ip_adapter_scale(0.8)
114
-
115
- #pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesdxl", torch_dtype=torch.float16, low_cpu_mem_usage=True)
116
  pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config, timestep_spacing="trailing")
 
 
117
 
118
- pipe.to(device=DEVICE).to(dtype=dtype)
119
  output_hidden_state = False
 
120
 
121
-
122
-
123
-
124
- # pipe.unet.fuse_qkv_projections()
125
- #pipe.enable_free_init(method="gaussian", use_fast_sampling=True)
126
-
127
- #pipe.unet = torch.compile(pipe.unet)
128
- #pipe.vae = torch.compile(pipe.vae)
129
-
130
-
131
-
132
- @spaces.GPU()
133
- def generate_gpu(in_im_embs, prompt='the scene'):
134
  with torch.no_grad():
135
- print(prompt)
136
- in_im_embs = in_im_embs.to('cuda').unsqueeze(0)
137
- output = pipe(prompt=prompt, guidance_scale=1, added_cond_kwargs={}, ip_adapter_image_embeds=[in_im_embs], num_inference_steps=STEPS)
 
 
 
 
 
 
 
138
  im_emb, _ = pipe.encode_image(
139
- output.images[0], 'cuda', 1, output_hidden_state
140
- )
141
- im_emb = im_emb.detach().to('cpu').to(torch.float32)
142
- return output, im_emb
143
-
144
-
145
- def generate(in_im_embs, prompt='the scene'):
146
- output, im_emb = generate_gpu(in_im_embs, prompt)
147
- nsfw = False#maybe_nsfw(output.images[0])
148
-
149
- name = str(uuid.uuid4()).replace("-", "")
150
- path = f"/tmp/{name}.png"
151
-
152
- if nsfw:
153
- gr.Warning("NSFW content detected.")
154
- # TODO could return an automatic dislike of auto dislike on the backend for neither as well; just would need refactoring.
155
- return None, im_emb
156
-
157
- output.images[0].save(path)
158
- return path, im_emb
159
-
160
-
161
- #######################
162
-
163
-
164
-
165
 
 
 
166
 
 
 
 
167
 
168
- @spaces.GPU()
169
- def solver(embs, ys):
170
- print('ys:', ys,'EMBS:', embs.shape, embs)
171
- ys = torch.tensor(ys).to('cpu', dtype=torch.float32).squeeze().unsqueeze(1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
 
173
- sol = LinearSVC(class_weight='balanced').fit(np.array(embs), np.array(torch.tensor(ys).float() * 2 - 1)).coef_
174
- return torch.tensor(sol).to('cpu', dtype=torch.float32)
175
 
 
 
 
 
176
 
 
 
 
177
 
178
 
179
- def get_user_emb(embs, ys):
180
- # sample only as many negatives as there are positives
181
- indices = range(len(ys))
182
- pos_indices = [i for i in indices if ys[i] > .5]
183
- neg_indices = [i for i in indices if ys[i] <= .5]
184
-
185
- mini = min(len(pos_indices), len(neg_indices))
186
 
187
- if len(ys) > 20: # drop earliest of whichever of neg or pos is most abundant
188
- if len(pos_indices) > len(neg_indices):
189
- ind = pos_indices[0]
190
- else:
191
- ind = neg_indices[0]
192
- ys.pop(ind)
193
- embs.pop(ind)
194
- print('Dropping at 20')
195
-
196
- if mini < 1:
197
- feature_embs = torch.stack([torch.randn(1024), torch.randn(1024)])
198
- ys_t = [0, 1]
199
- print('Not enough ratings.')
200
- else:
201
- indices = range(len(ys))
202
- ys_t = [ys[i] for i in indices]
203
- feature_embs = torch.stack([embs[e].detach().cpu() for e in indices]).squeeze()
204
-
205
- # scaler = preprocessing.StandardScaler().fit(feature_embs)
206
- # feature_embs = scaler.transform(feature_embs)
207
- # ys_t = ys
208
-
209
- print(np.array(feature_embs).shape, np.array(ys_t).shape)
210
-
211
- sol = solver(feature_embs.squeeze(), ys_t)
212
- dif = torch.tensor(sol, dtype=dtype).to(device)
213
-
214
- # could j have a base vector of a black image
215
- latest_pos = (random.sample([feature_embs[i] for i in range(len(ys_t)) if ys_t[i] > .5], 1)[0]).to(device, dtype)
216
-
217
- dif = ((dif / dif.std()) * latest_pos.std())
218
-
219
- sol = (1*latest_pos + 3*dif)/4
220
- return sol
221
-
222
-
223
- def pluck_img(user_id, user_emb):
224
- not_rated_rows = prevs_df[[i[1]['user:rating'].get(user_id, 'gone') == 'gone' for i in prevs_df.iterrows()]]
225
- while len(not_rated_rows) == 0:
226
- not_rated_rows = prevs_df[[i[1]['user:rating'].get(user_id, 'gone') == 'gone' for i in prevs_df.iterrows()]]
227
- time.sleep(.1)
228
- # TODO optimize this lol
229
- best_sim = -100000
230
- for i in not_rated_rows.iterrows():
231
- # TODO sloppy .to but it is 3am.
232
- sim = torch.cosine_similarity(i[1]['embeddings'].detach().to('cpu'), user_emb.detach().to('cpu'))
233
- if sim > best_sim:
234
- best_sim = sim
235
- best_row = i[1]
236
- img = best_row['paths']
237
- return img
238
-
239
-
240
- def background_next_image():
241
- global prevs_df
242
- # only let it get N (maybe 3) ahead of the user
243
- #not_rated_rows = prevs_df[[i[1]['user:rating'] == {' ': ' '} for i in prevs_df.iterrows()]]
244
- rated_rows = prevs_df[[i[1]['user:rating'] != {' ': ' '} for i in prevs_df.iterrows()]]
245
- if len(rated_rows) < 4:
246
- time.sleep(.1)
247
- # not_rated_rows = prevs_df[[i[1]['user:rating'] == {' ': ' '} for i in prevs_df.iterrows()]]
248
- return
249
-
250
- user_id_list = set(rated_rows['latest_user_to_rate'].to_list())
251
- for uid in user_id_list:
252
- rated_rows = prevs_df[[i[1]['user:rating'].get(uid, None) is not None for i in prevs_df.iterrows()]]
253
- not_rated_rows = prevs_df[[i[1]['user:rating'].get(uid, None) is None for i in prevs_df.iterrows()]]
254
-
255
- # we need to intersect not_rated_rows from this user's embed > 7. Just add a new column on which user_id spawned the
256
- # media.
257
-
258
- unrated_from_user = not_rated_rows[[i[1]['from_user_id'] == uid for i in not_rated_rows.iterrows()]]
259
- rated_from_user = rated_rows[[i[1]['from_user_id'] == uid for i in rated_rows.iterrows()]]
260
-
261
- # we pop previous ratings if there are > n
262
- if len(rated_from_user) >= 15:
263
- oldest = rated_from_user.iloc[0]['paths']
264
- prevs_df = prevs_df[prevs_df['paths'] != oldest]
265
- # we don't compute more after n are in the queue for them
266
- if len(unrated_from_user) >= 10:
267
- continue
268
-
269
- if len(rated_rows) < 5:
270
- continue
271
-
272
- embs, ys = pluck_embs_ys(uid)
273
-
274
- user_emb = get_user_emb(embs, [y[1] for y in ys])
275
-
276
-
277
- global glob_idx
278
- glob_idx += 1
279
- if glob_idx >= (len(prompt_list)-1):
280
- glob_idx = 0
281
-
282
-
283
- if glob_idx % 7 == 0:
284
- text = prompt_list[glob_idx]
285
- else:
286
- text = 'an image'
287
- img, embs = generate(user_emb, text)
288
-
289
- if img:
290
- tmp_df = pd.DataFrame(columns=['paths', 'embeddings', 'ips', 'user:rating', 'latest_user_to_rate', 'text', 'gemb'])
291
- tmp_df['paths'] = [img]
292
- tmp_df['embeddings'] = [embs]
293
- tmp_df['user:rating'] = [{' ': ' '}]
294
- tmp_df['from_user_id'] = [uid]
295
- tmp_df['text'] = [text]
296
- prevs_df = pd.concat((prevs_df, tmp_df))
297
- # we can free up storage by deleting the image
298
- if len(prevs_df) > 500:
299
- oldest_path = prevs_df.iloc[6]['paths']
300
- if os.path.isfile(oldest_path):
301
- os.remove(oldest_path)
302
- else:
303
- # If it fails, inform the user.
304
- print("Error: %s file not found" % oldest_path)
305
- # only keep 50 images & embeddings & ips, then remove oldest besides calibrating
306
- prevs_df = pd.concat((prevs_df.iloc[:6], prevs_df.iloc[7:]))
307
-
308
-
309
- def pluck_embs_ys(user_id):
310
- rated_rows = prevs_df[[i[1]['user:rating'].get(user_id, None) != None for i in prevs_df.iterrows()]]
311
- #not_rated_rows = prevs_df[[i[1]['user:rating'].get(user_id, None) == None for i in prevs_df.iterrows()]]
312
- #while len(not_rated_rows) == 0:
313
- # not_rated_rows = prevs_df[[i[1]['user:rating'].get(user_id, None) == None for i in prevs_df.iterrows()]]
314
- # rated_rows = prevs_df[[i[1]['user:rating'].get(user_id, None) != None for i in prevs_df.iterrows()]]
315
- # time.sleep(.01)
316
- # print('current user has 0 not_rated_rows')
317
-
318
- embs = rated_rows['embeddings'].to_list()
319
- ys = [i[user_id] for i in rated_rows['user:rating'].to_list()]
320
- return embs, ys
321
-
322
- def next_image(calibrate_prompts, user_id):
323
- with torch.no_grad():
324
- if len(calibrate_prompts) > 0:
325
- cal_video = calibrate_prompts.pop(0)
326
- image = prevs_df[prevs_df['paths'] == cal_video]['paths'].to_list()[0]
327
- return image, calibrate_prompts,
328
- else:
329
- embs, ys = pluck_embs_ys(user_id)
330
- ys_here = [y[1] for y in ys]
331
- user_emb = get_user_emb(embs, ys_here)
332
- image = pluck_img(user_id, user_emb)
333
- return image, calibrate_prompts,
334
 
335
 
336
 
@@ -340,72 +131,39 @@ def next_image(calibrate_prompts, user_id):
340
 
341
 
342
 
343
- def start(_, calibrate_prompts, user_id, request: gr.Request):
344
- user_id = int(str(time.time())[-7:].replace('.', ''))
345
- image, calibrate_prompts = next_image(calibrate_prompts, user_id)
346
  return [
347
- gr.Button(value='👍', interactive=True),
348
- gr.Button(value='Neither (Space)', interactive=True, visible=False),
349
- gr.Button(value='👎', interactive=True),
350
  gr.Button(value='Start', interactive=False),
351
- gr.Button(value='👍 Content', interactive=True, visible=False),
352
- gr.Button(value='👍 Style', interactive=True, visible=False),
353
  image,
354
- calibrate_prompts,
355
- user_id,
356
-
357
  ]
358
 
359
 
360
- def choose(img, choice, calibrate_prompts, user_id, request: gr.Request):
361
- global prevs_df
362
-
363
-
364
- if choice == '👍':
365
- choice = [1, 1]
366
- elif choice == 'Neither (Space)':
367
- img, calibrate_prompts, = next_image(calibrate_prompts, user_id)
368
- return img, calibrate_prompts,
369
- elif choice == '👎':
370
- choice = [0, 0]
371
- elif choice == '👍 Style':
372
- choice = [0, 1]
373
- elif choice == '👍 Content':
374
- choice = [1, 0]
375
  else:
376
- assert False, f'choice is {choice}'
377
-
378
- # if we detected NSFW, leave that area of latent space regardless of how they rated chosen.
379
- # TODO skip allowing rating & just continue
380
-
381
- if img is None:
382
- print('NSFW -- choice is disliked')
383
- choice = [0, 0]
384
-
385
- row_mask = [p.split('/')[-1] in img for p in prevs_df['paths'].to_list()]
386
- # if it's still in the dataframe, add the choice
387
- if len(prevs_df.loc[row_mask, 'user:rating']) > 0:
388
- prevs_df.loc[row_mask, 'user:rating'][0][user_id] = choice
389
- print(row_mask, prevs_df.loc[row_mask, 'latest_user_to_rate'], [user_id])
390
- prevs_df.loc[row_mask, 'latest_user_to_rate'] = [user_id]
391
- img, calibrate_prompts = next_image(calibrate_prompts, user_id)
392
- return img, calibrate_prompts
393
 
394
  css = '''.gradio-container{max-width: 700px !important}
395
  #description{text-align: center}
396
- #description h1, #description h3{display: block}
397
  #description p{margin-top: 0}
398
- .fade-in-out {animation: fadeInOut 3s forwards}
399
- @keyframes fadeInOut {
400
- 0% {
401
- background: var(--bg-color);
402
- }
403
- 100% {
404
- background: var(--button-secondary-background-fill);
405
- }
406
- }
407
  '''
408
- js_head = '''
409
  <script>
410
  document.addEventListener('keydown', function(event) {
411
  if (event.key === 'a' || event.key === 'A') {
@@ -419,158 +177,54 @@ document.addEventListener('keydown', function(event) {
419
  document.getElementById('like').click();
420
  }
421
  });
422
- function fadeInOut(button, color) {
423
- button.style.setProperty('--bg-color', color);
424
- button.classList.remove('fade-in-out');
425
- void button.offsetWidth; // This line forces a repaint by accessing a DOM property
426
-
427
- button.classList.add('fade-in-out');
428
- button.addEventListener('animationend', () => {
429
- button.classList.remove('fade-in-out'); // Reset the animation state
430
- }, {once: true});
431
- }
432
- document.body.addEventListener('click', function(event) {
433
- const target = event.target;
434
- if (target.id === 'dislike') {
435
- fadeInOut(target, '#ff1717');
436
- } else if (target.id === 'like') {
437
- fadeInOut(target, '#006500');
438
- } else if (target.id === 'neither') {
439
- fadeInOut(target, '#cccccc');
440
- }
441
- });
442
-
443
  </script>
444
  '''
445
 
446
- with gr.Blocks(css=css, head=js_head) as demo:
447
- gr.Markdown('''# Zahir
448
- ### Generative Recommenders for Exporation of Possible Images
449
-
450
- Explore the latent space without text prompts based on your preferences. Learn more on [the write-up](https://rynmurdock.github.io/posts/2024/3/generative_recomenders/).
451
  ''', elem_id="description")
452
- user_id = gr.State()
453
- # calibration videos -- this is a misnomer now :D
454
  calibrate_prompts = gr.State([
455
- './5o.png',
456
- './2o.png',
457
- './6o.png',
458
- './7o.png',
459
- './1o.png',
460
- './8o.png',
461
- './3o.png',
462
- './4o.png',
463
- './10o.png',
464
- './9o.png',
465
  ])
466
- def l():
467
- return None
468
 
469
  with gr.Row(elem_id='output-image'):
470
- img = gr.Image(
471
- label='Lightning',
472
- # autoplay=True,
473
- interactive=False,
474
- # height=512,
475
- # width=512,
476
- #include_audio=False,
477
- elem_id="video_output",
478
- type='filepath',
479
- )
480
- #img.play(l, js='''document.querySelector('[data-testid="Lightning-player"]').loop = true''')
481
-
482
-
483
-
484
  with gr.Row(equal_height=True):
485
- b3 = gr.Button(value='👎', interactive=False, elem_id="dislike")
486
-
487
- b2 = gr.Button(value='Neither (Space)', interactive=False, elem_id="neither", visible=False)
488
-
489
- b1 = gr.Button(value='👍', interactive=False, elem_id="like")
490
- with gr.Row(equal_height=True):
491
- b6 = gr.Button(value='👍 Style', interactive=False, elem_id="dislike like", visible=False)
492
-
493
- b5 = gr.Button(value='👍 Content', interactive=False, elem_id="like dislike", visible=False)
494
-
495
  b1.click(
496
  choose,
497
- [img, b1, calibrate_prompts, user_id],
498
- [img, calibrate_prompts, ],
499
  )
500
  b2.click(
501
  choose,
502
- [img, b2, calibrate_prompts, user_id],
503
- [img, calibrate_prompts, ],
504
  )
505
  b3.click(
506
  choose,
507
- [img, b3, calibrate_prompts, user_id],
508
- [img, calibrate_prompts, ],
509
- )
510
- b5.click(
511
- choose,
512
- [img, b5, calibrate_prompts, user_id],
513
- [img, calibrate_prompts, ],
514
- )
515
- b6.click(
516
- choose,
517
- [img, b6, calibrate_prompts, user_id],
518
- [img, calibrate_prompts, ],
519
  )
520
  with gr.Row():
521
  b4 = gr.Button(value='Start')
522
  b4.click(start,
523
- [b4, calibrate_prompts, user_id],
524
- [b1, b2, b3, b4, b5, b6, img, calibrate_prompts, user_id, ]
525
- )
526
  with gr.Row():
527
- html = gr.HTML('''<div style='text-align:center; font-size:20px'>You will calibrate for several images and then roam. </ div><br><br><br>
528
-
529
- <br><br>
530
- <div style='text-align:center; font-size:14px'>Thanks to @multimodalart for their contributions to the demo, esp. the interface and @maxbittker for feedback.
531
- </ div>''')
532
-
533
- # TODO quiet logging
534
-
535
- scheduler = BackgroundScheduler()
536
- scheduler.add_job(func=background_next_image, trigger="interval", seconds=.2)
537
- scheduler.start()
538
-
539
- #thread = threading.Thread(target=background_next_image,)
540
- #thread.start()
541
-
542
- # TODO shouldn't call this before gradio launch, yeah?
543
- @spaces.GPU()
544
- def encode_space(x):
545
- im_emb, _ = pipe.encode_image(
546
- image, DEVICE, 1, output_hidden_state
547
- )
548
- return im_emb.detach().to('cpu').to(torch.float32)
549
-
550
- # prep our calibration videos
551
- for im, txt in [ # DO NOT NAME THESE PNGs JUST NUMBERS! apparently we assign images by number
552
- ('./1o.png', 'describe the scene: omens in the suburbs'),
553
- ('./2o.png', 'describe the scene: geometric abstract art of a windmill'),
554
- ('./3o.png', 'describe the scene: memento mori'),
555
- ('./4o.png', 'describe the scene: a green plate with anespresso'),
556
- ('./5o.png', '5 '),
557
- ('./6o.png', '6 '),
558
- ('./7o.png', '7 '),
559
- ('./8o.png', '8 '),
560
- ('./9o.png', '9 '),
561
- ('./10o.png', '10 '),
562
- ]:
563
- tmp_df = pd.DataFrame(columns=['paths', 'embeddings', 'ips', 'user:rating', 'text', 'gemb'])
564
- tmp_df['paths'] = [im]
565
- image = Image.open(im).convert('RGB')
566
- im_emb = encode_space(image)
567
-
568
- tmp_df['embeddings'] = [im_emb.detach().to('cpu')]
569
- tmp_df['user:rating'] = [{' ': ' '}]
570
- tmp_df['text'] = [txt]
571
- prevs_df = pd.concat((prevs_df, tmp_df))
572
-
573
- glob_idx = 0
574
- demo.launch(share=True,)
575
-
576
 
 
 
1
+ DEVICE = 'cpu'
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import gradio as gr
4
  import numpy as np
5
  from sklearn.svm import LinearSVC
6
+ from sklearn import preprocessing
7
  import pandas as pd
8
+
9
+ from diffusers import LCMScheduler, AutoencoderTiny, EulerDiscreteScheduler, UNet2DConditionModel
10
+ from diffusers.models import ImageProjection
11
+ from patch_sdxl import SDEmb
12
+ import torch
13
+ import spaces
14
 
15
  import random
16
  import time
 
 
17
 
18
+ import torch
19
+ from urllib.request import urlopen
20
 
21
+ from PIL import Image
22
+ import requests
23
+ from io import BytesIO, StringIO
 
 
24
 
25
+ from huggingface_hub import hf_hub_download
26
+ from safetensors.torch import load_file
27
 
28
  prompt_list = [p for p in list(set(
29
  pd.read_csv('./twitter_prompts.csv').iloc[:, 1].tolist())) if type(p) == str]
30
 
31
+ start_time = time.time()
32
 
33
  ####################### Setup Model
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  model_id = "stabilityai/stable-diffusion-xl-base-1.0"
35
  sdxl_lightening = "ByteDance/SDXL-Lightning"
36
+ ckpt = "sdxl_lightning_2step_unet.safetensors"
37
+ unet = UNet2DConditionModel.from_config(model_id, subfolder="unet").to("cuda", torch.float16)
38
+ unet.load_state_dict(load_file(hf_hub_download(sdxl_lightening, ckpt), device="cuda"))
39
+ pipe = SDEmb.from_pretrained(model_id, unet=unet, torch_dtype=torch.float16, variant="fp16").to("cuda")
40
+ pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesdxl", torch_dtype=torch.float16)
 
 
 
 
 
 
 
41
  pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config, timestep_spacing="trailing")
42
+ pipe.to(device='cuda')
43
+ pipe.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter_sdxl.bin")
44
 
 
45
  output_hidden_state = False
46
+ #######################
47
 
48
+ @spaces.GPU
49
+ def predict(
50
+ prompt,
51
+ im_emb=None,
52
+ progress=gr.Progress(track_tqdm=True)
53
+ ):
54
+ """Run a single prediction on the model"""
 
 
 
 
 
 
55
  with torch.no_grad():
56
+ if im_emb == None:
57
+ im_emb = torch.zeros(1, 1280, dtype=torch.float16, device='cuda')
58
+ image = pipe(
59
+ prompt=prompt,
60
+ ip_adapter_emb=im_emb.to('cuda'),
61
+ height=1024,
62
+ width=1024,
63
+ num_inference_steps=2,
64
+ guidance_scale=0,
65
+ ).images[0]
66
  im_emb, _ = pipe.encode_image(
67
+ image, 'cuda', 1, output_hidden_state
68
+ )
69
+ return image, im_emb.to(DEVICE)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
+ # TODO add to state instead of shared across all
72
+ glob_idx = 0
73
 
74
+ def next_image(embs, ys, calibrate_prompts):
75
+ global glob_idx
76
+ glob_idx = glob_idx + 1
77
 
78
+ # handle case where every instance of calibration prompts is 'Neither' or 'Like' or 'Dislike'
79
+ if len(calibrate_prompts) == 0 and len(list(set(ys))) <= 1:
80
+ embs.append(.01*torch.randn(1, 1280))
81
+ embs.append(.01*torch.randn(1, 1280))
82
+ ys.append(0)
83
+ ys.append(1)
84
+
85
+ with torch.no_grad():
86
+ if len(calibrate_prompts) > 0:
87
+ print('######### Calibrating with sample prompts #########')
88
+ prompt = calibrate_prompts.pop(0)
89
+ print(prompt)
90
+ image, img_emb = predict(prompt)
91
+ embs.append(img_emb)
92
+ return image, embs, ys, calibrate_prompts
93
+ else:
94
+ print('######### Roaming #########')
95
+ # sample only as many negatives as there are positives
96
+ indices = range(len(ys))
97
+ pos_indices = [i for i in indices if ys[i] == 1]
98
+ neg_indices = [i for i in indices if ys[i] == 0]
99
+ lower = min(len(pos_indices), len(neg_indices))
100
+ neg_indices = random.sample(neg_indices, lower)
101
+ pos_indices = random.sample(pos_indices, lower)
102
 
103
+ cut_embs = [embs[i] for i in neg_indices] + [embs[i] for i in pos_indices]
104
+ cut_ys = [ys[i] for i in neg_indices] + [ys[i] for i in pos_indices]
105
 
106
+ feature_embs = torch.stack([e[0].detach().cpu() for e in cut_embs])
107
+ scaler = preprocessing.StandardScaler().fit(feature_embs)
108
+ feature_embs = scaler.transform(feature_embs)
109
+ print(np.array(feature_embs).shape, np.array(ys).shape)
110
 
111
+ lin_class = LinearSVC(max_iter=50000, dual='auto', class_weight='balanced').fit(np.array(feature_embs), np.array(cut_ys))
112
+ lin_class.coef_ = torch.tensor(lin_class.coef_, dtype=torch.double)
113
+ lin_class.coef_ = (lin_class.coef_.flatten() / (lin_class.coef_.flatten().norm())).unsqueeze(0)
114
 
115
 
116
+ rng_prompt = random.choice(prompt_list)
 
 
 
 
 
 
117
 
118
+ w = 1# if len(embs) % 2 == 0 else 0
119
+ im_emb = w * lin_class.coef_.to(device=DEVICE, dtype=torch.float16)
120
+ prompt= 'an image' if glob_idx % 2 == 0 else rng_prompt
121
+ print(prompt)
122
+ image, im_emb = predict(prompt, im_emb)
123
+ embs.append(im_emb)
124
+ return image, embs, ys, calibrate_prompts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
 
127
 
 
131
 
132
 
133
 
134
+ def start(_, embs, ys, calibrate_prompts):
135
+ image, embs, ys, calibrate_prompts = next_image(embs, ys, calibrate_prompts)
 
136
  return [
137
+ gr.Button(value='Like (L)', interactive=True),
138
+ gr.Button(value='Neither (Space)', interactive=True),
139
+ gr.Button(value='Dislike (A)', interactive=True),
140
  gr.Button(value='Start', interactive=False),
 
 
141
  image,
142
+ embs,
143
+ ys,
144
+ calibrate_prompts
145
  ]
146
 
147
 
148
+ def choose(choice, embs, ys, calibrate_prompts):
149
+ if choice == 'Like':
150
+ choice = 1
151
+ elif choice == 'Neither':
152
+ _ = embs.pop(-1)
153
+ img, embs, ys, calibrate_prompts = next_image(embs, ys, calibrate_prompts)
154
+ return img, embs, ys, calibrate_prompts
 
 
 
 
 
 
 
 
155
  else:
156
+ choice = 0
157
+ ys.append(choice)
158
+ img, embs, ys, calibrate_prompts = next_image(embs, ys, calibrate_prompts)
159
+ return img, embs, ys, calibrate_prompts
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
  css = '''.gradio-container{max-width: 700px !important}
162
  #description{text-align: center}
163
+ #description h1{display: block}
164
  #description p{margin-top: 0}
 
 
 
 
 
 
 
 
 
165
  '''
166
+ js = '''
167
  <script>
168
  document.addEventListener('keydown', function(event) {
169
  if (event.key === 'a' || event.key === 'A') {
 
177
  document.getElementById('like').click();
178
  }
179
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  </script>
181
  '''
182
 
183
+ with gr.Blocks(css=css, head=js) as demo:
184
+ gr.Markdown('''# Generative Recommenders
185
+ Explore the latent space without text prompts, based on your preferences. [Learn more on the blog](https://rynmurdock.github.io/posts/2024/3/generative_recomenders/)
 
 
186
  ''', elem_id="description")
187
+ embs = gr.State([])
188
+ ys = gr.State([])
189
  calibrate_prompts = gr.State([
190
+ "4k photo",
191
+ 'surrealist art',
192
+ # 'a psychedelic, fractal view',
193
+ 'a beautiful collage',
194
+ 'abstract art',
195
+ 'an eldritch image',
196
+ 'a sketch',
197
+ # 'a city full of darkness and graffiti',
198
+ '',
 
199
  ])
 
 
200
 
201
  with gr.Row(elem_id='output-image'):
202
+ img = gr.Image(interactive=False, elem_id='output-image',width=700)
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  with gr.Row(equal_height=True):
204
+ b3 = gr.Button(value='Dislike (A)', interactive=False, elem_id="dislike")
205
+ b2 = gr.Button(value='Neither (Space)', interactive=False, elem_id="neither")
206
+ b1 = gr.Button(value='Like (L)', interactive=False, elem_id="like")
 
 
 
 
 
 
 
207
  b1.click(
208
  choose,
209
+ [b1, embs, ys, calibrate_prompts],
210
+ [img, embs, ys, calibrate_prompts]
211
  )
212
  b2.click(
213
  choose,
214
+ [b2, embs, ys, calibrate_prompts],
215
+ [img, embs, ys, calibrate_prompts]
216
  )
217
  b3.click(
218
  choose,
219
+ [b3, embs, ys, calibrate_prompts],
220
+ [img, embs, ys, calibrate_prompts]
 
 
 
 
 
 
 
 
 
 
221
  )
222
  with gr.Row():
223
  b4 = gr.Button(value='Start')
224
  b4.click(start,
225
+ [b4, embs, ys, calibrate_prompts],
226
+ [b1, b2, b3, b4, img, embs, ys, calibrate_prompts])
 
227
  with gr.Row():
228
+ html = gr.HTML('''<div style='text-align:center; font-size:20px'>You will calibrate for several prompts and then roam.</ div>''')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
 
230
+ demo.launch() # Share your demo with just 1 extra parameter 🚀
nsfweffnetv2-b02-3epochs.h5 DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:91422f388d1632c1af21b3d787b4f6c1a8e6114f600162d392b0bf285ff8a433
3
- size 71027272
 
 
 
 
patch_sdxl.py ADDED
@@ -0,0 +1,559 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import inspect
2
+ from typing import Any, Callable, Dict, List, Optional, Union, Tuple
3
+
4
+ from diffusers import StableDiffusionXLPipeline
5
+
6
+ import torch
7
+ from packaging import version
8
+ from transformers import CLIPImageProcessor, CLIPTextModel, CLIPTokenizer, CLIPVisionModelWithProjection
9
+
10
+ from diffusers.configuration_utils import FrozenDict
11
+ from diffusers.image_processor import PipelineImageInput, VaeImageProcessor
12
+ from diffusers.loaders import FromSingleFileMixin, IPAdapterMixin, LoraLoaderMixin, TextualInversionLoaderMixin
13
+ from diffusers.models import AutoencoderKL, ImageProjection, UNet2DConditionModel
14
+ from diffusers.models.attention_processor import FusedAttnProcessor2_0
15
+ from diffusers.models.lora import adjust_lora_scale_text_encoder
16
+ from diffusers.schedulers import KarrasDiffusionSchedulers
17
+ from diffusers.utils import (
18
+ USE_PEFT_BACKEND,
19
+ deprecate,
20
+ logging,
21
+ replace_example_docstring,
22
+ scale_lora_layers,
23
+ unscale_lora_layers,
24
+ )
25
+ from diffusers.pipelines.stable_diffusion_xl import StableDiffusionXLPipelineOutput
26
+
27
+
28
+
29
+ from transformers import CLIPFeatureExtractor
30
+ import numpy as np
31
+ import torch
32
+ from PIL import Image
33
+ from typing import Optional, Tuple, Union
34
+
35
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
36
+ torch_device = device
37
+ torch_dtype = torch.float16
38
+
39
+
40
+ logger = logging.get_logger(__name__) # pylint: disable=invalid-name
41
+
42
+ EXAMPLE_DOC_STRING = """
43
+ Examples:
44
+ ```py
45
+ >>> import torch
46
+ >>> from diffusers import StableDiffusionPipeline
47
+
48
+ >>> pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
49
+ >>> pipe = pipe.to("cuda")
50
+
51
+ >>> prompt = "a photo of an astronaut riding a horse on mars"
52
+ >>> image = pipe(prompt).images[0]
53
+ ```
54
+ """
55
+
56
+
57
+ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0):
58
+ """
59
+ Rescale `noise_cfg` according to `guidance_rescale`. Based on findings of [Common Diffusion Noise Schedules and
60
+ Sample Steps are Flawed](https://arxiv.org/pdf/2305.08891.pdf). See Section 3.4
61
+ """
62
+ std_text = noise_pred_text.std(dim=list(range(1, noise_pred_text.ndim)), keepdim=True)
63
+ std_cfg = noise_cfg.std(dim=list(range(1, noise_cfg.ndim)), keepdim=True)
64
+ # rescale the results from guidance (fixes overexposure)
65
+ noise_pred_rescaled = noise_cfg * (std_text / std_cfg)
66
+ # mix with the original results from guidance by factor guidance_rescale to avoid "plain looking" images
67
+ noise_cfg = guidance_rescale * noise_pred_rescaled + (1 - guidance_rescale) * noise_cfg
68
+ return noise_cfg
69
+
70
+
71
+ def retrieve_timesteps(
72
+ scheduler,
73
+ num_inference_steps: Optional[int] = None,
74
+ device: Optional[Union[str, torch.device]] = None,
75
+ timesteps: Optional[List[int]] = None,
76
+ **kwargs,
77
+ ):
78
+ """
79
+ Calls the scheduler's `set_timesteps` method and retrieves timesteps from the scheduler after the call. Handles
80
+ custom timesteps. Any kwargs will be supplied to `scheduler.set_timesteps`.
81
+
82
+ Args:
83
+ scheduler (`SchedulerMixin`):
84
+ The scheduler to get timesteps from.
85
+ num_inference_steps (`int`):
86
+ The number of diffusion steps used when generating samples with a pre-trained model. If used,
87
+ `timesteps` must be `None`.
88
+ device (`str` or `torch.device`, *optional*):
89
+ The device to which the timesteps should be moved to. If `None`, the timesteps are not moved.
90
+ timesteps (`List[int]`, *optional*):
91
+ Custom timesteps used to support arbitrary spacing between timesteps. If `None`, then the default
92
+ timestep spacing strategy of the scheduler is used. If `timesteps` is passed, `num_inference_steps`
93
+ must be `None`.
94
+
95
+ Returns:
96
+ `Tuple[torch.Tensor, int]`: A tuple where the first element is the timestep schedule from the scheduler and the
97
+ second element is the number of inference steps.
98
+ """
99
+ if timesteps is not None:
100
+ accepts_timesteps = "timesteps" in set(inspect.signature(scheduler.set_timesteps).parameters.keys())
101
+ if not accepts_timesteps:
102
+ raise ValueError(
103
+ f"The current scheduler class {scheduler.__class__}'s `set_timesteps` does not support custom"
104
+ f" timestep schedules. Please check whether you are using the correct scheduler."
105
+ )
106
+ scheduler.set_timesteps(timesteps=timesteps, device=device, **kwargs)
107
+ timesteps = scheduler.timesteps
108
+ num_inference_steps = len(timesteps)
109
+ else:
110
+ scheduler.set_timesteps(num_inference_steps, device=device, **kwargs)
111
+ timesteps = scheduler.timesteps
112
+ return timesteps, num_inference_steps
113
+
114
+
115
+ class SDEmb(StableDiffusionXLPipeline):
116
+ @torch.no_grad()
117
+ @replace_example_docstring(EXAMPLE_DOC_STRING)
118
+ def __call__(
119
+ self,
120
+ prompt: Union[str, List[str]] = None,
121
+ prompt_2: Optional[Union[str, List[str]]] = None,
122
+ height: Optional[int] = None,
123
+ width: Optional[int] = None,
124
+ num_inference_steps: int = 50,
125
+ timesteps: List[int] = None,
126
+ denoising_end: Optional[float] = None,
127
+ guidance_scale: float = 5.0,
128
+ negative_prompt: Optional[Union[str, List[str]]] = None,
129
+ negative_prompt_2: Optional[Union[str, List[str]]] = None,
130
+ num_images_per_prompt: Optional[int] = 1,
131
+ eta: float = 0.0,
132
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
133
+ latents: Optional[torch.FloatTensor] = None,
134
+ prompt_embeds: Optional[torch.FloatTensor] = None,
135
+ negative_prompt_embeds: Optional[torch.FloatTensor] = None,
136
+ pooled_prompt_embeds: Optional[torch.FloatTensor] = None,
137
+ negative_pooled_prompt_embeds: Optional[torch.FloatTensor] = None,
138
+ ip_adapter_image: Optional[PipelineImageInput] = None,
139
+ output_type: Optional[str] = "pil",
140
+ return_dict: bool = True,
141
+ cross_attention_kwargs: Optional[Dict[str, Any]] = None,
142
+ guidance_rescale: float = 0.0,
143
+ original_size: Optional[Tuple[int, int]] = None,
144
+ crops_coords_top_left: Tuple[int, int] = (0, 0),
145
+ target_size: Optional[Tuple[int, int]] = None,
146
+ negative_original_size: Optional[Tuple[int, int]] = None,
147
+ negative_crops_coords_top_left: Tuple[int, int] = (0, 0),
148
+ negative_target_size: Optional[Tuple[int, int]] = None,
149
+ clip_skip: Optional[int] = None,
150
+ callback_on_step_end: Optional[Callable[[int, int, Dict], None]] = None,
151
+ callback_on_step_end_tensor_inputs: List[str] = ["latents"],
152
+ ip_adapter_emb=None,
153
+ **kwargs,
154
+ ):
155
+ r"""
156
+ Function invoked when calling the pipeline for generation.
157
+
158
+ Args:
159
+ prompt (`str` or `List[str]`, *optional*):
160
+ The prompt or prompts to guide the image generation. If not defined, one has to pass `prompt_embeds`.
161
+ instead.
162
+ prompt_2 (`str` or `List[str]`, *optional*):
163
+ The prompt or prompts to be sent to the `tokenizer_2` and `text_encoder_2`. If not defined, `prompt` is
164
+ used in both text-encoders
165
+ height (`int`, *optional*, defaults to self.unet.config.sample_size * self.vae_scale_factor):
166
+ The height in pixels of the generated image. This is set to 1024 by default for the best results.
167
+ Anything below 512 pixels won't work well for
168
+ [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0)
169
+ and checkpoints that are not specifically fine-tuned on low resolutions.
170
+ width (`int`, *optional*, defaults to self.unet.config.sample_size * self.vae_scale_factor):
171
+ The width in pixels of the generated image. This is set to 1024 by default for the best results.
172
+ Anything below 512 pixels won't work well for
173
+ [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0)
174
+ and checkpoints that are not specifically fine-tuned on low resolutions.
175
+ num_inference_steps (`int`, *optional*, defaults to 50):
176
+ The number of denoising steps. More denoising steps usually lead to a higher quality image at the
177
+ expense of slower inference.
178
+ timesteps (`List[int]`, *optional*):
179
+ Custom timesteps to use for the denoising process with schedulers which support a `timesteps` argument
180
+ in their `set_timesteps` method. If not defined, the default behavior when `num_inference_steps` is
181
+ passed will be used. Must be in descending order.
182
+ denoising_end (`float`, *optional*):
183
+ When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be
184
+ completed before it is intentionally prematurely terminated. As a result, the returned sample will
185
+ still retain a substantial amount of noise as determined by the discrete timesteps selected by the
186
+ scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a
187
+ "Mixture of Denoisers" multi-pipeline setup, as elaborated in [**Refining the Image
188
+ Output**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#refining-the-image-output)
189
+ guidance_scale (`float`, *optional*, defaults to 5.0):
190
+ Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598).
191
+ `guidance_scale` is defined as `w` of equation 2. of [Imagen
192
+ Paper](https://arxiv.org/pdf/2205.11487.pdf). Guidance scale is enabled by setting `guidance_scale >
193
+ 1`. Higher guidance scale encourages to generate images that are closely linked to the text `prompt`,
194
+ usually at the expense of lower image quality.
195
+ negative_prompt (`str` or `List[str]`, *optional*):
196
+ The prompt or prompts not to guide the image generation. If not defined, one has to pass
197
+ `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
198
+ less than `1`).
199
+ negative_prompt_2 (`str` or `List[str]`, *optional*):
200
+ The prompt or prompts not to guide the image generation to be sent to `tokenizer_2` and
201
+ `text_encoder_2`. If not defined, `negative_prompt` is used in both text-encoders
202
+ num_images_per_prompt (`int`, *optional*, defaults to 1):
203
+ The number of images to generate per prompt.
204
+ eta (`float`, *optional*, defaults to 0.0):
205
+ Corresponds to parameter eta (η) in the DDIM paper: https://arxiv.org/abs/2010.02502. Only applies to
206
+ [`schedulers.DDIMScheduler`], will be ignored for others.
207
+ generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
208
+ One or a list of [torch generator(s)](https://pytorch.org/docs/stable/generated/torch.Generator.html)
209
+ to make generation deterministic.
210
+ latents (`torch.FloatTensor`, *optional*):
211
+ Pre-generated noisy latents, sampled from a Gaussian distribution, to be used as inputs for image
212
+ generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
213
+ tensor will ge generated by sampling using the supplied random `generator`.
214
+ prompt_embeds (`torch.FloatTensor`, *optional*):
215
+ Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
216
+ provided, text embeddings will be generated from `prompt` input argument.
217
+ negative_prompt_embeds (`torch.FloatTensor`, *optional*):
218
+ Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
219
+ weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
220
+ argument.
221
+ pooled_prompt_embeds (`torch.FloatTensor`, *optional*):
222
+ Pre-generated pooled text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting.
223
+ If not provided, pooled text embeddings will be generated from `prompt` input argument.
224
+ negative_pooled_prompt_embeds (`torch.FloatTensor`, *optional*):
225
+ Pre-generated negative pooled text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
226
+ weighting. If not provided, pooled negative_prompt_embeds will be generated from `negative_prompt`
227
+ input argument.
228
+ ip_adapter_image: (`PipelineImageInput`, *optional*): Optional image input to work with IP Adapters.
229
+ output_type (`str`, *optional*, defaults to `"pil"`):
230
+ The output format of the generate image. Choose between
231
+ [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` or `np.array`.
232
+ return_dict (`bool`, *optional*, defaults to `True`):
233
+ Whether or not to return a [`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] instead
234
+ of a plain tuple.
235
+ cross_attention_kwargs (`dict`, *optional*):
236
+ A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
237
+ `self.processor` in
238
+ [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
239
+ guidance_rescale (`float`, *optional*, defaults to 0.0):
240
+ Guidance rescale factor proposed by [Common Diffusion Noise Schedules and Sample Steps are
241
+ Flawed](https://arxiv.org/pdf/2305.08891.pdf) `guidance_scale` is defined as `φ` in equation 16. of
242
+ [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://arxiv.org/pdf/2305.08891.pdf).
243
+ Guidance rescale factor should fix overexposure when using zero terminal SNR.
244
+ original_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
245
+ If `original_size` is not the same as `target_size` the image will appear to be down- or upsampled.
246
+ `original_size` defaults to `(height, width)` if not specified. Part of SDXL's micro-conditioning as
247
+ explained in section 2.2 of
248
+ [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).
249
+ crops_coords_top_left (`Tuple[int]`, *optional*, defaults to (0, 0)):
250
+ `crops_coords_top_left` can be used to generate an image that appears to be "cropped" from the position
251
+ `crops_coords_top_left` downwards. Favorable, well-centered images are usually achieved by setting
252
+ `crops_coords_top_left` to (0, 0). Part of SDXL's micro-conditioning as explained in section 2.2 of
253
+ [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).
254
+ target_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
255
+ For most cases, `target_size` should be set to the desired height and width of the generated image. If
256
+ not specified it will default to `(height, width)`. Part of SDXL's micro-conditioning as explained in
257
+ section 2.2 of [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).
258
+ negative_original_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
259
+ To negatively condition the generation process based on a specific image resolution. Part of SDXL's
260
+ micro-conditioning as explained in section 2.2 of
261
+ [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). For more
262
+ information, refer to this issue thread: https://github.com/huggingface/diffusers/issues/4208.
263
+ negative_crops_coords_top_left (`Tuple[int]`, *optional*, defaults to (0, 0)):
264
+ To negatively condition the generation process based on a specific crop coordinates. Part of SDXL's
265
+ micro-conditioning as explained in section 2.2 of
266
+ [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). For more
267
+ information, refer to this issue thread: https://github.com/huggingface/diffusers/issues/4208.
268
+ negative_target_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
269
+ To negatively condition the generation process based on a target image resolution. It should be as same
270
+ as the `target_size` for most cases. Part of SDXL's micro-conditioning as explained in section 2.2 of
271
+ [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). For more
272
+ information, refer to this issue thread: https://github.com/huggingface/diffusers/issues/4208.
273
+ callback_on_step_end (`Callable`, *optional*):
274
+ A function that calls at the end of each denoising steps during the inference. The function is called
275
+ with the following arguments: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int,
276
+ callback_kwargs: Dict)`. `callback_kwargs` will include a list of all tensors as specified by
277
+ `callback_on_step_end_tensor_inputs`.
278
+ callback_on_step_end_tensor_inputs (`List`, *optional*):
279
+ The list of tensor inputs for the `callback_on_step_end` function. The tensors specified in the list
280
+ will be passed as `callback_kwargs` argument. You will only be able to include variables listed in the
281
+ `._callback_tensor_inputs` attribute of your pipeline class.
282
+
283
+ Examples:
284
+
285
+ Returns:
286
+ [`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] or `tuple`:
287
+ [`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] if `return_dict` is True, otherwise a
288
+ `tuple`. When returning a tuple, the first element is a list with the generated images.
289
+ """
290
+
291
+ callback = kwargs.pop("callback", None)
292
+ callback_steps = kwargs.pop("callback_steps", None)
293
+
294
+ if callback is not None:
295
+ deprecate(
296
+ "callback",
297
+ "1.0.0",
298
+ "Passing `callback` as an input argument to `__call__` is deprecated, consider use `callback_on_step_end`",
299
+ )
300
+ if callback_steps is not None:
301
+ deprecate(
302
+ "callback_steps",
303
+ "1.0.0",
304
+ "Passing `callback_steps` as an input argument to `__call__` is deprecated, consider use `callback_on_step_end`",
305
+ )
306
+
307
+ # 0. Default height and width to unet
308
+ height = height or self.default_sample_size * self.vae_scale_factor
309
+ width = width or self.default_sample_size * self.vae_scale_factor
310
+
311
+ original_size = original_size or (height, width)
312
+ target_size = target_size or (height, width)
313
+
314
+ # 1. Check inputs. Raise error if not correct
315
+ self.check_inputs(
316
+ prompt,
317
+ prompt_2,
318
+ height,
319
+ width,
320
+ callback_steps,
321
+ negative_prompt,
322
+ negative_prompt_2,
323
+ prompt_embeds,
324
+ negative_prompt_embeds,
325
+ pooled_prompt_embeds,
326
+ negative_pooled_prompt_embeds,
327
+ callback_on_step_end_tensor_inputs,
328
+ )
329
+
330
+ self._guidance_scale = guidance_scale
331
+ self._guidance_rescale = guidance_rescale
332
+ self._clip_skip = clip_skip
333
+ self._cross_attention_kwargs = cross_attention_kwargs
334
+ self._denoising_end = denoising_end
335
+ self._interrupt = False
336
+
337
+ # 2. Define call parameters
338
+ if prompt is not None and isinstance(prompt, str):
339
+ batch_size = 1
340
+ elif prompt is not None and isinstance(prompt, list):
341
+ batch_size = len(prompt)
342
+ else:
343
+ batch_size = prompt_embeds.shape[0]
344
+
345
+ device = self._execution_device
346
+
347
+ # 3. Encode input prompt
348
+ lora_scale = (
349
+ self.cross_attention_kwargs.get("scale", None) if self.cross_attention_kwargs is not None else None
350
+ )
351
+
352
+ (
353
+ prompt_embeds,
354
+ negative_prompt_embeds,
355
+ pooled_prompt_embeds,
356
+ negative_pooled_prompt_embeds,
357
+ ) = self.encode_prompt(
358
+ prompt=prompt,
359
+ prompt_2=prompt_2,
360
+ device=device,
361
+ num_images_per_prompt=num_images_per_prompt,
362
+ do_classifier_free_guidance=self.do_classifier_free_guidance,
363
+ negative_prompt=negative_prompt,
364
+ negative_prompt_2=negative_prompt_2,
365
+ prompt_embeds=prompt_embeds,
366
+ negative_prompt_embeds=negative_prompt_embeds,
367
+ pooled_prompt_embeds=pooled_prompt_embeds,
368
+ negative_pooled_prompt_embeds=negative_pooled_prompt_embeds,
369
+ lora_scale=lora_scale,
370
+ clip_skip=self.clip_skip,
371
+ )
372
+
373
+ # 4. Prepare timesteps
374
+ timesteps, num_inference_steps = retrieve_timesteps(self.scheduler, num_inference_steps, device, timesteps)
375
+
376
+ # 5. Prepare latent variables
377
+ num_channels_latents = self.unet.config.in_channels
378
+ latents = self.prepare_latents(
379
+ batch_size * num_images_per_prompt,
380
+ num_channels_latents,
381
+ height,
382
+ width,
383
+ prompt_embeds.dtype,
384
+ device,
385
+ generator,
386
+ latents,
387
+ )
388
+
389
+ # 6. Prepare extra step kwargs. TODO: Logic should ideally just be moved out of the pipeline
390
+ extra_step_kwargs = self.prepare_extra_step_kwargs(generator, eta)
391
+
392
+ # 7. Prepare added time ids & embeddings
393
+ add_text_embeds = pooled_prompt_embeds
394
+ if self.text_encoder_2 is None:
395
+ text_encoder_projection_dim = int(pooled_prompt_embeds.shape[-1])
396
+ else:
397
+ text_encoder_projection_dim = self.text_encoder_2.config.projection_dim
398
+
399
+ add_time_ids = self._get_add_time_ids(
400
+ original_size,
401
+ crops_coords_top_left,
402
+ target_size,
403
+ dtype=prompt_embeds.dtype,
404
+ text_encoder_projection_dim=text_encoder_projection_dim,
405
+ )
406
+ if negative_original_size is not None and negative_target_size is not None:
407
+ negative_add_time_ids = self._get_add_time_ids(
408
+ negative_original_size,
409
+ negative_crops_coords_top_left,
410
+ negative_target_size,
411
+ dtype=prompt_embeds.dtype,
412
+ text_encoder_projection_dim=text_encoder_projection_dim,
413
+ )
414
+ else:
415
+ negative_add_time_ids = add_time_ids
416
+
417
+ if self.do_classifier_free_guidance:
418
+ prompt_embeds = torch.cat([negative_prompt_embeds, prompt_embeds], dim=0)
419
+ add_text_embeds = torch.cat([negative_pooled_prompt_embeds, add_text_embeds], dim=0)
420
+ add_time_ids = torch.cat([negative_add_time_ids, add_time_ids], dim=0)
421
+
422
+ prompt_embeds = prompt_embeds.to(device)
423
+ add_text_embeds = add_text_embeds.to(device)
424
+ add_time_ids = add_time_ids.to(device).repeat(batch_size * num_images_per_prompt, 1)
425
+
426
+ if ip_adapter_emb is not None:
427
+ image_embeds = ip_adapter_emb
428
+
429
+ elif ip_adapter_image is not None:
430
+ output_hidden_state = False if isinstance(self.unet.encoder_hid_proj, ImageProjection) else True
431
+ image_embeds, negative_image_embeds = self.encode_image(
432
+ ip_adapter_image, device, num_images_per_prompt, output_hidden_state
433
+ )
434
+ if self.do_classifier_free_guidance:
435
+ image_embeds = torch.cat([negative_image_embeds, image_embeds])
436
+
437
+ # 8. Denoising loop
438
+ num_warmup_steps = max(len(timesteps) - num_inference_steps * self.scheduler.order, 0)
439
+
440
+ # 8.1 Apply denoising_end
441
+ if (
442
+ self.denoising_end is not None
443
+ and isinstance(self.denoising_end, float)
444
+ and self.denoising_end > 0
445
+ and self.denoising_end < 1
446
+ ):
447
+ discrete_timestep_cutoff = int(
448
+ round(
449
+ self.scheduler.config.num_train_timesteps
450
+ - (self.denoising_end * self.scheduler.config.num_train_timesteps)
451
+ )
452
+ )
453
+ num_inference_steps = len(list(filter(lambda ts: ts >= discrete_timestep_cutoff, timesteps)))
454
+ timesteps = timesteps[:num_inference_steps]
455
+
456
+ # 9. Optionally get Guidance Scale Embedding
457
+ timestep_cond = None
458
+ if self.unet.config.time_cond_proj_dim is not None:
459
+ guidance_scale_tensor = torch.tensor(self.guidance_scale - 1).repeat(batch_size * num_images_per_prompt)
460
+ timestep_cond = self.get_guidance_scale_embedding(
461
+ guidance_scale_tensor, embedding_dim=self.unet.config.time_cond_proj_dim
462
+ ).to(device=device, dtype=latents.dtype)
463
+
464
+ self._num_timesteps = len(timesteps)
465
+ with self.progress_bar(total=num_inference_steps) as progress_bar:
466
+ for i, t in enumerate(timesteps):
467
+ if self.interrupt:
468
+ continue
469
+
470
+ # expand the latents if we are doing classifier free guidance
471
+ latent_model_input = torch.cat([latents] * 2) if self.do_classifier_free_guidance else latents
472
+
473
+ latent_model_input = self.scheduler.scale_model_input(latent_model_input, t)
474
+
475
+ # predict the noise residual
476
+ added_cond_kwargs = {"text_embeds": add_text_embeds, "time_ids": add_time_ids}
477
+ if ip_adapter_image is not None or ip_adapter_emb is not None:
478
+ added_cond_kwargs["image_embeds"] = image_embeds
479
+ noise_pred = self.unet(
480
+ latent_model_input,
481
+ t,
482
+ encoder_hidden_states=prompt_embeds,
483
+ timestep_cond=timestep_cond,
484
+ cross_attention_kwargs=self.cross_attention_kwargs,
485
+ added_cond_kwargs=added_cond_kwargs,
486
+ return_dict=False,
487
+ )[0]
488
+
489
+ # perform guidance
490
+ if self.do_classifier_free_guidance:
491
+ noise_pred_uncond, noise_pred_text = noise_pred.chunk(2)
492
+ noise_pred = noise_pred_uncond + self.guidance_scale * (noise_pred_text - noise_pred_uncond)
493
+
494
+ if self.do_classifier_free_guidance and self.guidance_rescale > 0.0:
495
+ # Based on 3.4. in https://arxiv.org/pdf/2305.08891.pdf
496
+ noise_pred = rescale_noise_cfg(noise_pred, noise_pred_text, guidance_rescale=self.guidance_rescale)
497
+
498
+ # compute the previous noisy sample x_t -> x_t-1
499
+ latents = self.scheduler.step(noise_pred, t, latents, **extra_step_kwargs, return_dict=False)[0]
500
+
501
+ if callback_on_step_end is not None:
502
+ callback_kwargs = {}
503
+ for k in callback_on_step_end_tensor_inputs:
504
+ callback_kwargs[k] = locals()[k]
505
+ callback_outputs = callback_on_step_end(self, i, t, callback_kwargs)
506
+
507
+ latents = callback_outputs.pop("latents", latents)
508
+ prompt_embeds = callback_outputs.pop("prompt_embeds", prompt_embeds)
509
+ negative_prompt_embeds = callback_outputs.pop("negative_prompt_embeds", negative_prompt_embeds)
510
+ add_text_embeds = callback_outputs.pop("add_text_embeds", add_text_embeds)
511
+ negative_pooled_prompt_embeds = callback_outputs.pop(
512
+ "negative_pooled_prompt_embeds", negative_pooled_prompt_embeds
513
+ )
514
+ add_time_ids = callback_outputs.pop("add_time_ids", add_time_ids)
515
+ negative_add_time_ids = callback_outputs.pop("negative_add_time_ids", negative_add_time_ids)
516
+
517
+ # call the callback, if provided
518
+ if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
519
+ progress_bar.update()
520
+ if callback is not None and i % callback_steps == 0:
521
+ step_idx = i // getattr(self.scheduler, "order", 1)
522
+ callback(step_idx, t, latents)
523
+
524
+ # if XLA_AVAILABLE:
525
+ # xm.mark_step()
526
+
527
+ if not output_type == "latent":
528
+ # make sure the VAE is in float32 mode, as it overflows in float16
529
+ needs_upcasting = self.vae.dtype == torch.float16 and self.vae.config.force_upcast
530
+
531
+ if needs_upcasting:
532
+ self.upcast_vae()
533
+ latents = latents.to(next(iter(self.vae.post_quant_conv.parameters())).dtype)
534
+
535
+ image = self.vae.decode(latents / self.vae.config.scaling_factor, return_dict=False)[0]
536
+
537
+ # cast back to fp16 if needed
538
+ if needs_upcasting:
539
+ self.vae.to(dtype=torch.float16)
540
+ else:
541
+ image = latents
542
+
543
+ if not output_type == "latent":
544
+ # apply watermark if available
545
+ if self.watermark is not None:
546
+ image = self.watermark.apply_watermark(image)
547
+ image = self.image_processor.postprocess(image, output_type=output_type)
548
+ #maybe_nsfw = any(check_nsfw_images(image))
549
+ #if maybe_nsfw:
550
+ # print('This image could be NSFW so we return a blank image.')
551
+ # return StableDiffusionXLPipelineOutput(images=[Image.new('RGB', (1024, 1024))])
552
+
553
+ # Offload all models
554
+ self.maybe_free_model_hooks()
555
+
556
+ if not return_dict:
557
+ return (image,)
558
+
559
+ return StableDiffusionXLPipelineOutput(images=image)
requirements.txt CHANGED
@@ -3,15 +3,8 @@ numpy
3
  scikit-learn
4
  pandas
5
  torch
6
- torchvision
7
  numpy
8
- matplotlib
9
  diffusers
10
  accelerate
11
  transformers
12
- sentencepiece
13
- peft
14
- imageio
15
- apscheduler
16
- pandas
17
- av
 
3
  scikit-learn
4
  pandas
5
  torch
 
6
  numpy
 
7
  diffusers
8
  accelerate
9
  transformers
10
+ peft
 
 
 
 
 
safety_checker_improved.py DELETED
@@ -1,46 +0,0 @@
1
-
2
- # TODO required tensorflow==2.14 for me
3
- # weights from https://github.com/LAION-AI/safety-pipeline/tree/main
4
- from PIL import Image
5
- import tensorflow_hub as hub
6
- import tensorflow
7
- import numpy as np
8
- import sys
9
- sys.path.append('/home/ryn_mote/Misc/generative_recommender/gradio_video/automl/efficientnetv2/')
10
- import tensorflow as tf
11
- from tensorflow.keras import mixed_precision
12
-
13
- physical_devices = tf.config.list_physical_devices('GPU')
14
- if len(physical_devices) > 0:
15
- tf.config.experimental.set_memory_growth(
16
- physical_devices[0], True
17
- )
18
-
19
- model = tf.keras.models.load_model('nsfweffnetv2-b02-3epochs.h5',custom_objects={"KerasLayer":hub.KerasLayer})
20
- # "The image classifier had been trained on 682550 images from the 5 classes "Drawing" (39026), "Hentai" (28134), "Neutral" (369507), "Porn" (207969) & "Sexy" (37914).
21
- # ... we created a manually inspected test set that consists of 4900 samples, that contains images & their captions."
22
-
23
- # Run prediction
24
- def maybe_nsfw(pil_image):
25
- # Run prediction
26
- imm = tensorflow.image.resize(np.array(pil_image)[:, :, :3], (260, 260))
27
- imm = (imm / 255)
28
- pred = model(tensorflow.expand_dims(imm, 0)).numpy()
29
- probs = tensorflow.math.softmax(pred[0]).numpy()
30
- print(probs)
31
- if all([i < .3 for i in probs[[1, 3, 4]]]):
32
- return False
33
- return True
34
-
35
- # pre-initializing prediction
36
- maybe_nsfw(Image. new("RGB", (260, 260), 255))
37
- model.load_weights('nsfweffnetv2-b02-3epochs.h5', by_name=True, )
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
twitter_prompts.csv CHANGED
@@ -1,47 +1,2088 @@
1
  ,0
2
- 0,a sunset
3
- 1,a still life in blue
4
- 2,last day on earth
5
- 3,the conch shell
6
- 4,the winds of change
7
- 5,a surrealist eye
8
- 6,a surrealist polaroid photo of an apple
9
- 7,metaphysics
10
- 8,the sun is setting into my glass of tea
11
- 9,the moon at 3am
12
- 10,a memento mori
13
- 11,quaking aspen tree
14
- 12,violets and daffodils
15
- 13,espresso
16
- 14,sisyphus
17
- 15,high windows of stained glass
18
- 16,a green dog
19
- 17,an adorable companion; it is a pig
20
- 18,bird of paradise
21
- 19,a complex intricate machine
22
- 20,a white clock
23
- 21,a film featuring the landscape Salt Lake City Utah
24
- 22,a creature
25
- 23,a house set aflame.
26
- 24,a gorgeous landscape by Cy Twombly
27
- 25,smoke rises from the caterpillar's hookah
28
- 26,corvid in red
29
- 27,Monet's pond
30
- 28,Genesis
31
- 29,Death is a black camel that kneels down so we can ride
32
- 30,a cherry tree made of fractals
33
- 29,the end of the sidewalk
34
- 30,a polaroid photo of a bustling city of lights and sky scrapers
35
- 31,The Fig Tree metaphor
36
- 32,God killed Van Gogh.
37
- 33,a cosmic entity alien with four eyes.
38
- 34,a horse with 128 eyes.
39
- 35,a being with an infinite set of eyes (it is omniscient)
40
- 36,A sticky-note magnum opus featuring birds
41
- 37,Moka Pot
42
- 38,the moon is a sickle cell
43
- 39,The Penultimate Supper
44
- 40,Art
45
- 41,surrealism
46
- 42,a god made of wires & dust
47
- 43,a dandelion blown into the universe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ,0
2
+ 0,Persephone
3
+ 1,"A portrait: man, whose lineage is corpse."
4
+ 2,a beautiful Waluigi
5
+ 3,president abe lincoln but a cat
6
+ 4,a woman and a crow
7
+ 5,"A professional, minimalist poster for the book The Old Man and the Sea"
8
+ 6,"half Ryan, half pigeon"
9
+ 7,Easter cat
10
+ 8,a beautiful woman
11
+ 9,a cherry tree made of fractals
12
+ 10,a christmas card from the victorian era
13
+ 11,The Theotokos is a bird
14
+ 12,
15
+ 13,A short life full of immense joy
16
+ 14,a character from a ghibli movie
17
+ 15,A structure made of people standing on top of other people
18
+ 16,зеленая собака
19
+ 17,a painting of the city
20
+ 18,a character from a ghibli movie
21
+ 19,pasta ömetabolism
22
+ 20,"a brilliant sketch titled ""Let Forever be Delayed"""
23
+ 21,the sun is shining on the lake
24
+ 22,Monet Lisa
25
+ 23,Genesis
26
+ 24,Synesthesia
27
+ 25,A dead man
28
+ 26,a cherry tree made of fractals
29
+ 27,enough
30
+ 28,The First Supper
31
+ 29,"i'm never gonna lose the desire to be loved. ""Oh the pain!! The pain! The agony!"""
32
+ 30,a painting of the last day
33
+ 31,Dead Codes by Ryan Murdock
34
+ 32,Genesis
35
+ 33,symmetry
36
+ 34,The OLD DATA
37
+ 35,a beautiful person
38
+ 36,the whitest man
39
+ 37,Death is a black camel that kneels down so we can ride
40
+ 38,a goblin by van gogh
41
+ 39,a portrait of a beautiful person
42
+ 40,a famous painted portrait of Lady Macbeth
43
+ 41,on the edge of grace
44
+ 42,"""A God Made of Wires and Dust"" by Ryan Murdock"
45
+ 43,symmetry
46
+ 44,a beautiful person
47
+ 45,"If we're not careful, it's only art about not-quite-dead pigs from now on."
48
+ 46,Beauty here -- a photograph by Ryan Murdock
49
+ 47,Hunger art by r.j. Murdock
50
+ 48,"A professional, minimalist poster for the film Donnie Darko"
51
+ 49,A black and white photo of a rainbow.
52
+ 50,a beautiful painting
53
+ 51,Monet Lisa
54
+ 52,a painting of the city
55
+ 53,A structure made of people standing on top of other people
56
+ 54,a criminal
57
+ 55,a cherry tree made of fractals
58
+ 56,Persephone flees Hades
59
+ 57,a tree with weaping branches
60
+ 58,a tree with weaping branches
61
+ 59,Genesis
62
+ 60,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
63
+ 61,a cute cat
64
+ 62,Aflame
65
+ 63,A cat wearing a tophat
66
+ 64,a terrifying night hag
67
+ 65,a beautiful woman
68
+ 66,Fire
69
+ 67,a cherry tree made of fractals
70
+ 68,The EcoCathedral
71
+ 69,a man on fire
72
+ 70,A structure made of people standing on top of other people
73
+ 71,totemic dusk
74
+ 72,The Death of Achilles
75
+ 73,Everywhere is no-place
76
+ 74,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
77
+ 75,An Arundel Tomb
78
+ 76,The average Advadnoun twitter follower
79
+ 77,I can read when there's writing on the wall
80
+ 78,
81
+ 79,A Tragedy
82
+ 80,Breathe deep the fumes at Delphi
83
+ 81,a pOrTRaIT Of tHe SpOngeBOb CHicKen
84
+ 82,a portrait of a beautiful person
85
+ 83,a beautiful person
86
+ 84,a portrait of a beautiful person
87
+ 85,Dead Codes by Ryan Murdock
88
+ 86,a photo of a purple dog
89
+ 87,Memento Mori
90
+ 88,"joy, happiness, bliss"
91
+ 89,Paradise Lost
92
+ 90,a beautiful person
93
+ 91,melancholia
94
+ 92,Monet Lisa
95
+ 93,"Of that which one cannot speak, one must be silent."
96
+ 94,
97
+ 95,Juliet
98
+ 96,God killed Van Gogh.
99
+ 97,a cherry tree made of fractals
100
+ 98,a horse with four eyes.
101
+ 99,a beautiful person
102
+ 100,With the Gods in envy of their visions
103
+ 101,The Lost Generation
104
+ 102,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
105
+ 103,a portrait of a beautiful person
106
+ 104,"half Ryan, half pigeon"
107
+ 105,a ginormous baby
108
+ 106,a wormhole
109
+ 107,Ophelia
110
+ 108,"""The hunger artist, full"" by Ryan Murdock"
111
+ 109,I will meet you in a field firmly set within wrong.nnBy Ryan Murdock
112
+ 110,"Intricate, Weeping Tree by Ryan Murdock"
113
+ 111,everything was beautiful and nothing hurt
114
+ 112,Saturn being a good dad to his son
115
+ 113,The years gild our memoriesnUnfairly.
116
+ 114,Intimations of Immortality
117
+ 115,meaningless neko ♡♡ neko
118
+ 116,chiaroscuro
119
+ 117,The Patron Saint of Evil
120
+ 118,a portrait of a beautiful person
121
+ 119,"Mephisto, shrouded in smoke"
122
+ 120,everything was beautiful and nothing hurt
123
+ 121,God killed Van Gogh.
124
+ 122,a man wearing makeup
125
+ 123,Everywhere is no-place
126
+ 124,🔴~__��'t �
127
+ 125,a beautiful waluigi
128
+ 126,a beautiful woman
129
+ 127,a portrait of a beautiful person
130
+ 128,/
131
+ 129,a green doG
132
+ 130,Dead Codes by Ryan Murdock
133
+ 131,I miss the Spring
134
+ 132,
135
+ 133,"a person with 2 eyes, one mouth, one nose, and no extra holes!"
136
+ 134,a woman and a crow
137
+ 135,a photo from {my hometown}
138
+ 136,Summer's Symphony: Counterpoint and Melody
139
+ 137,a cute cat
140
+ 138,"God, it's amazing."
141
+ 139,a painting of a sycamore in
142
+ 140,distinguished leaves decorated
143
+ 141,I do not think they'll sing for me
144
+ 142,the monet lisa
145
+ 143,a portrait of Abraham Lincoln
146
+ 144,The average Advadnoun twitter follower
147
+ 145,Dancing in the moonlight
148
+ 146,Shinji Ikari
149
+ 147,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
150
+ 148,/
151
+ 149,is this loss? but it's van gogh
152
+ 150,Shinji Ikari
153
+ 151,a portrait of Juliet
154
+ 152,A sticky-note magnum opus featuring birds
155
+ 153,a silent palace
156
+ 154,"""A new hope blooms on the long notes of old horns."""
157
+ 155,The things I'll take with me
158
+ 156,is this loss? but it's van gogh
159
+ 157,a beautiful haunting
160
+ 158,Summer's Symphony: Counterpoint and Melody
161
+ 159,зеленая собака
162
+ 160,Last Breath
163
+ 161,Last Breath
164
+ 162,a cherry tree made of fractals
165
+ 163,The Theotokos is a bird
166
+ 164,a man holding an apple in one hand
167
+ 165,a beautiful person
168
+ 166,Monet Lisa
169
+ 167,A baroque portrait of Hamlet
170
+ 168,A gun killed Van Gogh.
171
+ 169,totemic dusk
172
+ 170,a portrait of a beautiful person
173
+ 171,pasta ömetabolism
174
+ 172,a beautiful person
175
+ 173,Taylor Swift
176
+ 174,colorful rabbits chandelier polaroid
177
+ 175,Dancing in the moonlight
178
+ 176,I will meet you in a field firmly set within wrong.nnBy Ryan Murdock
179
+ 177,symmetry
180
+ 178,"""Your mind flls in the gaps"" - by Ryan Murdock"
181
+ 179,the moon is a sickle cell
182
+ 180,"joy, happiness, bliss"
183
+ 181,Beauty here -- a photograph by Ryan Murdock
184
+ 182,a beautiful person
185
+ 183,a photo of a purple dog
186
+ 184,A propaganda poster promoting big chungus
187
+ 185,a beautiful person
188
+ 186,a tree with weaping branches
189
+ 187,A gun killed Van Gogh.
190
+ 188,"""A new hope blooms on the long notes of old horns."""
191
+ 189,a portrait of Abe Lincoln
192
+ 190,"""I love you more than the world can contain in its lonely and ramshackle head."""
193
+ 191,a character from a ghibli movie
194
+ 192,f*** it market standard rule language – distinguish np tax science research
195
+ 193,a portrait of Abe Lincoln
196
+ 194,a wholesome clown. Not creepy at all
197
+ 195,
198
+ 196,a corgi
199
+ 197,Easter cat
200
+ 198,a portrait of Abraham Lincoln
201
+ 199,a person's face
202
+ 200,A poster advertising Freudian Psychoanalytics
203
+ 201,Dancing in the moonlight
204
+ 202,Cat in a teacup
205
+ 203,a beautiful person
206
+ 204,Summer's Symphony: Counterpoint and Melody
207
+ 205,Post-Modern Nouveaux Statue
208
+ 206,a famous painted portrait of Lady Macbeth
209
+ 207,photosynthesis
210
+ 208,a photo of a purple dog
211
+ 209,
212
+ 210,a photo of Juliet
213
+ 211,The Starry Night
214
+ 212,Saturn being a good dad to his son
215
+ 213,a beautiful person
216
+ 214,In smoke and mould the fleshless dead
217
+ 215,totemic dusk
218
+ 216,a beautiful woman
219
+ 217,God killed Van Gogh.
220
+ 218,is this loss? but it's van gogh
221
+ 219,Nostos
222
+ 220,a silent palace
223
+ 221,"""The hunger artist, full"" by Ryan Murdock"
224
+ 222,a green doG
225
+ 223,Weeping Roses
226
+ 224,for sale: baby shoes; never worn
227
+ 225,a dog eating a cheese burger
228
+ 226,a man inside a cage
229
+ 227,Contentment at the Disco
230
+ 228,a photo from {my hometown}
231
+ 229,The EcoCathedral
232
+ 230,The OLD DATA
233
+ 231,treehouse in the style of studio ghibli animation
234
+ 232,
235
+ 233,"""The hunger artist, full"" by Ryan Murdock"
236
+ 234,
237
+ 235,Everywhere is no-place
238
+ 236,"A portrait: man, whose lineage is corpse."
239
+ 237,Last Breath
240
+ 238,A propaganda poster promoting big chungus
241
+ 239,зеленая собака
242
+ 240,a beautiful person
243
+ 241,Memento Mori
244
+ 242,A propaganda poster promoting big chungus
245
+ 243,is this loss?
246
+ 244,a tree with weaping branches
247
+ 245,Nostos
248
+ 246,Beauty here -- a photograph by Ryan Murdock
249
+ 247,a tiny church inside an eyeball
250
+ 248,
251
+ 249,a cherry tree made of fractals
252
+ 250,"joy, happiness, bliss"
253
+ 251,The First Supper
254
+ 252,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
255
+ 253,🔴~__��'t �
256
+ 254,Dancing in the moonlight
257
+ 255,Mona Lisa
258
+ 256,"God, it's amazing."
259
+ 257,a man holding an apple in one hand
260
+ 258,Some stolen Gods take up the reigns of darkness.
261
+ 259,🔴~__��'t �
262
+ 260,Figure 5: a corgi
263
+ 261,a photo from {my hometown}
264
+ 262,Anxiety: the one emotion that does not lie
265
+ 263,In the temple of God
266
+ 264,
267
+ 265,Metaphysics
268
+ 266,a beautiful woman
269
+ 267,a beautiful woman
270
+ 268,a surrealist eye
271
+ 269,the massive hope nof early iterations
272
+ 270,Ophelia
273
+ 271,a minimalist painting that you wouldn't understand
274
+ 272,Aflame
275
+ 273,a christmas card from the victorian era
276
+ 274,Dancing in the moonlight
277
+ 275,/
278
+ 276,"Mephisto, shrouded in smoke"
279
+ 277,a beautiful woman
280
+ 278,зеленая собака
281
+ 279,Easter cat
282
+ 280,The Oracle leans forward to say: beware the ides of March
283
+ 281,a portrait of a beautiful person
284
+ 282,Persephone
285
+ 283,a portrait of Abraham Lincoln
286
+ 284,the moon is a sickle cell
287
+ 285,symmetry
288
+ 286,Monet Lisa
289
+ 287,Saturn being a good dad to his son
290
+ 288,The Monet Lisa
291
+ 289,I sold my soul at the crossroads
292
+ 290,a beautiful person
293
+ 291,A poster advertising Freudian Psychoanalytics
294
+ 292,Cat in a teacup
295
+ 293,a silent palace
296
+ 294,
297
+ 295,a beautiful person
298
+ 296,
299
+ 297,
300
+ 298,Super Mario World but every character is Luigi
301
+ 299,chiaroscuro
302
+ 300,A dead man
303
+ 301,pasta ömetabolism
304
+ 302,A vanitas still life that features twitter follower counts
305
+ 303,slightly mild cosplaying pseudo beard
306
+ 304,Monet Lisa
307
+ 305,Mona Lisa
308
+ 306,handsome commemorative garden pigeon
309
+ 307,pasta ömetabolism
310
+ 308,"""The hunger artist, full"" by Ryan Murdock"
311
+ 309,a gorgeous bouquet with roses and sunflowers
312
+ 310,is this loss? but it's van gogh
313
+ 311,Memorial
314
+ 312,a forest filled with moonlight
315
+ 313,Post-Modern Nouveaux Statue
316
+ 314,she sings opera
317
+ 315,"God closes a door, boards up stained-glass windows."
318
+ 316,a dog wearing a suit playing tennis
319
+ 317,Intimations of Immortality
320
+ 318,
321
+ 319,turnt brony undergrad dwight
322
+ 320,a famous painted portrait of Lady Macbeth
323
+ 321,a cherry tree made of fractals
324
+ 322,Weeping Roses
325
+ 323,pasta ömetabolism
326
+ 324,
327
+ 325,
328
+ 326,"A portrait: man, whose lineage is corpse."
329
+ 327,The average Advadnoun twitter follower
330
+ 328,the moon is a sickle cell
331
+ 329,A black and white photo of a rainbow.
332
+ 330,God killed Van Gogh.
333
+ 331,turnt brony undergrad dwight
334
+ 332,"a brilliant sketch titled ""Let Forever be Delayed"""
335
+ 333,handsome commemorative garden pigeon
336
+ 334,a painting of a sycamore in
337
+ 335,a professional photo of a cat wearing a party hat
338
+ 336,Persephone
339
+ 337,Taylor Swift
340
+ 338,Homer Simpson
341
+ 339,using generated paint
342
+ 340,A black and white photo of a rainbow.
343
+ 341,meaningless neko ♡♡ neko
344
+ 342,is this loss? but it's van gogh
345
+ 343,Is this loss?
346
+ 344,a man from an anime
347
+ 345,the massive hope nof early iterations
348
+ 346,a beautiful woman
349
+ 347,Post-Modern Nouveaux Statue
350
+ 348,photosynthesis
351
+ 349,a cherry tree made of fractals
352
+ 350,a minimalist painting that you wouldn't understand
353
+ 351,a corgi
354
+ 352,handsome commemorative garden pigeon
355
+ 353,The OLD DATA
356
+ 354,cowboy with a trumpet
357
+ 355,A short life full of immense joy
358
+ 356,a beautiful woman
359
+ 357,The end of nothing is eroding. A watercolor by K.
360
+ 358,''
361
+ 359,symmetry
362
+ 360,a portrait of Abraham Lincoln
363
+ 361,Last Breath
364
+ 362,the eternal dread of lemongrab
365
+ 363,vangogh # landscape
366
+ 364,a cherry tree made of fractals
367
+ 365,The Devil Whispers blood
368
+ 366,a silent palace
369
+ 367,Paradise Lost
370
+ 368,Monet Lisa
371
+ 369,Everywhere is no-place
372
+ 370,Taylor Swift
373
+ 371,"r.j. Murdock's ""The Death of a Hacker"""
374
+ 372,a portrait of Abraham Lincoln
375
+ 373,I know the end
376
+ 374,Persephone
377
+ 375,A poster advertising Freudian Psychoanalytics
378
+ 376,a beautiful woman
379
+ 377,A black and white photo of a rainbow.
380
+ 378,the whitest man
381
+ 379,the eternal dread of lemongrab
382
+ 380,a drawing by an AI
383
+ 381,🔴~__��'t �
384
+ 382,We haunt the synapses
385
+ 383,frogs in the style of Ralph Steadman
386
+ 384,a beautiful haunting
387
+ 385,photosynthesis
388
+ 386,a character from a ghibli movie
389
+ 387,A structure made of people standing on top of other people
390
+ 388,Intimations of Immortality
391
+ 389,a jukebox powered by smoke
392
+ 390,beautiful art
393
+ 391,In the temple of God
394
+ 392,Intimations of Immortality
395
+ 393,a beautiful painting
396
+ 394,A gun killed Van Gogh.
397
+ 395,a man with no eyes
398
+ 396,a famous painted portrait of Lady Macbeth
399
+ 397,a tasteful haunting
400
+ 398,a jukebox powered by smoke
401
+ 399,a portrait of Juliet
402
+ 400,The Patron Saint of Evil
403
+ 401,a beautiful Waluigi
404
+ 402,a gilded lily
405
+ 403,
406
+ 404,Kierkegaard on the edge
407
+ 405,a beautiful person
408
+ 406,Just west of Alpha Centauri
409
+ 407,a horse with four eyes.
410
+ 408,Good grief
411
+ 409,a portrait of a beautiful person
412
+ 410,Aflame
413
+ 411,a man wearing makeup
414
+ 412,a portrait of Abraham Lincoln
415
+ 413,a corgi
416
+ 414,I do not think they'll sing for me
417
+ 415,Intimations of Immortality
418
+ 416,A poster serving as a memento mori
419
+ 417,Psychology
420
+ 418,A gun killed Van Gogh.
421
+ 419,"a brilliant sketch titled ""Let Forever be Delayed"""
422
+ 420,using generated paint
423
+ 421,pasta ömetabolism
424
+ 422,a summer day
425
+ 423,a gilded lily
426
+ 424,a cute cat
427
+ 425,on the edge of grace
428
+ 426,Art is growing.
429
+ 427,Spiderman delivering a pizza
430
+ 428,the intersection of art and technology
431
+ 429,"""The hunger artist, full"" by Ryan Murdock"
432
+ 430,a tarot card
433
+ 431,an omen
434
+ 432,slightly mild cosplaying pseudo beard
435
+ 433,meaningless neko ♡♡ neko
436
+ 434,intricate nothing
437
+ 435,symmetry
438
+ 436,I have no idea what anything in this image is
439
+ 437,a photo from {my hometown}
440
+ 438,a sad man
441
+ 439,face like an M.C. Escher drawing n(you could get lost in its beauty)
442
+ 440,A E S T H E T I C ?
443
+ 441,totemic dusk
444
+ 442,Nostos
445
+ 443,"i'm never gonna lose the desire to be loved. ""Oh the pain!! The pain! The agony!"""
446
+ 444,a silent palace
447
+ 445,a beautiful painting
448
+ 446,"half Ryan, half pigeon"
449
+ 447,Weeping Roses
450
+ 448,a broken heart
451
+ 449,a portrait of Juliet
452
+ 450,a painting of the last day
453
+ 451,"a brilliant sketch titled ""Let Forever be Delayed"""
454
+ 452,a beautiful person
455
+ 453,"""The hunger artist, full"" by Ryan Murdock"
456
+ 454,a horse with four eyes.
457
+ 455,a photo of a purple dog
458
+ 456,a summoning
459
+ 457,Redacted ████████
460
+ 458,a ginormous baby
461
+ 459,On the edge of endless darkness
462
+ 460,The Fates knit such delicate nooses for us to bind
463
+ 461,Theotokos of Milk
464
+ 462,A minimalistic still life of a cat sitting on a table
465
+ 463,Dancing in the moonlight
466
+ 464,a minimalist painting that you wouldn't understand
467
+ 465,a beautiful woman
468
+ 466,totemic dusk
469
+ 467,"Ryan Murdock's ""God haunts the suburbs"""
470
+ 468,Dancing in the moonlight
471
+ 469,a beautiful woman
472
+ 470,a city in Van Gogh's style
473
+ 471,"""The hunger artist, full"" by Ryan Murdock"
474
+ 472,a person's face
475
+ 473,a portrait of <name>
476
+ 474,Dancing in the moonlight
477
+ 475,a portrait of Persephone
478
+ 476,a minimalist painting that you wouldn't understand
479
+ 477,a portrait of Abraham Lincoln
480
+ 478,Synesthesia
481
+ 479,a cute corgi
482
+ 480,a portrait of advadnoun
483
+ 481,a green doG
484
+ 482,a man with no eyes
485
+ 483,a cherry tree made of fractals
486
+ 484,a ginormous baby
487
+ 485,
488
+ 486,turnt brony undergrad dwight
489
+ 487,"God, it's amazing."
490
+ 488,"""The hunger artist, full"" by Ryan Murdock"
491
+ 489,We haunt the synapses
492
+ 490,God's Eyes are Wired Shut
493
+ 491,a famous painted portrait of Lady Macbeth
494
+ 492,Juliet
495
+ 493,a character from a ghibli movie
496
+ 494,the whitest man
497
+ 495,a horse with four eyes.
498
+ 496,a photo of a purple dog
499
+ 497,a beautiful person
500
+ 498,The Patron Saint of Hackers
501
+ 499,Dead Codes by Ryan Murdock
502
+ 500,something trite
503
+ 501,beautiful art
504
+ 502,
505
+ 503,the monet lisa
506
+ 504,a cute cat
507
+ 505,👉 👈
508
+ 506,A propaganda poster promoting big chungus
509
+ 507,a beautiful person
510
+ 508,a portrait of advadnoun
511
+ 509,a cherry tree made of fractals
512
+ 510,"It's a meme, I guess"
513
+ 511,a person's face
514
+ 512,A baroque portrait of Hamlet
515
+ 513,a city in Van Gogh's style
516
+ 514,"""The hunger artist, full"" by Ryan Murdock"
517
+ 515,a man with no eyes
518
+ 516,a minimalist painting that you wouldn't understand
519
+ 517,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
520
+ 518,"joy, happiness, bliss"
521
+ 519,
522
+ 520,"a brilliant sketch titled ""Let Forever be Delayed"""
523
+ 521,Last Breath
524
+ 522,On the edge of endless darkness
525
+ 523,a photo of Juliet
526
+ 524,Summer's Symphony: Counterpoint and Melody
527
+ 525,Persephone
528
+ 526,a green doG
529
+ 527,symmetry
530
+ 528,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
531
+ 529,The Starry Night
532
+ 530,Genesis
533
+ 531,bootleg edgy casual assange
534
+ 532,Memento Mori
535
+ 533,meaningless neko ♡♡ neko
536
+ 534,totemic dusk
537
+ 535,Aflame
538
+ 536,"""Here lies Ryan Murdock"" -- a memorial with the date and cause of departure."
539
+ 537,"""The hunger artist, full"" by Ryan Murdock"
540
+ 538,f*** you
541
+ 539,a tree with leaves that are amarillo sightseeing thetic
542
+ 540,a painting of the last day
543
+ 541,"God, it's amazing."
544
+ 542,Paradise Lost
545
+ 543,a gilded lily
546
+ 544,Aflame
547
+ 545,a portrait of <name>
548
+ 546,a painting that couldn't be sold
549
+ 547,a man holding an apple in one hand
550
+ 548,"A clock with gorgeous, intricate gradients on it"
551
+ 549,a goblin by van gogh
552
+ 550,"a person with 2 eyes, one mouth, one nose, and no extra holes!"
553
+ 551,A vanitas still life that features twitter follower counts
554
+ 552,the whitest man
555
+ 553,"""The hunger artist, full"" by Ryan Murdock"
556
+ 554,is this loss? but it's van gogh
557
+ 555,Synesthesia
558
+ 556,Aflame
559
+ 557,a cherry tree made of fractals
560
+ 558,A propaganda poster for daring to eat a peach.
561
+ 559,A vanitas still life that features twitter follower counts
562
+ 560,the moon is a sickle cell
563
+ 561,The Lost Generation
564
+ 562,the eternal dread of lemongrab
565
+ 563,The First Supper
566
+ 564,a character from a ghibli movie
567
+ 565,a man on fire
568
+ 566,symmetry
569
+ 567,pasta ömetabolism
570
+ 568,a horse with four eyes.
571
+ 569,Metaphysics
572
+ 570,Synesthesia
573
+ 571,The Fates knit such delicate nooses for us to bind
574
+ 572,Knowledge of Good and Evil
575
+ 573,meaningless neko ♡♡ neko
576
+ 574,A Tragedy
577
+ 575,
578
+ 576,a drawing by an AI
579
+ 577,The Fool tarot card but it's The Lovers
580
+ 578,a beautiful person
581
+ 579,a silent palace
582
+ 580,an omen
583
+ 581,"A portrait: man, whose lineage is corpse."
584
+ 582,Dancing in the moonlight
585
+ 583,a gilded lily
586
+ 584,turnt brony undergrad dwight
587
+ 585,"a person with 2 eyes, one mouth, one nose, and no extra holes!"
588
+ 586,totemic dusk
589
+ 587,Monet Lisa
590
+ 588,fatal skull prose visits bend ntuscan painting underthecomprehend
591
+ 589,Monet Lisa
592
+ 590,Aflame
593
+ 591,an intricate painting Of Eternity by Ryan Murdock
594
+ 592,"Intricate, Weeping Tree by Ryan Murdock"
595
+ 593,Summer's Symphony: Counterpoint and Melody
596
+ 594,Monet Lisa
597
+ 595,Last Breath
598
+ 596,is this loss? but it's van gogh
599
+ 597,"half Ryan, half pigeon"
600
+ 598,"God closes a door, boards up the stained-glass windows. nnGod hides."
601
+ 599,Everything was beautiful and nothing hurt
602
+ 600,"r.j. Murdock's ""The Death of a Hacker"""
603
+ 601,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
604
+ 602,meaningless neko ♡♡ neko
605
+ 603,twilight
606
+ 604,the sun is shining on the lake
607
+ 605,a portrait of a beautiful person
608
+ 606,the sun is shining on the lake
609
+ 607,
610
+ 608,a portrait of Abe Lincoln
611
+ 609,A gun killed Van Gogh.
612
+ 610,a photo from {my hometown}
613
+ 611,The Fool tarot card but it's The Lovers
614
+ 612,A structure made of people standing on top of other people
615
+ 613,"God closes a door, boards up the stained-glass windows. nnGod hides."
616
+ 614,an old man
617
+ 615,a beautiful waluigi
618
+ 616,is this loss? but it's van gogh
619
+ 617,a man standing alone in a wheat field
620
+ 618,Aflame
621
+ 619,Synesthesia
622
+ 620,
623
+ 621,Intimations of Immortality
624
+ 622,The First Supper
625
+ 623,"God, it's amazing."
626
+ 624,Persephone
627
+ 625,"r.j. Murdock's ""The Death of a Hacker"""
628
+ 626,God's Eyes are Wired Shut
629
+ 627,Do you remember the mythic beast?nA last-minute cancellation at The Last Supper
630
+ 628,f*** it market standard rule language – distinguish np tax science research
631
+ 629,totemic dusk
632
+ 630,Cat in a teacup
633
+ 631,frogs in the style of Ralph Steadman
634
+ 632,a beautiful person
635
+ 633,The Starry Night
636
+ 634,Juliet
637
+ 635,turnt brony undergrad dwight
638
+ 636,
639
+ 637,There is something so interesting about a bleeding edge full of dust.
640
+ 638,On the edge of endless darkness
641
+ 639,The warrior Achilles devours slain Hector's corpse -- an ink poster by Ryan Murdock
642
+ 640,turnt brony undergrad dwight
643
+ 641,Intimations of Immortality
644
+ 642,a portrait of Abraham Lincoln
645
+ 643,a man wearing makeup
646
+ 644,a sketch of the mind of god
647
+ 645,a man on fire
648
+ 646,a portrait of Abraham Lincoln
649
+ 647,
650
+ 648,The ancient Θωερτυ keyboard of brave Achilles
651
+ 649,goes thu extre— dum dum dizzy grimstupiddic ious mindidioirony merely experiment .
652
+ 650,"A group portrait featuring the id, ego, and superego"
653
+ 651,a photo from {my hometown}
654
+ 652,A structure made of people standing on top of other people
655
+ 653,a famous painted portrait of Lady Macbeth
656
+ 654,ogden
657
+ 655,pasta ömetabolism
658
+ 656,a tree with weaping branches
659
+ 657,photosynthesis
660
+ 658,handsome commemorative garden pigeon
661
+ 659,a photo of a purple dog
662
+ 660,"a brilliant sketch titled ""Let Forever be Delayed"""
663
+ 661,"i'm never gonna lose the desire to be loved. ""Oh the pain!! The pain! The agony!"""
664
+ 662,The Death of Achilles
665
+ 663,potus mormon lincoln rooster
666
+ 664,A black and white photo of a rainbow.
667
+ 665,a beautiful haunting
668
+ 666,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
669
+ 667,In the temple of God
670
+ 668,a beautiful person
671
+ 669,The Patron Saint of Mathematics
672
+ 670,a brilliant painting titled
673
+ 671,a gilded lily
674
+ 672,a tiny church inside an eyeball
675
+ 673,a portrait of Juliet
676
+ 674,A painting that sold for a million dollars
677
+ 675,the moon is a sickle cell
678
+ 676,photosynthesis
679
+ 677,The Theotokos is a bird
680
+ 678,the whitest man
681
+ 679,The Monet Lisa
682
+ 680,Beauty here -- a photograph by Ryan Murdock
683
+ 681,Breathe deep the fumes at Delphi
684
+ 682,the sun is shining on the lake
685
+ 683,photosynthesis
686
+ 684,The things I'll take with me
687
+ 685,a green doG
688
+ 686,a beautiful person
689
+ 687,The years gild our memoriesnUnfairly.
690
+ 688,The Lost Generation
691
+ 689,a beautiful person
692
+ 690,The average Advadnoun twitter follower
693
+ 691,a goblin by van gogh
694
+ 692,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
695
+ 693,"A professional, minimalist poster for the book The Old Man and the Sea"
696
+ 694,
697
+ 695,Cat in a teacup
698
+ 696,a beautiful person
699
+ 697,beautiful art
700
+ 698,I sold my soul at the crossroads
701
+ 699,face like an M.C. Escher drawing n(you could get lost in its beauty)
702
+ 700,a gorgeous bouquet with roses and sunflowers
703
+ 701,a portrait of Abraham Lincoln
704
+ 702,Sisyphus
705
+ 703,a cute cat
706
+ 704,a portrait of <name>
707
+ 705,a minimalist painting that you wouldn't understand
708
+ 706,a photo of Bernie Sanders sitting on a chair and wearing mittens
709
+ 707,a woman and a crow
710
+ 708,a character from a ghibli movie
711
+ 709,a photo of a purple dog
712
+ 710,a dog eating a cheese burger
713
+ 711,Last Breath
714
+ 712,a sketch of the mind of god
715
+ 713,a steampunk technomancer
716
+ 714,We haunt the synapses
717
+ 715,using generated paint
718
+ 716,a cherry tree made of fractals
719
+ 717,Saturn being a good dad to his son
720
+ 718,oof deeplearning corgi corgi rendering
721
+ 719,
722
+ 720,Dancing in the moonlight
723
+ 721,A Tragedy
724
+ 722,A propaganda poster promoting big chungus
725
+ 723,A structure made of people standing on top of other people
726
+ 724,"A cute, minmimalist valentine's day card featuring a cat"
727
+ 725,a cute cat
728
+ 726,The skyscraper draws blood -- a landscape
729
+ 727,the monet lisa
730
+ 728,a photo of a person generating a painting of a person with AI
731
+ 729,"""A God Made of Wires and Dust"" by Ryan Murdock"
732
+ 730,Monet Lisa
733
+ 731,photosynthesis
734
+ 732,Hunger art by r.j. Murdock
735
+ 733,"""The hunger artist, full"" by Ryan Murdock"
736
+ 734,An Arundel Tomb
737
+ 735,twilight
738
+ 736,"r.j. Murdock's ""The Death of a Hacker"""
739
+ 737,living in a den of thieves
740
+ 738,"""A new hope blooms on the long notes of old horns."""
741
+ 739,"The laptop of brave Achaean Achilles, who would not live long."
742
+ 740,a minimalist painting that you wouldn't understand
743
+ 741,"Intricate, Weeping Tree by Ryan Murdock"
744
+ 742,The Fool
745
+ 743,a summoning
746
+ 744,pasta ömetabolism
747
+ 745,"a brilliant sketch titled ""Let Forever be Delayed"""
748
+ 746,a silent palace
749
+ 747,The average Advadnoun twitter follower
750
+ 748,f*** it market standard rule language – distinguish np tax science research
751
+ 749,Monet Lisa
752
+ 750,"a brilliant sketch titled ""Let Forever be Delayed"""
753
+ 751,meaningless neko ♡♡ neko
754
+ 752,"God, it's amazing."
755
+ 753,Nostos
756
+ 754,Shinji Ikari
757
+ 755,a beautiful woman
758
+ 756,The Starry Night
759
+ 757,hamont parkland avenue incumbscreenshotsaturday hemisphere footage algorithm
760
+ 758,a beautiful woman
761
+ 759,
762
+ 760,Summer always ending
763
+ 761,president abe lincoln but a cat
764
+ 762,🎷
765
+ 763,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
766
+ 764,a cherry tree made of fractals
767
+ 765,A painting that sold for one billion dollars
768
+ 766,a man standing alone in a wheat field
769
+ 767,symmetry
770
+ 768,a broken heart
771
+ 769,a silent palace
772
+ 770,A vanitas still life that features twitter follower counts
773
+ 771,"half Ryan, half pigeon"
774
+ 772,"a brilliant sketch titled ""Let Forever be Delayed"""
775
+ 773,slightly mild cosplaying pseudo beard
776
+ 774,a portrait of <name>
777
+ 775,God's Eyes are Wired Shut
778
+ 776,she sings opera
779
+ 777,a person's face
780
+ 778,a cherry tree made of fractals
781
+ 779,Dead Codes by Ryan Murdock
782
+ 780,Everywhere is no-place
783
+ 781,The First Supper
784
+ 782,Monet Lisa
785
+ 783,A short life full of immense joy
786
+ 784,Anxiety: the one emotion that does not lie
787
+ 785,Anxiety: the one emotion that does not lie
788
+ 786,symmetry
789
+ 787,a beautiful waluigi
790
+ 788,a goblin by van gogh
791
+ 789,"""A new hope blooms on the long notes of old horns."""
792
+ 790,Juliet
793
+ 791,The OLD DATA
794
+ 792,a beautiful woman
795
+ 793,The average Advadnoun twitter follower
796
+ 794,Synesthesia by Ryan Murdock
797
+ 795,Persephone flees Hades
798
+ 796,Last Breath
799
+ 797,a portrait of Persephone
800
+ 798,Homer Simpson
801
+ 799,totemic dusk
802
+ 800,a steampunk technomancer
803
+ 801,a portrait of Abraham Lincoln
804
+ 802,a cherry tree made of fractals
805
+ 803,bored of dying
806
+ 804,a famous painted portrait of Lady Macbeth
807
+ 805,a summer day
808
+ 806,A E S T H E T I C ?
809
+ 807,A vanitas still life that features twitter follower counts
810
+ 808,an illustration of a baby daikon radish in a tutu walking a dog
811
+ 809,Persephone
812
+ 810,pasta ömetabolism
813
+ 811,A vision of the Theotokos in my glass of coffee
814
+ 812,a dog.
815
+ 813,a photo of a person generating a painting of a person with AI
816
+ 814,🔴~__��'t �
817
+ 815,Intimations of Immortality
818
+ 816,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
819
+ 817,A dead man
820
+ 818,The Oracle leans forward to say: beware the ides of March
821
+ 819,Monet Lisa
822
+ 820,a silent palace
823
+ 821,an intricate painting of eternity
824
+ 822,A propaganda poster for chunky cats.
825
+ 823,God killed Van Gogh.
826
+ 824,the eyes of God are wired shut
827
+ 825,Persephone
828
+ 826,symmetry
829
+ 827,Mona Lisa
830
+ 828,Saturn being a good dad to his son
831
+ 829,a technomancer
832
+ 830,
833
+ 831,a cherry tree made of fractals
834
+ 832,A cat wearing a tophat
835
+ 833,frogs in the style of Ralph Steadman
836
+ 834,a portrait of a beautiful person
837
+ 835,a green dog
838
+ 836,a portrait of Abraham Lincoln
839
+ 837,Hungry Dogs Will Devour in the Daytime
840
+ 838,a photo of a purple dog
841
+ 839,Cat in a teacup
842
+ 840,
843
+ 841,Nostos
844
+ 842,A baroque portrait of Hamlet
845
+ 843,Saturn being a good dad to his son
846
+ 844,Hell is Paradise
847
+ 845,a taste
848
+ 846,"God, it's amazing."
849
+ 847,Everywhere is no-place
850
+ 848,a minimalist painting that you wouldn't understand
851
+ 849,a tree with weaping branches
852
+ 850,a portrait of Elvis Presley
853
+ 851,a man standing alone in a wheat field
854
+ 852,Juliet
855
+ 853,I sold my soul at the crossroads
856
+ 854,a beautiful person
857
+ 855,photosynthesis
858
+ 856,
859
+ 857,"Mephisto, shrouded in smoke"
860
+ 858,playing Go with Death
861
+ 859,a painting of the last day
862
+ 860,totemic dusk
863
+ 861,Hell is Paradise
864
+ 862,a christmas card from the victorian era
865
+ 863,Good grief
866
+ 864,handsome commemorative garden pigeon
867
+ 865,a portrait of <name>
868
+ 866,a portrait of Abraham Lincoln
869
+ 867,she came in through the wall
870
+ 868,a sad man
871
+ 869,In the temple of God
872
+ 870,fuzzy pals hum
873
+ 871,a painting of a sycamore in
874
+ 872,a beautiful waluigi
875
+ 873,"a brilliant sketch titled ""Let Forever be Delayed"""
876
+ 874,a portrait of a beautiful person
877
+ 875,a portrait of Juliet
878
+ 876,MEMETIC HAZARD
879
+ 877,The years gild our memoriesnUnfairly.
880
+ 878,Mona Lisa
881
+ 879,pasta ömetabolism
882
+ 880,pasta ömetabolism
883
+ 881,bored of dying
884
+ 882,Cat in a teacup
885
+ 883,a cherry tree made of fractals
886
+ 884,an intricate drawing of eternity
887
+ 885,mammals
888
+ 886,a portrait of Persephone
889
+ 887,treehouse in the style of studio ghibli animation
890
+ 888,watching TV in purgatory
891
+ 889,The winds of change by Ryan Murdock
892
+ 890,a technomancer
893
+ 891,a portrait of Persephone
894
+ 892,Last Breath
895
+ 893,A minimalistic still life of a cat sitting on a table
896
+ 894,
897
+ 895,cult of prisms
898
+ 896,Aflame
899
+ 897,Cat in a teacup
900
+ 898,"God, it's amazing."
901
+ 899,a minimalist painting that you wouldn't understand
902
+ 900,a woman and a crow
903
+ 901,totemic dusk
904
+ 902,a city in Van Gogh's style
905
+ 903,A baroque portrait of Hamlet
906
+ 904,murdoch
907
+ 905,a silent palace
908
+ 906,Anxiety: the one emotion that does not lie
909
+ 907,a photo of a purple dog
910
+ 908,the moon is a sickle cell
911
+ 909,Tendrils of smoke curl around the caterpillar with a hookah
912
+ 910,president abe lincoln but a cat
913
+ 911,a beautiful woman
914
+ 912,handsome commemorative garden pigeon
915
+ 913,an intricate painting of eternity
916
+ 914,"God, it's amazing."
917
+ 915,Grippy socks; no drawstrings: high fashion
918
+ 916,The average Advadnoun twitter follower
919
+ 917,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
920
+ 918,a photo from {my hometown}
921
+ 919,MEMETIC HAZARD
922
+ 920,a portrait of Elvis Presley
923
+ 921,a woman and a crow
924
+ 922,Saturn being a good dad to his son
925
+ 923,beautiful art
926
+ 924,Shinji Ikari
927
+ 925,a portrait of <name>
928
+ 926,a photo of a purple dog
929
+ 927,Ophelia
930
+ 928,a dog wearing a suit playing tennis
931
+ 929,We haunt the synapses
932
+ 930,I do not think they'll sing for me
933
+ 931,Genesis
934
+ 932,a beautiful person
935
+ 933,"a brilliant sketch titled ""Let Forever be Delayed"""
936
+ 934,Metaphysics
937
+ 935,bored of dying
938
+ 936,treehouse in the style of studio ghibli animation
939
+ 937,
940
+ 938,photosynthesis
941
+ 939,A structure made of people standing on top of other people
942
+ 940,meaningless neko ♡♡ neko
943
+ 941,a photo of the sun melting into the ocean
944
+ 942,symmetry
945
+ 943,the moon is a sickle cell
946
+ 944,Dancing in the moonlight
947
+ 945,Last Breath
948
+ 946,I sold my soul at the crossroads
949
+ 947,a beautiful woman
950
+ 948,"God, it's amazing."
951
+ 949,Cat in a teacup
952
+ 950,a tree with weaping branches
953
+ 951,"God, it's amazing."
954
+ 952,Cat in a teacup
955
+ 953,"r.j. Murdock's ""The Death of a Hacker"""
956
+ 954,using generated paint
957
+ 955,fuzzy pals hum
958
+ 956,"A portrait: man, whose lineage is corpse."
959
+ 957,a ginormous baby
960
+ 958,a beautiful woman
961
+ 959,"half Ryan, half pigeon"
962
+ 960,when the wind blows
963
+ 961,a beautiful woman
964
+ 962,pasta ömetabolism
965
+ 963,a cherry tree made of fractals
966
+ 964,The Monet Lisa
967
+ 965,"""The hunger artist, full"" by Ryan Murdock"
968
+ 966,a portrait of advadnoun
969
+ 967,The Fool tarot card but it's The Lovers
970
+ 968,Persephone
971
+ 969,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
972
+ 970,an omen
973
+ 971,the eternal dread of lemongrab
974
+ 972,a man on fire
975
+ 973,Aflame
976
+ 974,"i'm never gonna lose the desire to be loved. ""Oh the pain!! The pain! The agony!"""
977
+ 975,twilight
978
+ 976,hamont parkland avenue incumbscreenshotsaturday hemisphere footage algorithm
979
+ 977,a silent palace
980
+ 978,a selfie
981
+ 979,the moon is a sickle cell
982
+ 980,a portrait of Abraham Lincoln
983
+ 981,a tree with weaping branches
984
+ 982,a tiny church inside an eyeball
985
+ 983,a portrait of a beautiful person
986
+ 984,Paradise Lost
987
+ 985,a horse with four eyes.
988
+ 986,president abe lincoln but a cat
989
+ 987,a summer day
990
+ 988,Anxiety: the one emotion that does not lie
991
+ 989,Saturn being a good dad to his son
992
+ 990,In the temple of God
993
+ 991,Redacted ████████
994
+ 992,Dr. Faustus and Mephisto
995
+ 993,a minimalist painting that you wouldn't understand
996
+ 994,a man standing alone in a wheat field
997
+ 995,a seance in the basement
998
+ 996,a portrait of <name>
999
+ 997,Aflame
1000
+ 998,the moon is a sickle cell
1001
+ 999,beautiful art
1002
+ 1000,a man on fire
1003
+ 1001,a tiny church inside an eyeball
1004
+ 1002,totemic dusk
1005
+ 1003,Persephone
1006
+ 1004,piss indiefilm
1007
+ 1005,a beautiful woman
1008
+ 1006,The EcoCathedral
1009
+ 1007,"joy, happiness, bliss"
1010
+ 1008,Intimations of Immortality
1011
+ 1009,the whitest man
1012
+ 1010,a silent palace
1013
+ 1011,
1014
+ 1012,a woman and a crow
1015
+ 1013,Memento Mori
1016
+ 1014,Visions in envy of the gods
1017
+ 1015,symmetry
1018
+ 1016,A poster advertising Freudian Psychoanalytics
1019
+ 1017,A propaganda poster promoting big chungus
1020
+ 1018,With the Gods in envy of their visions
1021
+ 1019,a cherry tree made of fractals
1022
+ 1020,pasta ömetabolism
1023
+ 1021,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1024
+ 1022,a beautiful person
1025
+ 1023,cowboy with a trumpet
1026
+ 1024,a portrait of a beautiful person
1027
+ 1025,The OLD DATA
1028
+ 1026,f*** it market standard rule language – distinguish np tax science research
1029
+ 1027,murdoch
1030
+ 1028,Some stolen Gods take up the reigns of darkness.
1031
+ 1029,a portrait of Juliet
1032
+ 1030,a god
1033
+ 1031,she sings opera
1034
+ 1032,The First Supper
1035
+ 1033,handsome commemorative garden pigeon
1036
+ 1034,cult of prisms
1037
+ 1035,Cat in a teacup
1038
+ 1036,💨 👻 ☺ 🔮 🔺 ✊
1039
+ 1037,a portrait of Abraham Lincoln
1040
+ 1038,a corgi
1041
+ 1039,a beautiful woman
1042
+ 1040,a portrait of a beautiful person
1043
+ 1041,Dead Codes by Ryan Murdock
1044
+ 1042,totemic dusk
1045
+ 1043,Juliet
1046
+ 1044,a portrait of Elvis Presley
1047
+ 1045,a criminal
1048
+ 1046,Genesis where the universe was made
1049
+ 1047,a portrait of <name>
1050
+ 1048,turnt brony undergrad dwight
1051
+ 1049,Cat in a teacup
1052
+ 1050,a corgi
1053
+ 1051,"Hamlet saying ""To be or not to be"""
1054
+ 1052,a portrait of a beautiful person
1055
+ 1053,A E S T H E T I C ?
1056
+ 1054,Figure 5: a corgi
1057
+ 1055,A gun killed Van Gogh.
1058
+ 1056,Persephone flees Hades
1059
+ 1057,a silent palace
1060
+ 1058,pasta ömetabolism
1061
+ 1059,a beautiful person
1062
+ 1060,on the edge of grace
1063
+ 1061,a portrait of Elvis Presley
1064
+ 1062,Persephone
1065
+ 1063,Tendrils of smoke curl around the caterpillar with a hookah
1066
+ 1064,"half Ryan, half pigeon"
1067
+ 1065,a sunflower
1068
+ 1066,a beautiful person
1069
+ 1067,a portrait of Juliet
1070
+ 1068,A dead man
1071
+ 1069,a character from a ghibli movie
1072
+ 1070,a silent palace
1073
+ 1071,a portrait of Elvis Presley
1074
+ 1072,a portrait of advadnoun
1075
+ 1073,A E S T H E T I C ?
1076
+ 1074,зеленая собака
1077
+ 1075,A baroque portrait of Hamlet
1078
+ 1076,a man at the beach
1079
+ 1077,Sisyphus
1080
+ 1078,Good grief
1081
+ 1079,"r.j. Murdock's ""The Death of a Hacker"""
1082
+ 1080,a beautiful woman
1083
+ 1081,🔴~__��'t �
1084
+ 1082,a portrait of advadnoun
1085
+ 1083,a painting of a sycamore in
1086
+ 1084,president abe lincoln but a cat
1087
+ 1085,The agony of time
1088
+ 1086,God once loved a woman
1089
+ 1087,pasta ömetabolism
1090
+ 1088,Dead Codes by Ryan Murdock
1091
+ 1089,
1092
+ 1090,slightly mild cosplaying pseudo beard
1093
+ 1091,Last Breath
1094
+ 1092,The Oracle leans forward to say: beware the ides of March
1095
+ 1093,The Devil Wears Khakis
1096
+ 1094,"""The hunger artist, full"" by Ryan Murdock"
1097
+ 1095,In the temple of God
1098
+ 1096,a beautiful person
1099
+ 1097,a man from an anime
1100
+ 1098,She's gorgeous
1101
+ 1099,A vanitas still life that features twitter follower counts
1102
+ 1100,
1103
+ 1101,the eternal dread of lemongrab
1104
+ 1102,Advadnoun
1105
+ 1103,a summer day
1106
+ 1104,The Fool tarot card but it's The Lovers
1107
+ 1105,I miss the Spring
1108
+ 1106,an illustration of a baby daikon radish in a tutu walking a dog
1109
+ 1107,The Oracle leans forward to say: beware the ides of March
1110
+ 1108,Contentment at the Disco
1111
+ 1109,The First Supper
1112
+ 1110,Saturn being a good dad to his son
1113
+ 1111,a beautiful woman
1114
+ 1112,"Intricate, Weeping Tree by Ryan Murdock"
1115
+ 1113,"a brilliant sketch titled ""Let Forever be Delayed"""
1116
+ 1114,beautiful art
1117
+ 1115,
1118
+ 1116,a silent palace
1119
+ 1117,a portrait of Juliet
1120
+ 1118,A propaganda poster promoting big chungus
1121
+ 1119,a portrait of a beautiful person
1122
+ 1120,a portrait of Abraham Lincoln
1123
+ 1121,
1124
+ 1122,the whitest man
1125
+ 1123,a portrait of Abe Lincoln
1126
+ 1124,Monet Lisa
1127
+ 1125,The Fool tarot card but it's The Lovers
1128
+ 1126,a portrait of <name>
1129
+ 1127,a portrait of Elvis Presley
1130
+ 1128,Post-Modern Nouveaux Statue
1131
+ 1129,a cherry tree made of fractals
1132
+ 1130,f*** it market standard rule language – distinguish np tax science research
1133
+ 1131,symmetry
1134
+ 1132,pasta ömetabolism
1135
+ 1133,a brilliant painting titled
1136
+ 1134,The First Supper
1137
+ 1135,a corgi
1138
+ 1136,a beautiful person
1139
+ 1137,a green doG
1140
+ 1138,The OLD DATA
1141
+ 1139,Ophelia
1142
+ 1140,a portrait of Abraham Lincoln
1143
+ 1141,incineratures motherhood
1144
+ 1142,a green dog
1145
+ 1143,a portrait of advadnoun
1146
+ 1144,a sunflower
1147
+ 1145,
1148
+ 1146,a man from an anime
1149
+ 1147,Beauty here -- a photograph by Ryan Murdock
1150
+ 1148,slightly mild cosplaying pseudo beard
1151
+ 1149,Nostos
1152
+ 1150,pasta ömetabolism
1153
+ 1151,a beautiful person
1154
+ 1152,"half Ryan, half pigeon"
1155
+ 1153,turnt brony undergrad dwight
1156
+ 1154,beautiful art
1157
+ 1155,a portrait of Persephone
1158
+ 1156,A sticky-note magnum opus featuring birds
1159
+ 1157,I sold my soul at the crossroads
1160
+ 1158,"a brilliant sketch titled ""Let Forever be Delayed"""
1161
+ 1159,A poster advertising Freudian Psychoanalytics
1162
+ 1160,using generated paint
1163
+ 1161,The OLD DATA
1164
+ 1162,a horse with four eyes.
1165
+ 1163,is this loss? but it's van gogh
1166
+ 1164,a gorgeous bouquet with roses and sunflowers
1167
+ 1165,Anxiety: the one emotion that does not lie
1168
+ 1166,turnt brony undergrad dwight
1169
+ 1167,The Lost Generation
1170
+ 1168,Taylor Swift
1171
+ 1169,The Lost Generation
1172
+ 1170,a photo from {my hometown}
1173
+ 1171,The OLD DATA
1174
+ 1172,a portrait of <name>
1175
+ 1173,a cherry tree made of fractals
1176
+ 1174,an intricate sculpture of Death itself
1177
+ 1175,
1178
+ 1176,зеленая собака
1179
+ 1177,a sunflower
1180
+ 1178,angst
1181
+ 1179,president abe lincoln but a cat
1182
+ 1180,a beautiful person
1183
+ 1181,The OLD DATA
1184
+ 1182,"You shake the demons hand, and redo it all, again."
1185
+ 1183,the latent space
1186
+ 1184,Fire
1187
+ 1185,a tree with weaping branches
1188
+ 1186,treehouse in the style of studio ghibli animation
1189
+ 1187,Good grief
1190
+ 1188,a portrait of <name>
1191
+ 1189,a wholesome clown. Not creepy at all
1192
+ 1190,Theotokos of Milk
1193
+ 1191,"God closes a door, boards up the stained-glass windows. nnGod hides."
1194
+ 1192,I sold my soul at the crossroads
1195
+ 1193,"Mephisto, shrouded in smoke"
1196
+ 1194,A baroque portrait of Hamlet
1197
+ 1195,a lamp
1198
+ 1196,MEMETIC HAZARD
1199
+ 1197,"""Your mind falls in the gaps"" - by Ryan Murdock"
1200
+ 1198,cowboy with a trumpet
1201
+ 1199,Aflame
1202
+ 1200,A vanitas still life that features twitter follower counts
1203
+ 1201,a beautiful person
1204
+ 1202,Synesthesia
1205
+ 1203,Is this loss?
1206
+ 1204,Adverb working on Photoshop Neural Filters | Behance Art
1207
+ 1205,Everything was beautiful and nothing hurt
1208
+ 1206,Mona Lisa
1209
+ 1207,A structure made of people standing on top of other people
1210
+ 1208,"Intricate, Weeping Tree by Ryan Murdock"
1211
+ 1209,the whitest man
1212
+ 1210,The Fates knit such delicate nooses for us to bind
1213
+ 1211,a tree with weaping branches
1214
+ 1212,a beautiful person
1215
+ 1213,Nostos
1216
+ 1214,Post-Modern Nouveaux Statue
1217
+ 1215,Genesis
1218
+ 1216,totemic dusk
1219
+ 1217,a dog.
1220
+ 1218,photosynthesis
1221
+ 1219,The average Advadnoun twitter follower
1222
+ 1220,"""The hunger artist, full"" by Ryan Murdock"
1223
+ 1221,a person's face
1224
+ 1222,slightly mild cosplaying pseudo beard
1225
+ 1223,a jukebox powered by smoke
1226
+ 1224,Monet Lisa
1227
+ 1225,Intimations of Immortality
1228
+ 1226,a gorgeous bouquet with roses and sunflowers
1229
+ 1227,face like an M.C. Escher drawing n(you could get lost in its beauty)
1230
+ 1228,a photo of a purple dog
1231
+ 1229,a tiny church inside an eyeball
1232
+ 1230,Good grief
1233
+ 1231,Last Breath
1234
+ 1232,a beautiful waluigi
1235
+ 1233,the moon is a sickle cell
1236
+ 1234,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
1237
+ 1235,I sold my soul at the crossroads
1238
+ 1236,Persephone
1239
+ 1237,a portrait of Abraham Lincoln
1240
+ 1238,a beautiful painting
1241
+ 1239,Last Breath
1242
+ 1240,a man on fire
1243
+ 1241,"a brilliant sketch titled ""Let Forever be Delayed"""
1244
+ 1242,A gun killed Van Gogh.
1245
+ 1243,a sketch of the mind of god
1246
+ 1244,Intimations of Immortality
1247
+ 1245,Intimations of Immortality
1248
+ 1246,turnt brony undergrad dwight
1249
+ 1247,A sticky-note magnum opus featuring birds
1250
+ 1248,Aflame
1251
+ 1249,Grippy socks; no drawstrings: high fashion
1252
+ 1250,👉 👈
1253
+ 1251,Shrek the ogre
1254
+ 1252,a beautiful woman
1255
+ 1253,a portrait of Elvis Presley
1256
+ 1254,president abe lincoln but a cat
1257
+ 1255,Post-antiquity art
1258
+ 1256,using generated paint
1259
+ 1257,a dog eating a cheese burger
1260
+ 1258,The average Advadnoun twitter follower
1261
+ 1259,Monet Lisa
1262
+ 1260,"A professional, minimalist poster for the book The Old Man and the Sea"
1263
+ 1261,We haunt the synapses
1264
+ 1262,Post-Modern Nouveaux Statue
1265
+ 1263,a picture of Ryan Murdock
1266
+ 1264,cowboy with a trumpet
1267
+ 1265,colorful rabbits chandelier polaroid
1268
+ 1266,a character from a ghibli movie
1269
+ 1267,a goblin by van gogh
1270
+ 1268,a beautiful painting
1271
+ 1269,a photo of a purple dog
1272
+ 1270,a portrait of Persephone
1273
+ 1271,"Hamlet saying ""To be or not to be"""
1274
+ 1272,Homer Simpson
1275
+ 1273,a cute cat
1276
+ 1274,turnt brony undergrad dwight
1277
+ 1275,Intimations of Immortality
1278
+ 1276,a man wearing makeup
1279
+ 1277,They called you the hyacinth girl
1280
+ 1278,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1281
+ 1279,Cat in a teacup
1282
+ 1280,Juliet
1283
+ 1281,"""The wages of sin are generous"" by Ryan Murdock"
1284
+ 1282,"Pig, neither dead nor alive, stare into the heart of light, the silence."
1285
+ 1283,
1286
+ 1284,a horse with four eyes.
1287
+ 1285,Advadnoun
1288
+ 1286,Last Breath
1289
+ 1287,totemic dusk
1290
+ 1288,The OLD DATA
1291
+ 1289,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
1292
+ 1290,a man holding an apple in one hand
1293
+ 1291,a beautiful woman
1294
+ 1292,melancholia
1295
+ 1293,Shinji Ikari
1296
+ 1294,a gorgeous bouquet with roses and sunflowers
1297
+ 1295,a portrait of advadnoun
1298
+ 1296,a known
1299
+ 1297,Genesis
1300
+ 1298,In smoke and mould the fleshless dead
1301
+ 1299,The average Advadnoun twitter follower
1302
+ 1300,a cute cat
1303
+ 1301,a painting of a sycamore in
1304
+ 1302,a woman and a crow
1305
+ 1303,Persephone
1306
+ 1304,
1307
+ 1305,using generated paint
1308
+ 1306,"A cute, minmimalist valentine's day card featuring a cat"
1309
+ 1307,a painting that couldn't be sold
1310
+ 1308,bored of dying
1311
+ 1309,pasta ömetabolism
1312
+ 1310,Dancing in the moonlight
1313
+ 1311,a beautiful woman
1314
+ 1312,Dr. Faustus and Mephisto
1315
+ 1313,"joy, happiness, bliss"
1316
+ 1314,a photo from {my hometown}
1317
+ 1315,a wholesome clown. Not creepy at all
1318
+ 1316,a portrait of Elvis Presley
1319
+ 1317,a cherry tree made of fractals
1320
+ 1318,a man standing alone in a wheat field
1321
+ 1319,Dancing in the moonlight
1322
+ 1320,Hunger art by Ryan Murdock
1323
+ 1321,a beautiful waluigi
1324
+ 1322,A black and white photo of a rainbow.
1325
+ 1323,totemic dusk
1326
+ 1324,a beautiful person
1327
+ 1325,
1328
+ 1326,a beautiful woman
1329
+ 1327,a horse with four eyes.
1330
+ 1328,The Lost Generation
1331
+ 1329,Death is a black camel that kneels down so we can ride
1332
+ 1330,a ginormous baby
1333
+ 1331,Dancing in the moonlight
1334
+ 1332,an old man
1335
+ 1333,a horse with four eyes.
1336
+ 1334,a photo of a purple dog
1337
+ 1335,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
1338
+ 1336,a silent palace
1339
+ 1337,The OLD DATA
1340
+ 1338,a tree with weaping branches
1341
+ 1339,Creativity is only composition in disguise.
1342
+ 1340,"r.j. Murdock's ""The Death of a Hacker"""
1343
+ 1341,Persephone
1344
+ 1342,president abe lincoln but a cat
1345
+ 1343,There is something so interesting about a bleeding edge full of dust.
1346
+ 1344,A poster advertising death by water
1347
+ 1345,Persephone
1348
+ 1346,Saturn being a good dad to his son
1349
+ 1347,is this loss? but it's van gogh
1350
+ 1348,Monet Lisa
1351
+ 1349,fuzzy pals hum
1352
+ 1350,"""The hunger artist, full"" by Ryan Murdock"
1353
+ 1351,Shinji Ikari
1354
+ 1352,a beautiful woman
1355
+ 1353,"Son of man,nYou cannot say, or guess, for you know onlynA heap of broken images"
1356
+ 1354,God once loved a woman
1357
+ 1355,a horse with four eyes.
1358
+ 1356,a cherry tree made of fractals
1359
+ 1357,a beautiful haunting
1360
+ 1358,I miss the Spring
1361
+ 1359,gradient
1362
+ 1360,a wormhole
1363
+ 1361,a beautiful woman
1364
+ 1362,president abe lincoln but a cat
1365
+ 1363,handsome commemorative garden pigeon
1366
+ 1364,Everywhere is no-place
1367
+ 1365,"""It is beginning to end.""nby Ryan Murdock."
1368
+ 1366,she sings opera
1369
+ 1367,a jukebox powered by smoke
1370
+ 1368,a portrait of Juliet
1371
+ 1369,playing Go with Death
1372
+ 1370,a man standing alone in a wheat field
1373
+ 1371,Dead Codes by Ryan Murdock
1374
+ 1372,Synesthesia
1375
+ 1373,The years gild our memoriesnUnfairly.
1376
+ 1374,A propaganda poster promoting big chungus
1377
+ 1375,"God, it's amazing."
1378
+ 1376,Persephone
1379
+ 1377,a beautiful person
1380
+ 1378,MEMETIC HAZARD
1381
+ 1379,totemic dusk
1382
+ 1380,Intimations of Immortality
1383
+ 1381,A poster advertising death by water
1384
+ 1382,a photo of a purple dog
1385
+ 1383,symmetry
1386
+ 1384,A poster advertising misery
1387
+ 1385,a portrait of Elvis Presley
1388
+ 1386,Post-Modern Nouveaux Statue
1389
+ 1387,a man from an anime
1390
+ 1388,Anxiety: the one emotion that does not lie
1391
+ 1389,photosynthesis
1392
+ 1390,the man in the mirror
1393
+ 1391,"half Ryan, half pigeon"
1394
+ 1392,Sorrow's my body on the wavesnnAlone on the water
1395
+ 1393,a seance in the basement
1396
+ 1394,A poster serving as a memento mori
1397
+ 1395,Aflame
1398
+ 1396,A structure made of people standing on top of other people
1399
+ 1397,The First Supper
1400
+ 1398,totemic dusk
1401
+ 1399,a beautiful person
1402
+ 1400,a painting of the last day
1403
+ 1401,a photo of Juliet
1404
+ 1402,a horse with four eyes
1405
+ 1403,pasta ömetabolism
1406
+ 1404,Synesthesia
1407
+ 1405,a cherry tree made of fractals
1408
+ 1406,Post-post-post-post-modern art
1409
+ 1407,pasta ömetabolism
1410
+ 1408,MEMETIC HAZARD
1411
+ 1409,a portrait of Abe Lincoln
1412
+ 1410,Everywhere is no-place
1413
+ 1411,Memento Mori
1414
+ 1412,The average Advadnoun twitter follower
1415
+ 1413,a beautiful painting
1416
+ 1414,A black and white photo of a rainbow.
1417
+ 1415,The Death of Achilles
1418
+ 1416,a portrait of <name>
1419
+ 1417,cult of prisms
1420
+ 1418,a beautiful person
1421
+ 1419,a beautiful painting
1422
+ 1420,a beautiful woman
1423
+ 1421,An Arundel Tomb
1424
+ 1422,she came in through the wall
1425
+ 1423,the moon is a sickle cell
1426
+ 1424,a minimalist painting that you wouldn't understand
1427
+ 1425,a beast of burden
1428
+ 1426,a gilded lily
1429
+ 1427,a beautiful woman
1430
+ 1428,a brilliant painting titled
1431
+ 1429,a painting of the city
1432
+ 1430,"""Your mind falls in the gaps"" - by Ryan Murdock"
1433
+ 1431,"r.j. Murdock's ""The Death of a Hacker"""
1434
+ 1432,Aflame
1435
+ 1433,a beautiful painting
1436
+ 1434,Juliet
1437
+ 1435,turnt brony undergrad dwight
1438
+ 1436,symmetry
1439
+ 1437,Going home -- melanchonostalgic photography
1440
+ 1438,a character from a ghibli movie
1441
+ 1439,She's gorgeous
1442
+ 1440,incineratures motherhood
1443
+ 1441,a calm still life in ethereal blue
1444
+ 1442,incineratures motherhood
1445
+ 1443,A baroque portrait of Hamlet
1446
+ 1444,"A professional, minimalist poster for the book The Old Man and the Sea"
1447
+ 1445,Anxiety: the one emotion that does not lie
1448
+ 1446,a portrait of a beautiful person
1449
+ 1447,"Go off to sleep in the sunshine, I don’t want to see the day when it’s dying"
1450
+ 1448,a tree with weaping branches
1451
+ 1449,''''
1452
+ 1450,Intimations of Immortality
1453
+ 1451,Weeping Roses
1454
+ 1452,playing Go with Death
1455
+ 1453,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
1456
+ 1454,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1457
+ 1455,turnt brony undergrad dwight
1458
+ 1456,Dancing in the moonlight
1459
+ 1457,Figure 5: a corgi
1460
+ 1458,a beautiful woman
1461
+ 1459,A Tragedy
1462
+ 1460,a photo of a purple dog
1463
+ 1461,a famous painted portrait of Lady Macbeth
1464
+ 1462,"A cute, minmimalist valentine's day card featuring a cat"
1465
+ 1463,The things I'll take with me
1466
+ 1464,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
1467
+ 1465,Summer's Symphony: Counterpoint and Melody
1468
+ 1466,a horse with four eyes
1469
+ 1467,Aflame
1470
+ 1468,a ginormous baby
1471
+ 1469,
1472
+ 1470,Saturn being a good dad to his son
1473
+ 1471,a beautiful woman
1474
+ 1472,a terrifying night hag
1475
+ 1473,a portrait of Abraham Lincoln
1476
+ 1474,"i'm never gonna lose the desire to be loved. ""Oh the pain!! The pain! The agony!"""
1477
+ 1475,a cute cat
1478
+ 1476,"""The hunger artist, full"" by Ryan Murdock"
1479
+ 1477,A baroque portrait of Hamlet
1480
+ 1478,a beautiful person
1481
+ 1479,Last Breath
1482
+ 1480,Juliet
1483
+ 1481,"Go off to sleep in the sunshine, I don’t want to see the day when it’s dying"
1484
+ 1482,"God, it's amazing."
1485
+ 1483,a portrait of Abraham Lincoln
1486
+ 1484,a woman and a crow
1487
+ 1485,a portrait of Abraham Lincoln
1488
+ 1486,Dancing in the moonlight
1489
+ 1487,a tree with weaping branches
1490
+ 1488,using generated paint
1491
+ 1489,a gilded lily
1492
+ 1490,treehouse in the style of studio ghibli animation
1493
+ 1491,chiaroscuro
1494
+ 1492,Last Breath
1495
+ 1493,A dead man
1496
+ 1494,a summer day
1497
+ 1495,The fates knit such intricate nooses for us to bind.
1498
+ 1496,bored of dying
1499
+ 1497,🔴~__��'t �
1500
+ 1498,Pig which could not cease to die.
1501
+ 1499,Intimations of Immortality
1502
+ 1500,a painting of a sycamore in
1503
+ 1501,The Fool
1504
+ 1502,she isn't busy: she just isn't into you
1505
+ 1503,a beautiful person
1506
+ 1504,"""The hunger artist, full"" by Ryan Murdock"
1507
+ 1505,
1508
+ 1506,a portrait of Elvis Presley
1509
+ 1507,a woman and a crow
1510
+ 1508,Homer Simpson
1511
+ 1509,Anxiety: the one emotion that does not lie
1512
+ 1510,A structure made of people standing on top of other people
1513
+ 1511,a beautiful person
1514
+ 1512,a beautiful person
1515
+ 1513,totemic dusk
1516
+ 1514,a christmas card from the victorian era
1517
+ 1515,Sickness of the Soul
1518
+ 1516,God is in heaven and all is right in the world
1519
+ 1517,Mona Lisa
1520
+ 1518,a portrait of Abraham Lincoln
1521
+ 1519,a cute cat
1522
+ 1520,turnt brony undergrad dwight
1523
+ 1521,"a brilliant sketch titled ""Let Forever be Delayed"""
1524
+ 1522,a city in Van Gogh's style
1525
+ 1523,Synesthesia by Ryan Murdock
1526
+ 1524,"""A God Made of Wires and Dust"" by Ryan Murdock"
1527
+ 1525,a beautiful dawn
1528
+ 1526,a portrait of Abraham Lincoln
1529
+ 1527,
1530
+ 1528,a horse with four eyes.
1531
+ 1529,Last Breath
1532
+ 1530,slightly mild cosplaying pseudo beard
1533
+ 1531,
1534
+ 1532,A dead man
1535
+ 1533,cowboy with a trumpet
1536
+ 1534,We haunt the synapses
1537
+ 1535,
1538
+ 1536,a horse with four eyes.
1539
+ 1537,pasta ömetabolism
1540
+ 1538,A short life full of immense joy
1541
+ 1539,a wormhole
1542
+ 1540,Juliet
1543
+ 1541,is this loss? but it's van gogh
1544
+ 1542,tamine ethereal image
1545
+ 1543,is this loss? but it's van gogh
1546
+ 1544,"A clock with gorgeous, intricate gradients on it"
1547
+ 1545,Dancing in the moonlight
1548
+ 1546,a broken heart
1549
+ 1547,a wormhole
1550
+ 1548,beautiful art
1551
+ 1549,Genesis
1552
+ 1550,face like an M.C. Escher drawing n(you could get lost in its beauty)
1553
+ 1551,a character from a ghibli movie
1554
+ 1552,Cat in a teacup
1555
+ 1553,symmetry
1556
+ 1554,A black and white photo of a rainbow.
1557
+ 1555,A propaganda poster promoting big chungus
1558
+ 1556,a woman and a crow
1559
+ 1557,a green doG
1560
+ 1558,"""The hunger artist, full"" by Ryan Murdock"
1561
+ 1559,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1562
+ 1560,Last Breath
1563
+ 1561,The Monet Lisa
1564
+ 1562,all architecture
1565
+ 1563,The Virgin Mary as a broken-down android
1566
+ 1564,a terrifying night hag
1567
+ 1565,a green doG
1568
+ 1566,pasta ömetabolism
1569
+ 1567,The Fool tarot card but it's The Lovers
1570
+ 1568,Do you remember the mythic beast?nA last-minute cancellation at The Last Supper
1571
+ 1569,the eternal dread of lemongrab
1572
+ 1570,The warrior Achilles devours slain Hector's corpse -- an ink poster by Ryan Murdock
1573
+ 1571,Shinji Ikari
1574
+ 1572,The Monet Lisa
1575
+ 1573,a cherry tree made of fractals
1576
+ 1574,a portrait of Juliet
1577
+ 1575,She's gorgeous
1578
+ 1576,A black and white photo of a rainbow.
1579
+ 1577,They called you the hyacinth girl
1580
+ 1578,a portrait of <name>
1581
+ 1579,photosynthesis
1582
+ 1580,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
1583
+ 1581,The Starry Night
1584
+ 1582,"""A new hope blooms on the long notes of old horns."""
1585
+ 1583,A minimalistic still life of a cat sitting on a table
1586
+ 1584,a dog eating a cheese burger
1587
+ 1585,A structure made of people standing on top of other people
1588
+ 1586,Genesis
1589
+ 1587,
1590
+ 1588,"Oh the Death, not pigs forever."
1591
+ 1589,The Starry Night
1592
+ 1590,Persephone
1593
+ 1591,a beautiful person
1594
+ 1592,Sickness of the Soul
1595
+ 1593,turnt brony undergrad dwight
1596
+ 1594,a gilded lily
1597
+ 1595,Photograph of a glass of Blue Tea
1598
+ 1596,a woman and a crow
1599
+ 1597,
1600
+ 1598,a beautiful person
1601
+ 1599,turnt brony undergrad dwight
1602
+ 1600,mammals
1603
+ 1601,The Lost Generation
1604
+ 1602,a goblin by van gogh
1605
+ 1603,A black and white photo of a rainbow.
1606
+ 1604,"""Your mind flails in the gaps"" - by Ryan Murdock"
1607
+ 1605,"half Ryan, half pigeon"
1608
+ 1606,An Arundel Tomb
1609
+ 1607,pasta ömetabolism
1610
+ 1608,A dandelion blown into the universe
1611
+ 1609,a man at the beach
1612
+ 1610,Monet Lisa
1613
+ 1611,"r.j. Murdock's ""The Death of a Hacker"""
1614
+ 1612,Saturn being a good dad to his son
1615
+ 1613,The Starry Night
1616
+ 1614,a beautiful person
1617
+ 1615,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
1618
+ 1616,an old man
1619
+ 1617,an intricate sculpture of Death itself
1620
+ 1618,Genesis
1621
+ 1619,a cherry tree made of fractals
1622
+ 1620,a beautiful woman
1623
+ 1621,a beautiful woman
1624
+ 1622,an illustration of a baby daikon radish in a tutu walking a dog
1625
+ 1623,
1626
+ 1624,the latent space
1627
+ 1625,A dead man
1628
+ 1626,
1629
+ 1627,frogs in the style of Ralph Steadman
1630
+ 1628,a cherry tree made of fractals
1631
+ 1629,fuzzy pals hum
1632
+ 1630,a tiny church inside an eyeball
1633
+ 1631,Aflame
1634
+ 1632,a sunflower
1635
+ 1633,Nostos
1636
+ 1634,Monet Lisa
1637
+ 1635,Monet Lisa
1638
+ 1636,a cherry tree made of fractals
1639
+ 1637,Cat in a teacup
1640
+ 1638,I miss the Spring
1641
+ 1639,a beautiful person
1642
+ 1640,Redacted ████████
1643
+ 1641,"God, it's amazing."
1644
+ 1642,a portrait of <name>
1645
+ 1643,Shrek the ogre
1646
+ 1644,Super Mario World but every character is Luigi
1647
+ 1645,God killed Van Gogh.
1648
+ 1646,"A cute, minmimalist valentine's day card featuring a cat"
1649
+ 1647,She's gorgeous
1650
+ 1648,a sunflower
1651
+ 1649,the sun is shining on the lake
1652
+ 1650,the intersection of art and technology
1653
+ 1651,a beautiful woman
1654
+ 1652,a beautiful painting
1655
+ 1653,Paradise Lost
1656
+ 1654,president abe lincoln but a cat
1657
+ 1655,
1658
+ 1656,"""The Penultimate Supper"" by Da Vinci"
1659
+ 1657,On the edge of endless darkness
1660
+ 1658,With the Gods in envy of their visions
1661
+ 1659,Dril is a cyber-philosopher.
1662
+ 1660,"r.j. Murdock's ""The Death of a Hacker"""
1663
+ 1661,
1664
+ 1662,a picture of Ryan Murdock
1665
+ 1663,A E S T H E T I C ?
1666
+ 1664,deepdream aka inceptionism
1667
+ 1665,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
1668
+ 1666,a beautiful woman
1669
+ 1667,Homer Simpson
1670
+ 1668,Persephone
1671
+ 1669,the whitest man
1672
+ 1670,handsome commemorative garden pigeon
1673
+ 1671,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
1674
+ 1672,a minimalist painting that you wouldn't understand
1675
+ 1673,a beautiful person
1676
+ 1674,Monet Lisa
1677
+ 1675,Monet Lisa
1678
+ 1676,cult of prisms
1679
+ 1677,"a ""This machine kills Trojans"" sticker on a Greek lyre"
1680
+ 1678,The agony of time
1681
+ 1679,turnt brony undergrad dwight
1682
+ 1680,the whitest man
1683
+ 1681,Dril is a cyber-philosopher.
1684
+ 1682,Alan Turing
1685
+ 1683,when the wind blows
1686
+ 1684,a portrait of Persephone
1687
+ 1685,deepdream aka inceptionism
1688
+ 1686,Dead Codes by Ryan Murdock
1689
+ 1687,Saturn being a good dad to his son
1690
+ 1688,a portrait of Abraham Lincoln
1691
+ 1689,The Theotokos is a bird
1692
+ 1690,a beautiful woman
1693
+ 1691,"i'm never gonna lose the desire to be loved. ""Oh the pain!! The pain! The agony!"""
1694
+ 1692,a corgi
1695
+ 1693,a green doG
1696
+ 1694,A E S T H E T I C ?
1697
+ 1695,
1698
+ 1696,the intersection of art and technology
1699
+ 1697,Dead Codes by Ryan Murdock
1700
+ 1698,a cute rabbit
1701
+ 1699,"God, it's amazing."
1702
+ 1700,a silent palace
1703
+ 1701,a wholesome clown. Not creepy at all
1704
+ 1702,Exquisite LonelinessnnLurid art by Ryan Murdock
1705
+ 1703,A structure made of people standing on top of other people
1706
+ 1704,Dead Codes by Ryan Murdock
1707
+ 1705,a gorgeous bouquet with roses and sunflowers
1708
+ 1706,a portrait of <name>
1709
+ 1707,intricate nothing
1710
+ 1708,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1711
+ 1709,Metaphysics
1712
+ 1710,using generated paint
1713
+ 1711,a minimalist painting that you wouldn't understand
1714
+ 1712,she sings opera
1715
+ 1713,Cat in a teacup
1716
+ 1714,turnt brony undergrad dwight
1717
+ 1715,a beautiful woman
1718
+ 1716,"""The hunger artist, full"" by Ryan Murdock"
1719
+ 1717,The years gild our memoriesnUnfairly.
1720
+ 1718,a woman and a crow
1721
+ 1719,A vanitas still life that features twitter follower counts
1722
+ 1720,The Monet Lisa
1723
+ 1721,a gorgeous bouquet with roses and sunflowers
1724
+ 1722,Philosophy is really homesickness: the urge to be at home everywhere
1725
+ 1723,a green doG
1726
+ 1724,an omen
1727
+ 1725,An elegant image of nature with gorgeous swirling gradients by R.J. Murdock
1728
+ 1726,a cute corgi
1729
+ 1727,cowboy with a trumpet
1730
+ 1728,"The laptop of brave Achaean Achilles, who would not live long."
1731
+ 1729,a portrait of a beautiful woman
1732
+ 1730,slightly mild cosplaying pseudo beard
1733
+ 1731,a man standing alone in a wheat field
1734
+ 1732,Aflame
1735
+ 1733,a portrait of Persephone
1736
+ 1734,a woman and a crow
1737
+ 1735,I sold my soul at the crossroads
1738
+ 1736,the demise of the universe
1739
+ 1737,a portrait of a beautiful person
1740
+ 1738,"Mephisto, shrouded in smoke"
1741
+ 1739,a portrait of advadnoun
1742
+ 1740,God is in heaven and all is right in the world
1743
+ 1741,a cherry tree made of fractals
1744
+ 1742,Odysseus speaks to the shades in Hades
1745
+ 1743,a steampunk technomancer
1746
+ 1744,a woman and a crow
1747
+ 1745,treehouse in the style of studio ghibli animation
1748
+ 1746,a gorgeous bouquet with roses and sunflowers
1749
+ 1747,🎷
1750
+ 1748,a cherry tree made of fractals
1751
+ 1749,"A cute, minmimalist valentine's day card featuring a cat"
1752
+ 1750,a famous painted portrait of Lady Macbeth
1753
+ 1751,pasta ömetabolism
1754
+ 1752,A short life full of immense joy
1755
+ 1753,a terrifying night hag
1756
+ 1754,a horse with four eyes.
1757
+ 1755,A baroque portrait of Hamlet
1758
+ 1756,this person is
1759
+ 1757,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1760
+ 1758,"a brilliant sketch titled ""Let Forever be Delayed"""
1761
+ 1759,baby metal
1762
+ 1760,a character from a ghibli movie
1763
+ 1761,a corgi
1764
+ 1762,the massive hope nof early iterations
1765
+ 1763,a portrait of a beautiful person
1766
+ 1764,Intimations of Immortality
1767
+ 1765,a silent palace
1768
+ 1766,Post-post-post-post-modern art
1769
+ 1767,a person's face
1770
+ 1768,"r.j. Murdock's ""The Death of a Hacker"""
1771
+ 1769,a cherry tree made of fractals
1772
+ 1770,Ophelia
1773
+ 1771,A E S T H E T I C ?
1774
+ 1772,
1775
+ 1773,
1776
+ 1774,Genesis
1777
+ 1775,Persephone
1778
+ 1776,Last Breath
1779
+ 1777,a portrait of Abraham Lincoln
1780
+ 1778,The OLD DATA
1781
+ 1779,the whitest man
1782
+ 1780,a minimalist painting that you wouldn't understand
1783
+ 1781,God once loved a woman
1784
+ 1782,totemic dusk
1785
+ 1783,when the wind blows
1786
+ 1784,treehouse in the style of studio ghibli animation
1787
+ 1785,a corgi
1788
+ 1786,Last Breath
1789
+ 1787,slightly mild cosplaying pseudo beard
1790
+ 1788,a portrait of a beautiful woman
1791
+ 1789,
1792
+ 1790,a photo from {my hometown}
1793
+ 1791,Dancing in the moonlight
1794
+ 1792,Everywhere is no-place
1795
+ 1793,Post-post-post-post-modern art
1796
+ 1794,👉 👈
1797
+ 1795,
1798
+ 1796,a woman and a crow
1799
+ 1797,"half Ryan, half pigeon"
1800
+ 1798,president abe lincoln but a cat
1801
+ 1799,A propaganda poster promoting big chungus
1802
+ 1800,"""The hunger artist, full"" by Ryan Murdock"
1803
+ 1801,a painting that couldn't be sold
1804
+ 1802,a beautiful haunting
1805
+ 1803,a technomancer
1806
+ 1804,"""A God Made of Wires and Dust"" by Ryan Murdock"
1807
+ 1805,little birds
1808
+ 1806,"""The hunger artist, full"" by Ryan Murdock"
1809
+ 1807,"""The hunger artist, full"" by Ryan Murdock"
1810
+ 1808,rooted reflected worries
1811
+ 1809,is this loss? but it's van gogh
1812
+ 1810,a portrait of <name>
1813
+ 1811,a beautiful person
1814
+ 1812,a photo portrait of Joe Bidenthulu
1815
+ 1813,a dog eating a cheese burger
1816
+ 1814,Aflame
1817
+ 1815,"a brilliant sketch titled ""Let Forever be Delayed"""
1818
+ 1816,Aflame
1819
+ 1817,Aflame
1820
+ 1818,a beautiful haunting
1821
+ 1819,totemic dusk
1822
+ 1820,"""The hunger artist, full"" by Ryan Murdock"
1823
+ 1821,Intimations of Immortality
1824
+ 1822,"""Your mind fails in the gaps"" - by Ryan Murdock"
1825
+ 1823,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1826
+ 1824,a dog.
1827
+ 1825,a green doG
1828
+ 1826,The Lost Generation
1829
+ 1827,Last Breath
1830
+ 1828,intricate nothing
1831
+ 1829,"God, it's amazing."
1832
+ 1830,this person is
1833
+ 1831,a silent palace
1834
+ 1832,a dog eating a cheese burger
1835
+ 1833,Genesis
1836
+ 1834,a calm still life in ethereal blue
1837
+ 1835,slightly mild cosplaying pseudo beard
1838
+ 1836,A propaganda poster promoting big chungus
1839
+ 1837,is this loss? but it's van gogh
1840
+ 1838,Dancing in the moonlight
1841
+ 1839,a corgi
1842
+ 1840,🔴~__��'t �
1843
+ 1841,totemic dusk
1844
+ 1842,a ginormous baby
1845
+ 1843,Dancing in the moonlight
1846
+ 1844,a photo from {my hometown}
1847
+ 1845,a beautiful Waluigi
1848
+ 1846,human
1849
+ 1847,A black and white photo of a rainbow.
1850
+ 1848,a beautiful person
1851
+ 1849,"""Cameras can't make art""nnAn oil on canvas by Murdock"
1852
+ 1850,a cherry tree made of fractals
1853
+ 1851,a beautiful person
1854
+ 1852,Taylor Swift
1855
+ 1853,a man on fire
1856
+ 1854,Post-Modern Nouveaux Statue
1857
+ 1855,is this loss? but it's van gogh
1858
+ 1856,a man at the beach
1859
+ 1857,a beautiful person
1860
+ 1858,"""The hunger artist, full"" by Ryan Murdock"
1861
+ 1859,The OLD DATA
1862
+ 1860,Dancing in the moonlight
1863
+ 1861,A structure made of people standing on top of other people
1864
+ 1862,a horse with four eyes.
1865
+ 1863,�>: ican read wii
1866
+ 1864,a portrait of Abraham Lincoln
1867
+ 1865,A propaganda poster for chunky cats.
1868
+ 1866,
1869
+ 1867,The Death of Achilles
1870
+ 1868,on the edge of grace
1871
+ 1869,I did not mean it I wanted a cute clever cartoon I swear.
1872
+ 1870,a handwritten obituary
1873
+ 1871,a man standing alone in a wheat field
1874
+ 1872,the intersection of art and technology
1875
+ 1873,Memento Mori
1876
+ 1874,a portrait of a beautiful woman
1877
+ 1875,cigar sammycorgi
1878
+ 1876,a steampunk technomancer
1879
+ 1877,"Sons are like birds, flying always over the mountain"
1880
+ 1878,The Lost Generation
1881
+ 1879,a minimalist painting that you wouldn't understand
1882
+ 1880,A black and white photo of a rainbow.
1883
+ 1881,a man holding an apple in one hand
1884
+ 1882,🔴~__��'t �
1885
+ 1883,🍰 🇺 🎓 🐶
1886
+ 1884,a man holding an apple in one hand
1887
+ 1885,a sketch of the mind of god
1888
+ 1886,treehouse in the style of studio ghibli animation
1889
+ 1887,Beauty here -- a photograph by Ryan Murdock
1890
+ 1888,A E S T H E T I C ?
1891
+ 1889,a selfie
1892
+ 1890,is this loss? but it's van gogh
1893
+ 1891,Costco wedding
1894
+ 1892,a beautiful person
1895
+ 1893,a green doG
1896
+ 1894,symmetry
1897
+ 1895,a dog eating a cheese burger
1898
+ 1896,a summer day
1899
+ 1897,"""A God Made of Wires and Dust"" by Ryan Murdock"
1900
+ 1898,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1901
+ 1899,a portrait of a beautiful woman
1902
+ 1900,зеленая собака
1903
+ 1901,"joy, happiness, bliss"
1904
+ 1902,Juliet
1905
+ 1903,a wholesome clown. Not creepy at all
1906
+ 1904,meaningless neko ♡♡ neko
1907
+ 1905,I can read when there's writing on the wall
1908
+ 1906,"Oh the Death, not pigs forever."
1909
+ 1907,a minimalist painting that you wouldn't understand
1910
+ 1908,Aflame
1911
+ 1909,Super Mario World but every character is Luigi
1912
+ 1910,/
1913
+ 1911,Dead Codes by Ryan Murdock
1914
+ 1912,A vanitas still life that features twitter follower counts
1915
+ 1913,a beautiful woman
1916
+ 1914,a lamp
1917
+ 1915,
1918
+ 1916,the eyes of God are wired shut
1919
+ 1917,intricate nothing
1920
+ 1918,Is this loss?
1921
+ 1919,a photo of a purple dog
1922
+ 1920,a lamp
1923
+ 1921,totemic dusk
1924
+ 1922,The average Advadnoun twitter follower
1925
+ 1923,photosynthesis
1926
+ 1924,Costco wedding
1927
+ 1925,🔴~__��'t �
1928
+ 1926,Aflame
1929
+ 1927,a cherry tree made of fractals
1930
+ 1928,an intricate painting of eternity
1931
+ 1929,Saturn being a good dad to his son
1932
+ 1930,Nostos
1933
+ 1931,a beautiful person
1934
+ 1932,A gargoyle of wires and flesh
1935
+ 1933,🎷
1936
+ 1934,a beautiful person
1937
+ 1935,a tack
1938
+ 1936,Faceless Sorrow
1939
+ 1937,a gorgeous bouquet with roses and sunflowers
1940
+ 1938,using generated paint
1941
+ 1939,A Tragedy
1942
+ 1940,зеленая собака
1943
+ 1941,🔴~__��'t �
1944
+ 1942,A Tragedy
1945
+ 1943,A sticky-note magnum opus featuring birds
1946
+ 1944,president abe lincoln but a cat
1947
+ 1945,using generated paint
1948
+ 1946,
1949
+ 1947,Intimations of Immortality
1950
+ 1948,a portrait of <name>
1951
+ 1949,a silent palace
1952
+ 1950,A poster advertising death by water
1953
+ 1951,A propaganda poster promoting big chungus
1954
+ 1952,totemic dusk
1955
+ 1953,a horse with four eyes.
1956
+ 1954,cigar sammycorgi
1957
+ 1955,"""It is beginning to end.""nby Ryan Murdock."
1958
+ 1956,all architecture
1959
+ 1957,a portrait of Abraham Lincoln
1960
+ 1958,"joy, happiness, bliss"
1961
+ 1959,a man with a beard
1962
+ 1960,Genesis
1963
+ 1961,👉 👈
1964
+ 1962,Summer's Symphony: Counterpoint and Melody
1965
+ 1963,A gun killed Van Gogh.
1966
+ 1964,snazzy snazzy myspace cosplaying undergrad lookin cosplaying jared
1967
+ 1965,A minimalist propaganda poster promoting panpsychism
1968
+ 1966,Persephone
1969
+ 1967,a goblin by van gogh
1970
+ 1968,"""A new hope blooms on the long notes of old horns."""
1971
+ 1969,a painting of the city
1972
+ 1970,
1973
+ 1971,The agony of time
1974
+ 1972,Ophelia
1975
+ 1973,turnt brony undergrad dwight
1976
+ 1974,a beautiful person
1977
+ 1975,totemic dusk
1978
+ 1976,The Fool tarot card but it's The Lovers
1979
+ 1977,
1980
+ 1978,a broken heart
1981
+ 1979,"Rise, Oink, Lazarus of Bethany"
1982
+ 1980,"""The hunger artist, full"" by Ryan Murdock"
1983
+ 1981,a cherry tree made of fractals
1984
+ 1982,an intricate painting of eternity
1985
+ 1983,She's gorgeous
1986
+ 1984,a beautiful person
1987
+ 1985,I will meet you in a field firmly set within wrong.nnBy Ryan Murdock
1988
+ 1986,using generated paint
1989
+ 1987,a portrait of Abe Lincoln
1990
+ 1988,Persephone flees Hades
1991
+ 1989,a steampunk technomancer
1992
+ 1990,a beautiful woman
1993
+ 1991,"A portrait: man, whose lineage is corpse."
1994
+ 1992,🔴~__��'t �
1995
+ 1993,Intimations of Immortality
1996
+ 1994,an omen
1997
+ 1995,Persephone
1998
+ 1996,"God closes a door, boards up stained-glass windows."
1999
+ 1997,"""A new hope blooms on the long notes of old horns."""
2000
+ 1998,Fire
2001
+ 1999,
2002
+ 2000,Metaphysics
2003
+ 2001,"""The hunger artist, full"" by Ryan Murdock"
2004
+ 2002,when the wind blows
2005
+ 2003,a portrait of a beautiful person
2006
+ 2004,The Lost Generation
2007
+ 2005,a corgi
2008
+ 2006,a beautiful woman
2009
+ 2007,pasta ömetabolism
2010
+ 2008,a sad man
2011
+ 2009,Juliet
2012
+ 2010,a painting of a sycamore in
2013
+ 2011,a portrait of Abraham Lincoln
2014
+ 2012,The Fates knit such delicate nooses for us to bind
2015
+ 2013,a photo from {my hometown}
2016
+ 2014,a tree with leaves that are amarillo sightseeing thetic
2017
+ 2015,Sickness of the Soul
2018
+ 2016,pasta ömetabolism
2019
+ 2017,pasta ömetabolism
2020
+ 2018,bored of dying
2021
+ 2019,An Arundel Tomb
2022
+ 2020,The Starry Night
2023
+ 2021,Nostos
2024
+ 2022,bored of dying
2025
+ 2023,The Lost Generation
2026
+ 2024,The average Advadnoun twitter follower
2027
+ 2025,pathoarthistory evankirstel sleep depend npainter ☼ nightmare comprehend
2028
+ 2026,a silent palace
2029
+ 2027,beautiful art
2030
+ 2028,
2031
+ 2029,Last Breath
2032
+ 2030,
2033
+ 2031,a
2034
+ 2032,a portrait of advadnoun
2035
+ 2033,a portrait of a beautiful person
2036
+ 2034,a man holding an apple in one hand
2037
+ 2035,a gorgeous bouquet with roses and sunflowers
2038
+ 2036,photosynthesis
2039
+ 2037,God killed Van Gogh.
2040
+ 2038,Saturn being a good dad to his son
2041
+ 2039,a horse with four eyes.
2042
+ 2040,a beautiful woman
2043
+ 2041,a beautiful person
2044
+ 2042,a portrait of Abe Lincoln
2045
+ 2043,totemic dusk
2046
+ 2044,A Tragedy
2047
+ 2045,Persephone
2048
+ 2046,The OLD DATA
2049
+ 2047,"Elvis holding a rabbit. A detailed, high-quality photo without distortions"
2050
+ 2048,face like an M.C. Escher drawing n(you could get lost in its beauty)
2051
+ 2049,Dead Codes by Ryan Murdock
2052
+ 2050,Intimations of Immortality
2053
+ 2051,turnt brony undergrad dwight
2054
+ 2052,a photo of a purple dog
2055
+ 2053,Cat in a teacup
2056
+ 2054,🔴~__��'t �
2057
+ 2055,turnt brony undergrad dwight
2058
+ 2056,Beauty here -- a photo by r.j. Murdock
2059
+ 2057,The Fool
2060
+ 2058,a portrait of Juliet
2061
+ 2059,a jukebox powered by smoke
2062
+ 2060,cowboy with a trumpet
2063
+ 2061,twilight
2064
+ 2062,"joy, happiness, bliss"
2065
+ 2063,Dead Codes by Ryan Murdock
2066
+ 2064,"a brilliant sketch titled ""Let Forever be Delayed"""
2067
+ 2065,tamine ethereal image
2068
+ 2066,a portrait of <name>
2069
+ 2067,"God, it's amazing."
2070
+ 2068,she came in through the wall
2071
+ 2069,Fire
2072
+ 2070,Juliet
2073
+ 2071,God killed Van Gogh.
2074
+ 2072,a portrait of Persephone
2075
+ 2073,a beautiful person
2076
+ 2074,the whitest man
2077
+ 2075,Somewhere where I am not.nIntricate beauty by Ryan Murdock.
2078
+ 2076,a gilded lily
2079
+ 2077,The Lost Generation
2080
+ 2078,Dead Codes by Ryan Murdock
2081
+ 2079,Intimations of Immortality
2082
+ 2080,meaningless neko ♡♡ neko
2083
+ 2081,beautiful art
2084
+ 2082,"""The hunger artist, full"" by Ryan Murdock"
2085
+ 2083,an intricate painting of eternity
2086
+ 2084,Good grief
2087
+ 2085,"a person with 2 eyes, one mouth, one nose, and no extra holes!"
2088
+ 2086,The Fool