Spaces:
Running
Running
import torch | |
# import pandas | |
import gradio | |
# import PIL | |
import huggingface_hub | |
import huggingface_hub.hf_api | |
# import json | |
# import requests | |
import transformers | |
# import openai | |
# openai.api_key = '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' | |
class HFace_Pluto(object): | |
# | |
# initialize the object | |
def __init__(self, name="Pluto",*args, **kwargs): | |
super(HFace_Pluto, self).__init__(*args, **kwargs) | |
self.author = "Duc Haba" | |
self.name = name | |
self._ph() | |
self._pp("Hello from class", str(self.__class__) + " Class: " + str(self.__class__.__name__)) | |
self._pp("Code name", self.name) | |
self._pp("Author is", self.author) | |
self._ph() | |
# | |
# define class var for stable division | |
self._device = 'cuda' | |
self._steps = [3,8,21,55,89,144] | |
self._guidances = [1.1,3.0,5.0,8.0,13.0,21.0] | |
self._models = ['CompVis/stable-diffusion-v1-4', #default | |
'stabilityai/stable-diffusion-2-1', #1 latest as of feb. 28, 2023 | |
'dreamlike-art/dreamlike-diffusion-1.0', #2 ilike | |
'prompthero/openjourney-v2', #3 ilike | |
'itecgo/sd-lexica_6k-model', #4 | |
'nitrosocke/mo-di-diffusion', | |
'coreco/seek.art_MEGA', | |
'andite/anything-v4.0', #7 anime | |
'nitrosocke/Nitro-Diffusion', | |
'22h/vintedois-diffusion-v0-1', #9 ilike | |
'Lykon/DreamShaper', #10 ilike | |
'rrustom/stable-architecture-diffusers', # 11 | |
'hakurei/waifu-diffusion', #anime style | |
'wavymulder/portraitplus', #13 ilike | |
'dreamlike-art/dreamlike-photoreal-2.0', #no check | |
'johnslegers/epic-diffusion', #15 ilike good example | |
'nitrosocke/Arcane-Diffusion' #16 ilike | |
] | |
self._seed = 667 # sum of walnut in ascii (or Angle 667) | |
self._width = 512 | |
self._height = 512 | |
self._step = 50 | |
self._guidances = 7.5 | |
#self._generator = torch.Generator(device='cuda') | |
self.pipes = [] | |
self.prompts = [] | |
self.images = [] | |
self.seeds = [] | |
self.fname_id = 0 | |
self.dname_img = "img_colab/" | |
return | |
# | |
# pretty print output name-value line | |
def _pp(self, a, b): | |
print("%34s : %s" % (str(a), str(b))) | |
return | |
# | |
# pretty print the header or footer lines | |
def _ph(self): | |
print("-" * 34, ":", "-" * 34) | |
return | |
# | |
# fetch huggingface file | |
def fetch_hface_files(self, | |
hf_names, | |
hf_space="duchaba/skin_cancer_diagnose", | |
local_dir="/content/"): | |
f = str(hf_names) + " is not iteratable, type: " + str(type(hf_names)) | |
try: | |
for f in hf_names: | |
lo = local_dir + f | |
huggingface_hub.hf_hub_download(repo_id=hf_space, filename=f, | |
use_auth_token=True,repo_type=huggingface_hub.REPO_TYPE_SPACE, | |
force_filename=lo) | |
except: | |
self._pp("*Error", f) | |
return | |
# | |
# | |
def push_hface_files(self, | |
hf_names, | |
hf_space="duchaba/skin_cancer_diagnose", | |
local_dir="/content/"): | |
f = str(hf_names) + " is not iteratable, type: " + str(type(hf_names)) | |
try: | |
for f in hf_names: | |
lo = local_dir + f | |
huggingface_hub.upload_file( | |
path_or_fileobj=lo, | |
path_in_repo=f, | |
repo_id=hf_space, | |
repo_type=huggingface_hub.REPO_TYPE_SPACE) | |
except: | |
self._pp("*Error", f) | |
return | |
# | |
def write_file(self,fname, txt): | |
f = open(fname, "w") | |
f.writelines("\n".join(txt)) | |
f.close() | |
return | |
def draw_it(self,prompt): | |
url = 'lion.png' | |
img = PIL.Image.open(url) | |
return img | |
# | |
# add module/method | |
# | |
import functools | |
def add_method(cls): | |
def decorator(func): | |
def wrapper(*args, **kwargs): | |
return func(*args, **kwargs) | |
setattr(cls, func.__name__, wrapper) | |
return func # returning func means func can still be used normally | |
return decorator | |
# instantiate the class | |
monty = HFace_Pluto('Monty') | |
# use magic prompt model | |
monty.gpt2_pipe = transformers.pipeline('text-generation', | |
model='Gustavosta/MagicPrompt-Stable-Diffusion', | |
tokenizer='gpt2') | |
# fetch prompt | |
def _print_response(self, response): | |
for x in response: | |
print(x['generated_text']) | |
return | |
# | |
def fetch_prompt(self, prompt, max_num=1, max_length=240, is_print=False): | |
response = self.gpt2_pipe(prompt, | |
max_length=max_length, | |
num_return_sequences=max_num) | |
# | |
if (is_print): | |
self._print_response(response) | |
return response | |
# use pluto _pp for interface testing | |
# iface = gradio.Interface(fn=pluto.draw_it, inputs="text", outputs="image", | |
# flagging_options=["Excellent", "Good", "Not Bad"]) | |
iface = gradio.Interface(fn=monty.fetch_prompt, inputs="text", outputs="text", | |
flagging_options=[]) | |
# Launch it | |
iface.launch() | |