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
} |