matttrent justinpinkney commited on
Commit
e70b7fc
·
0 Parent(s):

Duplicate from lambdalabs/stable-diffusion-image-variations

Browse files

Co-authored-by: Justin Pinkney <[email protected]>

Files changed (7) hide show
  1. .gitattributes +31 -0
  2. README.md +14 -0
  3. app.py +90 -0
  4. examples/matisse.jpg +0 -0
  5. examples/vermeer.jpg +0 -0
  6. requirements.txt +3 -0
  7. unsafe.png +0 -0
.gitattributes ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ *.ftz filter=lfs diff=lfs merge=lfs -text
6
+ *.gz filter=lfs diff=lfs merge=lfs -text
7
+ *.h5 filter=lfs diff=lfs merge=lfs -text
8
+ *.joblib filter=lfs diff=lfs merge=lfs -text
9
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
10
+ *.model filter=lfs diff=lfs merge=lfs -text
11
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
12
+ *.npy filter=lfs diff=lfs merge=lfs -text
13
+ *.npz filter=lfs diff=lfs merge=lfs -text
14
+ *.onnx filter=lfs diff=lfs merge=lfs -text
15
+ *.ot filter=lfs diff=lfs merge=lfs -text
16
+ *.parquet filter=lfs diff=lfs merge=lfs -text
17
+ *.pickle filter=lfs diff=lfs merge=lfs -text
18
+ *.pkl filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pt filter=lfs diff=lfs merge=lfs -text
21
+ *.pth filter=lfs diff=lfs merge=lfs -text
22
+ *.rar filter=lfs diff=lfs merge=lfs -text
23
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
24
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
25
+ *.tflite filter=lfs diff=lfs merge=lfs -text
26
+ *.tgz filter=lfs diff=lfs merge=lfs -text
27
+ *.wasm filter=lfs diff=lfs merge=lfs -text
28
+ *.xz filter=lfs diff=lfs merge=lfs -text
29
+ *.zip filter=lfs diff=lfs merge=lfs -text
30
+ *.zst filter=lfs diff=lfs merge=lfs -text
31
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Stable Diffusion Image Variations
3
+ emoji: 🖼️
4
+ colorFrom: purple
5
+ colorTo: purple
6
+ sdk: gradio
7
+ sdk_version: 3.3
8
+ app_file: app.py
9
+ pinned: false
10
+ license: mit
11
+ duplicated_from: lambdalabs/stable-diffusion-image-variations
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from PIL import Image
4
+
5
+ from lambda_diffusers import StableDiffusionImageEmbedPipeline
6
+
7
+ def main(
8
+ input_im,
9
+ scale=3.0,
10
+ n_samples=4,
11
+ steps=25,
12
+ seed=0,
13
+ ):
14
+ generator = torch.Generator(device=device).manual_seed(int(seed))
15
+
16
+ images_list = pipe(
17
+ n_samples*[input_im],
18
+ guidance_scale=scale,
19
+ num_inference_steps=steps,
20
+ generator=generator,
21
+ )
22
+
23
+ images = []
24
+ for i, image in enumerate(images_list["sample"]):
25
+ if(images_list["nsfw_content_detected"][i]):
26
+ safe_image = Image.open(r"unsafe.png")
27
+ images.append(safe_image)
28
+ else:
29
+ images.append(image)
30
+ return images
31
+
32
+
33
+ description = \
34
+ """
35
+ Generate variations on an input image using a fine-tuned version of Stable Diffision.
36
+ Trained by [Justin Pinkney](https://www.justinpinkney.com) ([@Buntworthy](https://twitter.com/Buntworthy)) at [Lambda](https://lambdalabs.com/)
37
+
38
+ This version has been ported to 🤗 Diffusers library, see more details on how to use this version in the [Lambda Diffusers repo](https://github.com/LambdaLabsML/lambda-diffusers).
39
+ __For the original training code see [this repo](https://github.com/justinpinkney/stable-diffusion).
40
+
41
+ ![](https://raw.githubusercontent.com/justinpinkney/stable-diffusion/main/assets/im-vars-thin.jpg)
42
+
43
+ """
44
+
45
+ article = \
46
+ """
47
+ ## How does this work?
48
+
49
+ The normal Stable Diffusion model is trained to be conditioned on text input. This version has had the original text encoder (from CLIP) removed, and replaced with
50
+ the CLIP _image_ encoder instead. So instead of generating images based a text input, images are generated to match CLIP's embedding of the image.
51
+ This creates images which have the same rough style and content, but different details, in particular the composition is generally quite different.
52
+ This is a totally different approach to the img2img script of the original Stable Diffusion and gives very different results.
53
+
54
+ The model was fine tuned on the [LAION aethetics v2 6+ dataset](https://laion.ai/blog/laion-aesthetics/) to accept the new conditioning.
55
+ Training was done on 4xA6000 GPUs on [Lambda GPU Cloud](https://lambdalabs.com/service/gpu-cloud).
56
+ More details on the method and training will come in a future blog post.
57
+ """
58
+
59
+ device = "cuda" if torch.cuda.is_available() else "cpu"
60
+ pipe = StableDiffusionImageEmbedPipeline.from_pretrained(
61
+ "lambdalabs/sd-image-variations-diffusers",
62
+ revision="273115e88df42350019ef4d628265b8c29ef4af5",
63
+ )
64
+ pipe = pipe.to(device)
65
+
66
+ inputs = [
67
+ gr.Image(),
68
+ gr.Slider(0, 25, value=3, step=1, label="Guidance scale"),
69
+ gr.Slider(1, 4, value=1, step=1, label="Number images"),
70
+ gr.Slider(5, 50, value=25, step=5, label="Steps"),
71
+ gr.Number(0, labal="Seed", precision=0)
72
+ ]
73
+ output = gr.Gallery(label="Generated variations")
74
+ output.style(grid=2)
75
+
76
+ examples = [
77
+ ["examples/vermeer.jpg", 3, 1, 25, 0],
78
+ ["examples/matisse.jpg", 3, 1, 25, 0],
79
+ ]
80
+
81
+ demo = gr.Interface(
82
+ fn=main,
83
+ title="Stable Diffusion Image Variations",
84
+ description=description,
85
+ article=article,
86
+ inputs=inputs,
87
+ outputs=output,
88
+ examples=examples,
89
+ )
90
+ demo.launch()
examples/matisse.jpg ADDED
examples/vermeer.jpg ADDED
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ git+https://github.com/LambdaLabsML/lambda-diffusers.git#egg=lambda-diffusers
2
+ --extra-index-url https://download.pytorch.org/whl/cu113
3
+ torch
unsafe.png ADDED