File size: 3,896 Bytes
aeec00e
 
 
 
 
 
47ccaa4
aeec00e
47ccaa4
aeec00e
47ccaa4
aeec00e
47ccaa4
aeec00e
 
 
 
 
 
 
 
47ccaa4
 
 
 
 
 
 
 
aeec00e
 
 
 
 
 
 
 
 
 
 
47ccaa4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aeec00e
 
 
 
 
 
 
 
47ccaa4
 
 
 
aeec00e
47ccaa4
 
 
 
 
 
 
 
 
 
 
aeec00e
47ccaa4
aeec00e
 
 
 
 
 
 
 
47ccaa4
 
 
aeec00e
 
 
 
 
 
47ccaa4
 
 
 
 
 
 
 
 
 
 
 
aeec00e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47ccaa4
aeec00e
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# DiffuseCraft: Text-to-Image Generation with Custom Model\n",
        "\n",
        "This notebook uses a custom text-to-image model from Hugging Face to generate images from text prompts. It is optimized for use with a T4 GPU in Google Colab, with a focus on minimizing RAM usage.\n",
        "\n",
        "## Setup\n",
        "\n",
        "Run the following cell to install the required libraries:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "!pip install --no-cache-dir diffusers transformers torch"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Then, load the model by running the next cell. Make sure to replace `\"username/efficient-text-to-image\"` with the actual model ID from Hugging Face."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "import torch\n",
        "from diffusers import StableDiffusionPipeline\n",
        "\n",
        "model_id = \"username/efficient-text-to-image\"  # Replace with actual model ID\n",
        "pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)\n",
        "pipe = pipe.to(\"cuda\")\n",
        "pipe.enable_attention_slicing()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Generate Image\n",
        "\n",
        "Enter your text prompt in the `prompt` variable below. You can also adjust the `height`, `width`, and `num_inference_steps` to balance between image quality and resource usage. Smaller values will use less memory but may result in lower quality images.\n",
        "\n",
        "Run the cell to generate and display the image."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "prompt = \"A beautiful landscape with mountains and a river\"\n",
        "height = 256\n",
        "width = 256\n",
        "num_inference_steps = 20\n",
        "\n",
        "with torch.inference_mode():\n",
        "    image = pipe(prompt, height=height, width=width, num_inference_steps=num_inference_steps).images[0]\n",
        "from IPython.display import display\n",
        "display(image)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Clean Up\n",
        "\n",
        "After generating the image, you can run the following cell to clear the GPU memory, which can help if you plan to generate multiple images."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "import gc\n",
        "gc.collect()\n",
        "torch.cuda.empty_cache()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Save Image\n",
        "\n",
        "If you want to save the generated image, run the following cell:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "image.save(\"generated_image.png\")"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.11.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}