from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler, StableDiffusionImg2ImgPipeline import torch import gradio as gr from io import BytesIO from PIL import Image import numpy as np #from trans import LanguageTrans import requests import http.client import random import json model_id = "stabilityai/stable-diffusion-2" # Use the Euler scheduler here instead scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler") device = "cuda" if torch.cuda.is_available() else "cpu" def is_contains_chinese(strs): for _char in strs: if '\u4e00' <= _char <='\u9fa5': return True return False def trans_youdao(sentence): """有道翻译""" content = sentence data = { "i": content, "from": "AUTO", "to": "AUTO", "smartresult": "dict", "client": "fanyideskweb", "doctype": "json", "version": "2.1", "keyfrom": "fanyi.web", "action": "FY_BY_REALTIME", "typoResult": "false" } response = requests.post("http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule", data=data).json() resp = response["translateResult"][0][0]["tgt"] #print('{}'.format(resp)) #print('{}'.format(resp)) return(resp) #return resp scale=7.5 steps=100 #i=0 #examples = [["An adventurer is approached by a mysterious stranger in the tavern for a new quest."],[]] def gen(prompt, input_image, strength, scale, steps): if is_contains_chinese(prompt): prompt = trans_youdao(prompt) print(prompt) #print(input_image) if input_image is None: pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, revision="fp16", torch_dtype=torch.float16) pipe = pipe.to(device) pipe.enable_attention_slicing() image = pipe(prompt=prompt, height=768, width=768,guidance_scale=scale, num_inference_steps=steps).images else: pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id, scheduler=scheduler, revision="fp16", torch_dtype=torch.float16) input_image=Image.fromarray(np.uint8(input_image)) input_image = input_image.resize((768, 768)) pipe = pipe.to(device) pipe.enable_attention_slicing() image = pipe(prompt=prompt, init_image=input_image, strength=strength, guidance_scale=scale, num_inference_steps=steps).images return image[0] gr.Interface(fn=gen, inputs=['text', 'image', gr.Slider(0, 1, 0.75),gr.Slider(1, 10, 7.5), gr.Slider(1, maximum=100, value=50, step=1)], outputs='image', title="Bilingual Stable Diffusion 2.0", description="SD 2.0. Welcome: My implementation of SD2 both text and image to image, with both Chinese and English support.", article = "Example:a fabulous mountain view from the window of a luxury hotel with the sun rising in the sky
Example: 站在山上看远方的两个人
Code Ape: 千里马").launch()