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