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() | |