CoolFace
Modelpublic

TencentARC/t2iadapter_canny_sd15v2

sourceHugging Faceapache-2.0updated 3y agoView on Hugging Face
4likes908downloads
Model Card

T2I Adapter - Canny

T2I Adapter is a network providing additional conditioning to stable diffusion. Each t2i checkpoint takes a different type of conditioning as input and is used with a specific base stable diffusion checkpoint.

This checkpoint provides conditioning on canny edge's for the stable diffusion 1.5 checkpoint.

Model Details

  • Developed by: T2I-Adapter: Learning Adapters to Dig out More Controllable Ability for Text-to-Image Diffusion Models
  • Model type: Diffusion-based text-to-image generation model
  • Language(s): English
  • License: Apache 2.0
  • Resources for more information: GitHub Repository, Paper.
  • Cite as:

@misc{ title={T2I-Adapter: Learning Adapters to Dig out More Controllable Ability for Text-to-Image Diffusion Models}, author={Chong Mou, Xintao Wang, Liangbin Xie, Yanze Wu, Jian Zhang, Zhongang Qi, Ying Shan, Xiaohu Qie}, year={2023}, eprint={2302.08453}, archivePrefix={arXiv}, primaryClass={cs.CV} }

Checkpoints

Model NameControl Image OverviewControl Image ExampleGenerated Image Example
TencentARC/t2iadapter_color_sd14v1<br/> Trained with spatial color paletteA image with 8x8 color palette.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/colorsampleinput.png"><img width="64" style="margin:0;padding:0;" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/colorsampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/colorsampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/colorsampleoutput.png"/></a>
TencentARC/t2iadapter_canny_sd14v1<br/> Trained with canny edge detectionA monochrome image with white edges on a black background.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/cannysampleinput.png"><img width="64" style="margin:0;padding:0;" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/cannysampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/cannysampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/cannysampleoutput.png"/></a>
TencentARC/t2iadapter_sketch_sd14v1<br/> Trained with [PidiNet](https://github.com/zhuoinoulu/pidinet) edge detectionA hand-drawn monochrome image with white outlines on a black background.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/sketchsampleinput.png"><img width="64" style="margin:0;padding:0;" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/sketchsampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/sketchsampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/sketchsampleoutput.png"/></a>
TencentARC/t2iadapter_depth_sd14v1<br/> Trained with Midas depth estimationA grayscale image with black representing deep areas and white representing shallow areas.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/depthsampleinput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/depthsampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/depthsampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/depthsampleoutput.png"/></a>
TencentARC/t2iadapter_openpose_sd14v1<br/> Trained with OpenPose bone imageA OpenPose bone image.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/openposesampleinput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/openposesampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/openposesampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/openposesampleoutput.png"/></a>
TencentARC/t2iadapter_keypose_sd14v1<br/> Trained with mmpose skeleton imageA mmpose skeleton image.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/keyposesampleinput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/keyposesampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/keyposesampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/keyposesampleoutput.png"/></a>
TencentARC/t2iadapter_seg_sd14v1<br/>Trained with semantic segmentationAn custom segmentation protocol image.<a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/segsampleinput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/segsampleinput.png"/></a><a href="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/segsampleoutput.png"><img width="64" src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/segsampleoutput.png"/></a>
TencentARC/t2iadapter_canny_sd15v2
TencentARC/t2iadapter_depth_sd15v2
TencentARC/t2iadapter_sketch_sd15v2
TencentARC/t2iadapter_zoedepth_sd15v1

Example

  1. 1.Dependencies
sh
pip install diffusers transformers opencv-contrib-python
  1. 1.Run code:
python
import cv2
from PIL import Image
import torch
import numpy as np
from diffusers import T2IAdapter, StableDiffusionAdapterPipeline

image = Image.open('./images/canny_input.png')
image = np.array(image)

low_threshold = 100
high_threshold = 200

image = cv2.Canny(image, low_threshold, high_threshold)
image = Image.fromarray(image)

image.save('./images/canny.png')

adapter = T2IAdapter.from_pretrained("TencentARC/t2iadapter_canny_sd15v2", torch_dtype=torch.float16)
pipe = StableDiffusionAdapterPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    adapter=adapter,
    torch_dtype=torch.float16,
)
pipe.to("cuda")

generator = torch.manual_seed(0)

out_image = pipe(
    "a rabbit wearing glasses",
    image=image,
    generator=generator,
).images[0]

out_image.save('./images/canny_out.png')

[image] [image] [image]