Downloads · 30 days
0
M1dataset/sacristy
sacristy is a machine learning model from M1dataset. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Downloads · 30 days
0
Access
Public
Updated Apr 16, 2023
Repo size
—
Likes
0
Public
Click a slice to open those files.
.md5.8 KB · 80%
From the Hugging Face model README
//Stable_Diffusion.ipynb//
#Le texte commenté (#) en vert ne correspondent pas à du code exécutable. Il s’agit d’indications que nous avons rajouté afin de vous aider à comprendre notre modèle.
#On vérifie le type de GPU et de VRAM disponibles. #GPU = puce informatique qui effectue des calculs mathématiques rapides, principalement pour le rendu d'images. #VRAM = mémoire vidéo. !nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader
#On importe le modèle pré-entrainé. !wget -q https://github.com/ShivamShrirao/diffusers/raw/main/examples/dreambooth/train_dreambooth.py !wget -q https://github.com/ShivamShrirao/diffusers/raw/main/scripts/convert_diffusers_to_original_stable_diffusion.py %pip install -qq git+https://github.com/ShivamShrirao/diffusers %pip install -q -U --pre triton %pip install -q accelerate transformers ftfy bitsandbytes==0.35.0 gradio natsort safetensors
#On se connecte à HuggingFace, bibliothèque open source contenant des modèles pré-formés.
!mkdir -p ~/.huggingface HUGGINGFACE_TOKEN = "" #@param {type:"string"} !echo -n "{HUGGINGFACE_TOKEN}" > ~/.huggingface/token
#On installe les xformers à partir de wheels précompilés.
%pip install --no-deps -q https://github.com/brian6091/xformers-wheels/releases/download/0.0.15.dev0%2B4c06c79/xformers-0.0.15.dev0+4c06c79.d20221205-cp38-cp38-linux_x86_64.whl
#On sauvegarde les paramètres du modèle dans notre Google drive.
save_to_gdrive = False if save_to_gdrive: from google.colab import drive drive.mount('/content/drive')
MODEL_NAME = "runwayml/stable-diffusion-v1-5"
OUTPUT_DIR = "stable_diffusion_weights/zwx" if save_to_gdrive: OUTPUT_DIR = "/content/drive/MyDrive/" + OUTPUT_DIR else: OUTPUT_DIR = "/content/" + OUTPUT_DIR
print(f"[*] Weights will be saved at {OUTPUT_DIR}")
!mkdir -p $OUTPUT_DIR
#On crée une liste à partir de notre corpus d’images.
concepts_list = [ { "instance_prompt": "photo of sacristy room", "class_prompt": "photo of a room", "instance_data_dir": "/content/data/sacristy", "class_data_dir": "/content/data/room" }, { "instance_prompt": "photo of screens furniture", "class_prompt": "photo of a furniture", "instance_data_dir": "/content/data/screens", "class_data_dir": "/content/data/furniture" } ]
import json import os for c in concepts_list: os.makedirs(c["instance_data_dir"], exist_ok=True)
with open("concepts_list.json", "w") as f: json.dump(concepts_list, f, indent=4)
#On télécharge notre corpus d’images.
import os from google.colab import files import shutil
for c in concepts_list:
print(f"Uploading instance images for {c['instance_prompt']}")
uploaded = files.upload()
for filename in uploaded.keys():
dst_path = os.path.join(c['instance_data_dir'], filename)
shutil.move(filename, dst_path)
#On entraine notre corpus d’images.
!accelerate launch train_dreambooth.py
--pretrained_model_name_or_path=$MODEL_NAME
--pretrained_vae_name_or_path="stabilityai/sd-vae-ft-mse"
--output_dir=$OUTPUT_DIR
--revision="fp16"
--with_prior_preservation --prior_loss_weight=1.0
--seed=1337
--resolution=512
--train_batch_size=1
--train_text_encoder
--mixed_precision="fp16"
--use_8bit_adam
--gradient_accumulation_steps=1
--learning_rate=1e-6
--lr_scheduler="constant"
--lr_warmup_steps=0
--num_class_images=50
--sample_batch_size=4
--max_train_steps=800
--save_interval=10000
--concepts_list="concepts_list.json"
#On renseigne le chemin d’accès vers les paramètres du modèle pré-entrainé.
WEIGHTS_DIR = "" #@param {type:"string"} if WEIGHTS_DIR == "": from natsort import natsorted from glob import glob import os WEIGHTS_DIR = natsorted(glob(OUTPUT_DIR + os.sep + ""))[-1] print(f"[] WEIGHTS_DIR={WEIGHTS_DIR}")
#On renseigne le chemin d’accès vers les paramètres du modèle pré-entrainé.
WEIGHTS_DIR = "" #@param {type:"string"} if WEIGHTS_DIR == "": from natsort import natsorted from glob import glob import os WEIGHTS_DIR = natsorted(glob(OUTPUT_DIR + os.sep + ""))[-1] print(f"[] WEIGHTS_DIR={WEIGHTS_DIR}")
#On demande à utiliser le modèle pré-entrainé.
import torch from torch import autocast from diffusers import StableDiffusionPipeline, DDIMScheduler from IPython.display import display
model_path = WEIGHTS_DIR # If you want to use previously trained model saved in gdrive, replace this with the full path of model in gdrive
pipe = StableDiffusionPipeline.from_pretrained(model_path, safety_checker=None, torch_dtype=torch.float16).to("cuda") pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config) pipe.enable_xformers_memory_efficient_attention() g_cuda = None
#On vient générer nos images à partir d’une entrée textuelle, le prompt.
prompt = "photo of a sacristy formed by three red satin screens" negative_prompt = "" num_samples = 4 guidance_scale = 7.5 num_inference_steps = 24 height = 512 width = 512
with autocast("cuda"), torch.inference_mode(): images = pipe( prompt, height=height, width=width, negative_prompt=negative_prompt, num_images_per_prompt=num_samples, num_inference_steps=num_inference_steps, guidance_scale=guidance_scale, generator=g_cuda ).images
for img in images: display(img)