commit
0e29f3e22e
|
|
@ -2,6 +2,7 @@
|
|||
*.pyc
|
||||
userfiles/antilist.csv
|
||||
userfiles/config.csv
|
||||
userfiles/config_anime.csv
|
||||
userfiles/*.json
|
||||
superprompter/model_files
|
||||
superprompter/model_files/*.*
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@ allpresets = [OBPresets.RANDOM_PRESET_OBP] + list(OBPresets.opb_presets.keys())
|
|||
|
||||
artists = ["all", "all (wild)", "none", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "cinema", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"]
|
||||
artifyartists = ["all", "all (wild)", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "cinema", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"]
|
||||
imagetypes = ["all", "all - force multiple", "none", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "dynamic templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "the tokinator"]
|
||||
imagetypes = ["all", "all - force multiple", "all - anime", "none", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime", "only other types", "only templates mode", "dynamic templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "the tokinator"]
|
||||
subjects =["all", "object", "animal", "humanoid", "landscape", "concept"]
|
||||
genders = ["all", "male", "female"]
|
||||
emojis = [False, True]
|
||||
|
||||
models = ["SD1.5", "SDXL", "Stable Cascade"]
|
||||
models = ["SD1.5", "SDXL", "Stable Cascade", "Anime Model"]
|
||||
prompt_enhancers = ["none", "superprompt-v1"]
|
||||
subjects =["------ all"]
|
||||
subjectsubtypesobject = ["all"]
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ Any other AI tool you are using? Midjourney? Dalle? No problem, I got it working
|
|||
- Create __infinite variations__ of a __chosen subject__. ==> [guide to override subject](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/override_subject_and_infinite_variations.md)
|
||||
- Fully __automated generation, classification and upscaling__. ==> [guide to one_button_run_and_upscale](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/one_button_run_and_upscale.md)
|
||||
- Add __LoRA's__, customize lists and personal artists choices. ==> [guide to custom files](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/custom_files.md)
|
||||
- Use __Anime Model__ mode to generate prompts specific for use with anime/pony models ==> [guide to Anime Mode](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/anime_model_mode.md)
|
||||
- __Compound__ multiple prompts together for unexpected results. ==> [guide to prompt compounder](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/prompt_compounder_and_regional_prompter_to_create_insane_images.md)
|
||||
- Use __wildcards__, or __combine with Dynamic Prompts__ extension ==> [guide to using wildcards and Dynamic Prompts](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/wildcards_and_dynamic_prompts_extension.md)
|
||||
- Has a set of __template prompts__ from various sources, __fully wildcarded__ and usable with Subject Override ==> [guide to prompt templates](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/templates.md)
|
||||
|
|
|
|||
|
|
@ -15,10 +15,12 @@ OBPresets = OneButtonPresets()
|
|||
# Set artistmode to none, to exclude artists
|
||||
def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all", imagetype = "all", onlyartists = False, antivalues = "", prefixprompt = "", suffixprompt ="",promptcompounderlevel ="1", seperator = "comma", givensubject="",smartsubject = True,giventypeofimage="", imagemodechance = 20, gender = "all", subtypeobject="all", subtypehumanoid="all", subtypeconcept="all", advancedprompting=True, hardturnoffemojis=False, seed=-1, overrideoutfit="", prompt_g_and_l = False, base_model = "SD1.5", OBP_preset = "", prompt_enhancer = "none", subtypeanimal="all", subtypelocation="all"):
|
||||
|
||||
remove_weights = False
|
||||
remove_weights = False
|
||||
less_verbose = False
|
||||
add_vomit = True
|
||||
add_quality = True
|
||||
anime_mode = False
|
||||
configfilesuffix = ""
|
||||
|
||||
superprompter = False
|
||||
prompt_enhancer = prompt_enhancer.lower()
|
||||
|
|
@ -126,13 +128,37 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
outfitmode = 0
|
||||
|
||||
animalashuman = False
|
||||
|
||||
|
||||
partlystylemode = False
|
||||
# load the config file
|
||||
config = load_config_csv()
|
||||
# cheat for presets
|
||||
if(OBP_preset=='Waifu''s' or OBP_preset=='Husbando''s'):
|
||||
basemodel = "Anime Model"
|
||||
# Base model options, used to change things in prompt generation. Might be able to extend to different forms like animatediff as well?
|
||||
base_model_options = ["SD1.5", "SDXL", "Stable Cascade", "Anime Model"]
|
||||
if base_model not in base_model_options:
|
||||
base_model = "SD1.5" # Just in case there is no option here.
|
||||
# "SD1.5" -- Standard, future: More original style prompting
|
||||
# "SDXL" -- Standard (for now), future: More natural language
|
||||
# "Stable Cascade" -- Remove weights
|
||||
if(base_model == "Stable Cascade"):
|
||||
remove_weights = True
|
||||
add_vomit = False
|
||||
add_quality = False
|
||||
if(base_model == "SD1.5"):
|
||||
less_verbose = True
|
||||
if(base_model == "Anime Model"):
|
||||
less_verbose = True
|
||||
advancedprompting = False
|
||||
anime_mode = True
|
||||
configfilesuffix = "anime"
|
||||
|
||||
|
||||
|
||||
|
||||
# load the config file
|
||||
|
||||
config = load_config_csv(configfilesuffix)
|
||||
|
||||
|
||||
# first build up a complete anti list. Those values are removing during list building
|
||||
# this uses the antivalues string AND the antilist.csv
|
||||
emptylist = []
|
||||
|
|
@ -145,19 +171,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
# clean up antivalue list:
|
||||
antilist = [s.strip().lower() for s in antilist]
|
||||
|
||||
# Base model options, used to change things in prompt generation. Might be able to extend to different forms like animatediff as well?
|
||||
base_model_options = ["SD1.5", "SDXL", "Stable Cascade"]
|
||||
if base_model not in base_model_options:
|
||||
base_model = "SD1.5" # Just in case there is no option here.
|
||||
# "SD1.5" -- Standard, future: More original style prompting
|
||||
# "SDXL" -- Standard (for now), future: More natural language
|
||||
# "Stable Cascade" -- Remove weights
|
||||
if(base_model == "Stable Cascade"):
|
||||
remove_weights = True
|
||||
add_vomit = False
|
||||
add_quality = False
|
||||
if(base_model == "SD1.5"):
|
||||
less_verbose = True
|
||||
|
||||
|
||||
# Some tricks for gender to make sure we can choose Him/Her/It etc on the right time.
|
||||
if(gender=="all"):
|
||||
|
|
@ -207,7 +221,13 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
hairvomitlist = csv_to_list("hairvomit",antilist,"./csvfiles/",0,"?",False,False)
|
||||
|
||||
humanoidlist = csv_to_list("humanoids",antilist)
|
||||
imagetypelist = csv_to_list(csvfilename="imagetypes",antilist=antilist, insanitylevel=insanitylevel, delimiter="?")
|
||||
if(anime_mode or imagetype=="all - anime"):
|
||||
if(imagetype == "all"):
|
||||
imagetype = "all - anime"
|
||||
imagetypelist = csv_to_list(csvfilename="imagetypes_anime",antilist=antilist, insanitylevel=insanitylevel, delimiter="?")
|
||||
else:
|
||||
imagetypelist = csv_to_list(csvfilename="imagetypes",antilist=antilist, insanitylevel=insanitylevel, delimiter="?")
|
||||
|
||||
joblist = csv_to_list(csvfilename="jobs",antilist=antilist,skipheader=True,gender=gender)
|
||||
lenslist = csv_to_list(csvfilename="lenses",antilist=antilist, insanitylevel=insanitylevel)
|
||||
lightinglist = csv_to_list(csvfilename="lighting",antilist=antilist, insanitylevel=insanitylevel)
|
||||
|
|
@ -220,6 +240,18 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
shotsizelist = csv_to_list(csvfilename="shotsizes",antilist=antilist, insanitylevel=insanitylevel)
|
||||
timeperiodlist = csv_to_list("timeperiods",antilist)
|
||||
vomitlist = csv_to_list(csvfilename="vomit",antilist=antilist, insanitylevel=insanitylevel)
|
||||
if(anime_mode):
|
||||
replacements = {
|
||||
"-allstylessuffix-": "-buildfacepart-",
|
||||
"-artistdescription-": "-buildfacepart-"
|
||||
}
|
||||
|
||||
for i, item in enumerate(vomitlist):
|
||||
for old, new in replacements.items():
|
||||
item = item.replace(old, new)
|
||||
vomitlist[i] = item
|
||||
|
||||
|
||||
foodlist = csv_to_list("foods", antilist)
|
||||
genderdescriptionlist = csv_to_list(csvfilename="genderdescription",antilist=antilist,skipheader=True,gender=gender)
|
||||
minilocationlist = csv_to_list("minilocations", antilist)
|
||||
|
|
@ -247,7 +279,6 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
coveringlist = csv_to_list("coverings", antilist)
|
||||
facepartlist = csv_to_list("faceparts", antilist)
|
||||
outfitvomitlist = csv_to_list(csvfilename="outfitvomit",antilist=antilist,delimiter="?")
|
||||
humanexpressionlist = csv_to_list(csvfilename="humanexpressions",antilist=antilist,delimiter="?")
|
||||
humanvomitlist = csv_to_list("humanvomit", antilist)
|
||||
eyecolorlist = csv_to_list("eyecolors", antilist)
|
||||
fashiondesignerlist = csv_to_list("fashiondesigners", antilist)
|
||||
|
|
@ -420,6 +451,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
buildfacelist = csv_to_list("buildface_less_verbose", antilist,"./csvfiles/special_lists/",0,"?")
|
||||
buildaccessorielist = csv_to_list("buildaccessorie_less_verbose", antilist,"./csvfiles/special_lists/",0,"?")
|
||||
humanactivitylist = csv_to_list("human_activities_less_verbose",antilist,"./csvfiles/",0,"?",False,False)
|
||||
humanexpressionlist = csv_to_list("humanexpressions_less_verbose",antilist,"./csvfiles/",0,"?",False,False)
|
||||
else:
|
||||
buildhairlist = csv_to_list("buildhair", antilist,"./csvfiles/special_lists/",0,"?")
|
||||
buildoutfitlist = csv_to_list("buildoutfit", antilist,"./csvfiles/special_lists/",0,"?")
|
||||
|
|
@ -428,6 +460,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
buildfacelist = csv_to_list("buildface", antilist,"./csvfiles/special_lists/",0,"?")
|
||||
buildaccessorielist = csv_to_list("buildaccessorie", antilist,"./csvfiles/special_lists/",0,"?")
|
||||
humanactivitylist = csv_to_list("human_activities",antilist,"./csvfiles/",0,"?",False,False)
|
||||
humanexpressionlist = csv_to_list("humanexpressions",antilist,"./csvfiles/",0,"?",False,False)
|
||||
|
||||
humanactivitylist = humanactivitylist + humanactivitycheatinglist
|
||||
|
||||
|
|
@ -1449,8 +1482,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
# 0 object, 1 animal, 2 animal as human, 3 ManWoman, 4 Job, 5 fictional, 6 non fictional, 7 humanoid, 8 landscape, 9 event
|
||||
if(mainchooser == "object"):
|
||||
subjectchooser = "object"
|
||||
if(mainchooser == "animal" and random.randint(0,5) == 5):
|
||||
if(mainchooser == "animal" and (random.randint(0,5) == 5 or anime_mode)):
|
||||
# sometimes interpret the animal as a human
|
||||
# for anime_mode this is always true
|
||||
animalashuman = True
|
||||
if(mainchooser == "humanoid"):
|
||||
#humanoidsubjectchooserlist = ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation", "firstname"]
|
||||
|
|
@ -1530,7 +1564,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
|
||||
# After we chose the subject, lets set all things ready for He/She/It etc
|
||||
|
||||
if(subjectchooser in ["manwomanmultiple"] and givensubject != "" and subtypehumanoid != "multiple humans"):
|
||||
if(not less_verbose and subjectchooser in ["manwomanmultiple"] and givensubject != "" and subtypehumanoid != "multiple humans"):
|
||||
heshelist = ["they"]
|
||||
hisherlist = ["their"]
|
||||
himherlist = ["them"]
|
||||
|
|
@ -1539,7 +1573,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
heshelist = ["one of them"]
|
||||
hisherlist = ["one of their"]
|
||||
himherlist = ["one of them"]
|
||||
elif(subjectchooser in ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation","firstname","manwomanmultiple"]):
|
||||
elif(not less_verbose and subjectchooser in ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation","firstname","manwomanmultiple"]):
|
||||
if(gender == "male"):
|
||||
heshelist = ["he"]
|
||||
hisherlist = ["his"]
|
||||
|
|
@ -1548,7 +1582,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
heshelist = ["she"]
|
||||
hisherlist = ["her"]
|
||||
himherlist = ["her"]
|
||||
if(subjectchooser in ["manwomanmultiple"] and givensubject == ""):
|
||||
if(not less_verbose and subjectchooser in ["manwomanmultiple"] and givensubject == ""):
|
||||
heshelist = ["they"]
|
||||
hisherlist = ["their"]
|
||||
himherlist = ["them"]
|
||||
|
|
@ -1927,10 +1961,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
if(giventypeofimage == "" and (imagetype == "none" or giventypeofimage=="none") ):
|
||||
generatetype = False
|
||||
if(giventypeofimage=="" and generatetype == True):
|
||||
if(imagetype != "all" and imagetype != "all - force multiple" and imagetype != "only other types"):
|
||||
if(imagetype != "all" and imagetype != "all - force multiple" and imagetype != "only other types" and imagetype != "all - anime"):
|
||||
|
||||
completeprompt += " " + imagetype + ", "
|
||||
elif(imagetype == "all - force multiple" or unique_dist(insanitylevel)):
|
||||
elif(imagetype == "all - force multiple" or unique_dist(insanitylevel) and not anime_mode):
|
||||
amountofimagetypes = random.randint(2,3)
|
||||
elif(imagetype == "only other types"):
|
||||
if(amountofimagetypes < 2 and random.randint(0,2) == 0):
|
||||
|
|
@ -1945,14 +1979,14 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
othertype = 1
|
||||
completeprompt += random.choice(othertypelist)
|
||||
|
||||
if(imagetype == "all" and chance_roll(insanitylevel, imagetypechance) and amountofimagetypes <= 1):
|
||||
if((imagetype == "all" or imagetype == "all - anime") and chance_roll(insanitylevel, imagetypechance) and amountofimagetypes <= 1):
|
||||
amountofimagetypes = 1
|
||||
|
||||
# on lower insanity levels, almost force this
|
||||
if(imagetype == "all" and insanitylevel <= 3 and amountofimagetypes <= 1 and random.randint(0,1)== 0):
|
||||
if((imagetype == "all" or imagetype == "all - anime") and insanitylevel <= 3 and amountofimagetypes <= 1 and random.randint(0,1)== 0):
|
||||
amountofimagetypes = 1
|
||||
|
||||
if(imagetype == "all" and insanitylevel <= 2 and amountofimagetypes <= 1):
|
||||
if((imagetype == "all" or imagetype == "all - anime") and insanitylevel <= 2 and amountofimagetypes <= 1):
|
||||
amountofimagetypes = 1
|
||||
|
||||
|
||||
|
|
@ -1963,24 +1997,15 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
# one in 6 images is a complex/other type
|
||||
if((chance_roll(insanitylevel, imagetypequalitychance) or originalartistchoice == "greg mode") and generateimagetypequality):
|
||||
completeprompt += "-imagetypequality- "
|
||||
# if("photography" in artiststyleselector
|
||||
# or "photography" in artists):
|
||||
# completeprompt += " photograph, "
|
||||
# elif("portrait" in artiststyleselector
|
||||
# or "portrait" in artists):
|
||||
# completeprompt += " portrait, "
|
||||
# if("landscape" in artiststyleselector
|
||||
# or "landscape" in artists):
|
||||
# completeprompt += " landscape, "
|
||||
|
||||
|
||||
|
||||
|
||||
if(imagetype == "all - anime" and not anime_mode):
|
||||
completeprompt += " anime"
|
||||
if(random.randint(0,4) < 4 and insanitylevel > 3 ):
|
||||
# woops, never to this as wildcards. We need to know as early as possible wether something is a photo. Lets put it back!
|
||||
completeprompt += " " + random.choice(imagetypelist) + ", "
|
||||
elif(random.randint(0,1) == 0 and insanitylevel <= 3):
|
||||
completeprompt += " " + random.choice(imagetypelist) + ", "
|
||||
else:
|
||||
elif(not anime_mode):
|
||||
if(amountofimagetypes < 2 and random.randint(0,1) == 0):
|
||||
partlystylemode = True
|
||||
print("Ohhh! Adding some secret sauce to this prompt")
|
||||
|
|
@ -2080,7 +2105,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
# Common to have 1 description, uncommon to have 2
|
||||
if(chance_roll(insanitylevel, subjectdescriptor1chance) and generatedescriptors == True):
|
||||
if(animalashuman or subjectchooser in ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation", "manwomanmultiple","firstname"]):
|
||||
completeprompt += "-humandescriptor- "
|
||||
if(anime_mode and random.randint(0,2)<2):
|
||||
completeprompt += "-basicbitchdescriptor- "
|
||||
else:
|
||||
completeprompt += "-humandescriptor- "
|
||||
elif(mainchooser == "landscape"):
|
||||
completeprompt += "-locationdescriptor- "
|
||||
elif(mainchooser == "animal"):
|
||||
|
|
@ -2090,7 +2118,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
|
||||
if(chance_roll(insanitylevel, subjectdescriptor2chance) and generatedescriptors == True):
|
||||
if(animalashuman or subjectchooser in ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation", "manwomanmultiple","firstname"]):
|
||||
completeprompt += "-humandescriptor- "
|
||||
if(anime_mode and random.randint(0,2)<2):
|
||||
completeprompt += "-basicbitchdescriptor- "
|
||||
else:
|
||||
completeprompt += "-humandescriptor- "
|
||||
elif(mainchooser == "landscape"):
|
||||
completeprompt += "-locationdescriptor- "
|
||||
elif(mainchooser == "animal"):
|
||||
|
|
@ -2172,6 +2203,16 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
if(mainchooser == "animal"):
|
||||
# first add a wildcard that can be used to create prompt strenght
|
||||
completeprompt += " -objectstrengthstart-"
|
||||
if(anime_mode
|
||||
and "1girl" not in givensubject
|
||||
and "1boy" not in givensubject):
|
||||
anthrolist = ["anthro", "anthrophomorphic", "furry"]
|
||||
|
||||
|
||||
if(gender=="male"):
|
||||
completeprompt += random.choice(anthrolist) + ", 1boy, solo, "
|
||||
else:
|
||||
completeprompt += random.choice(anthrolist) + ", 1girl, solo, "
|
||||
|
||||
# if we have a given subject, we should skip making an actual subject
|
||||
if(givensubject == "" or (subjectingivensubject and givensubject != "")):
|
||||
|
|
@ -2239,9 +2280,24 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
if(mainchooser == "humanoid"):
|
||||
# first add a wildcard that can be used to create prompt strenght
|
||||
completeprompt += " -objectstrengthstart-"
|
||||
|
||||
if(anime_mode
|
||||
and "1girl" not in givensubject
|
||||
and "1boy" not in givensubject):
|
||||
if(subjectchooser != "manwomanmultiple"):
|
||||
if(gender=="male"):
|
||||
completeprompt += "1boy, solo, "
|
||||
else:
|
||||
completeprompt += "1girl, solo, "
|
||||
else:
|
||||
if(gender=="male"):
|
||||
completeprompt += "multipleboys, "
|
||||
else:
|
||||
completeprompt += "multiplegirls, "
|
||||
|
||||
if(givensubject == "" or (subjectingivensubject and givensubject != "")):
|
||||
|
||||
if(subjectchooser == "human"):
|
||||
if(subjectchooser == "human" and not anime_mode):
|
||||
completeprompt += "-manwoman-"
|
||||
|
||||
if(subjectchooser == "manwomanrelation"):
|
||||
|
|
@ -2251,7 +2307,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
completeprompt += "-manwomanmultiple-"
|
||||
|
||||
if(subjectchooser == "job"):
|
||||
completeprompt += "-malefemale- "
|
||||
if(not anime_mode):
|
||||
completeprompt += "-malefemale- "
|
||||
completeprompt += "-job-"
|
||||
|
||||
if(subjectchooser == "fictional"):
|
||||
|
|
@ -2480,7 +2537,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
if(chance_roll(insanitylevel, subjectdescriptor1chance) and generatedescriptors == True):
|
||||
if(animalashuman or subjectchooser in ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation","manwomanmultiple", "firstname"]):
|
||||
if(less_verbose):
|
||||
completeprompt += ", -humandescriptor- "
|
||||
if(anime_mode and random.randint(0,2)<2):
|
||||
completeprompt += ", -basicbitchdescriptor- "
|
||||
else:
|
||||
completeprompt += ", -humandescriptor- "
|
||||
elif(random.randint(0,3) > 0):
|
||||
completeprompt += ", OR(;-heshe- is;normal) OR(;very;rare) -humandescriptor- "
|
||||
elif(subjectchooser == "manwomanmultiple"):
|
||||
|
|
@ -2572,7 +2632,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
if(random.randint(0,1)==0):
|
||||
completeprompt += ", " + random.choice(humanactivitylist)+ ", "
|
||||
else:
|
||||
completeprompt += "OR(,; as a;rare) -job-, "
|
||||
completeprompt += ", OR(,; as a;rare) -job-, "
|
||||
|
||||
|
||||
|
||||
|
|
@ -2774,7 +2834,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
|
||||
|
||||
# if not, we could go in random styles descriptor mode
|
||||
elif(templatemode == False and specialmode == False and uncommon_dist(10 - insanitylevel)):
|
||||
elif(not anime_mode and templatemode == False and specialmode == False and uncommon_dist(10 - insanitylevel)):
|
||||
for i in range(random.randint(1,max(7,insanitylevel + 2))):
|
||||
# print("adding random crap")
|
||||
completeprompt += ", -allstylessuffix-"
|
||||
|
|
@ -2987,7 +3047,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
completeprompt += chosenstylesuffix
|
||||
|
||||
templatesmodechance = 0
|
||||
if(uncommon_dist(insanitylevel)):
|
||||
if(uncommon_dist(insanitylevel) and not anime_mode): # not for anime models!
|
||||
templatesmodechance = 1
|
||||
|
||||
if(dynamictemplatesmode == True and templatesmodechance == 1):
|
||||
|
|
@ -3353,7 +3413,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
|
|||
completeprompt = "".join(completeprompt_list)
|
||||
|
||||
|
||||
|
||||
# print(completeprompt)
|
||||
|
||||
# lol, this needs a rewrite :D
|
||||
while (
|
||||
|
|
@ -4920,6 +4980,9 @@ def cleanup(completeprompt, advancedprompting, insanitylevel = 5):
|
|||
completeprompt = re.sub('-artistdescription-', '', completeprompt)
|
||||
completeprompt = re.sub('- art ', '', completeprompt)
|
||||
|
||||
completeprompt = re.sub('anime anime', 'anime', completeprompt)
|
||||
completeprompt = re.sub('anime, anime', 'anime', completeprompt)
|
||||
|
||||
completeprompt = re.sub('shot shot', 'shot', completeprompt)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -176,13 +176,17 @@ def artist_descriptions_csv_to_list(csvfilename):
|
|||
csvlist.append(row["Description"])
|
||||
return csvlist
|
||||
|
||||
def load_config_csv():
|
||||
def load_config_csv(suffix=""):
|
||||
csvlist = []
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
full_path_config_file = os.path.join(script_dir, "./userfiles/" )
|
||||
full_path_default_config_file = os.path.join(script_dir, "./csvfiles/config/" )
|
||||
config_file = full_path_config_file + 'config.csv'
|
||||
default_config_file = full_path_default_config_file + 'default_config.csv'
|
||||
if(suffix != ""):
|
||||
config_file = full_path_config_file + 'config_' + suffix + '.csv'
|
||||
default_config_file = full_path_default_config_file + 'default_config_' + suffix + '.csv'
|
||||
else:
|
||||
config_file = full_path_config_file + 'config.csv'
|
||||
default_config_file = full_path_default_config_file + 'default_config.csv'
|
||||
|
||||
if not os.path.exists(config_file):
|
||||
shutil.copy2(default_config_file, config_file)
|
||||
|
|
|
|||
|
|
@ -51,7 +51,9 @@ OR(Cat;Bunny;Fox) Ears?female
|
|||
-animal- Tail?female
|
||||
Tail?female
|
||||
Fangs?both
|
||||
Wings?both
|
||||
OR(Wings;Angel Wings;Bird Wings;Demon Wings;Dragon Wings;Fairy Wings;Bat Wings;Skeletal Wings)?both
|
||||
OR(Butterfly Wings;Dragonfly Wings;Ladybug Wings;Moth wings)?both
|
||||
OR(Crystal Wings;Energy Wings;Fiery Wings;Icy Wings;Liquid Wings;Plant Wings)?both
|
||||
Cybernetics?both
|
||||
Mechanical Body Parts?both
|
||||
Mechanical Arms?both
|
||||
|
|
@ -84,6 +86,8 @@ Bowtie?both
|
|||
Earrings?both
|
||||
Earring?both
|
||||
Necklace?both
|
||||
Chain Necklace?both
|
||||
Flower Necklace?both
|
||||
Bracelet?both
|
||||
Ring?both
|
||||
Rings?both
|
||||
|
|
@ -151,4 +155,18 @@ Trinkets?both
|
|||
Ruff?both
|
||||
Unicorn horn?both
|
||||
Nonblinding sunglasses?both
|
||||
Great-eyed?both
|
||||
Great-eyed?both
|
||||
Scouter?both
|
||||
OR(opera glasses;opaque glasses;aviator sunglasses;3D glasses;groucho glasses)?both
|
||||
Gem-studded?both
|
||||
Glitter?both
|
||||
Sequins?both
|
||||
Magatama?both
|
||||
Ribbon?both
|
||||
Pentacle?both
|
||||
Feather boa?both
|
||||
Necktie?both
|
||||
Fur collar?both
|
||||
Jetpack?both
|
||||
Automail?both
|
||||
Severed limb?both
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
#this file controls the generation process;
|
||||
#records starting with # are ignored;
|
||||
#----;
|
||||
# main subject generation options;
|
||||
# these can either be on or off;
|
||||
#----;
|
||||
# objects;
|
||||
subject_object;on
|
||||
subject_vehicle;on
|
||||
subject_food;on
|
||||
subject_space;on
|
||||
subject_building;on
|
||||
subject_flora;on
|
||||
subject_occult;on
|
||||
# animals;
|
||||
subject_animal;on
|
||||
subject_bird;on
|
||||
subject_cat;on
|
||||
subject_dog;on
|
||||
subject_insect;on
|
||||
subject_pokemon;on
|
||||
subject_marinelife;on
|
||||
# humanoids;
|
||||
subject_manwoman;on
|
||||
subject_manwomanrelation;on
|
||||
subject_manwomanmultiple;on
|
||||
subject_fictional;on
|
||||
subject_nonfictional;on
|
||||
subject_humanoid;on
|
||||
subject_job;on
|
||||
subject_firstnames;on
|
||||
# landscape;
|
||||
subject_location;on
|
||||
subject_location_fantasy;on
|
||||
subject_location_scifi;on
|
||||
subject_location_videogame;on
|
||||
subject_location_biome;on
|
||||
subject_location_city;on
|
||||
# concept;
|
||||
subject_event;on
|
||||
subject_concept;on
|
||||
subject_poemline;on
|
||||
subject_songline;on
|
||||
subject_cardname;on
|
||||
subject_episodetitle;on
|
||||
subject_conceptmixer;on
|
||||
#----;
|
||||
# other main lists, in order of appearance;
|
||||
# setting the random chance, for normal generation;
|
||||
# these can be, in order of most appearing to least appearing;
|
||||
# always, common, normal, uncommon, rare, legendary, unique, extraordinary, novel, never;
|
||||
custominputprefixrepeats;2
|
||||
custominputprefixchance;uncommon
|
||||
imagetypechance;legendary
|
||||
imagetypequalitychance;normal
|
||||
# some prefixes that happen rarely;
|
||||
minilocationadditionchance;unique
|
||||
artmovementprefixchance;unique
|
||||
minivomitprefix1chance;rare
|
||||
minivomitprefix2chance;unique
|
||||
# shot size generation;
|
||||
shotsizechance;common
|
||||
# subject specific stuff;
|
||||
subjectdescriptor1chance;common
|
||||
subjectdescriptor2chance;uncommon
|
||||
subjectbodytypechance;common
|
||||
subjectculturechance;uncommon
|
||||
subjectconceptsuffixchance;unique
|
||||
# subjectlandscape specific stuff;
|
||||
subjectlandscapeinsideshotchance;unique
|
||||
subjectlandscapeaddonlocationchance;normal
|
||||
subjectlandscapeaddonlocationdescriptorchance;rare
|
||||
subjectlandscapeaddonlocationculturechance;rare
|
||||
# all additions;
|
||||
objectadditionsrepeats;2
|
||||
objectadditionschance;uncommon
|
||||
humanadditionchance;uncommon
|
||||
overalladditionchance;extraordinary
|
||||
# humanoid other stuff;
|
||||
emojichance;legendary
|
||||
buildfacechance;uncommon
|
||||
humanexpressionchance;uncommon
|
||||
humanvomitchance;normal
|
||||
joboractivitychance;rare
|
||||
# things in the middle of the prompt;
|
||||
custominputmidrepeats;2
|
||||
custominputmidchance;uncommon
|
||||
minivomitmidchance;unique
|
||||
# humanoid main stuff;
|
||||
outfitchance;common
|
||||
posechance;common
|
||||
hairchance;common
|
||||
accessorychance;uncommon
|
||||
humanoidinsideshotchance;novel
|
||||
humanoidbackgroundchance;novel
|
||||
# minilocation stuff;
|
||||
landscapeminilocationchance;uncommon
|
||||
generalminilocationchance;rare
|
||||
# general stuff add the end of the prompt;
|
||||
timperiodchance;normal
|
||||
focuschance;normal
|
||||
directionchance;normal
|
||||
moodchance;common
|
||||
minivomitsuffixchance;unique
|
||||
artmovementchance;unique
|
||||
lightingchance;normal
|
||||
photoadditionchance;unique
|
||||
lenschance;unique
|
||||
colorschemechance;normal
|
||||
vomit1chance;rare
|
||||
vomit2chance;rare
|
||||
greatworkchance;never
|
||||
poemlinechance;never
|
||||
songlinechance;never
|
||||
quality1chance;normal
|
||||
quality2chance;normal
|
||||
# custom style list (lora and tis);
|
||||
customstyle1chance;uncommon
|
||||
customstyle2chance;uncommon
|
||||
# suffix custom list;
|
||||
custominputsuffixrepeats;2
|
||||
custominputsuffixchance;uncommon
|
||||
# artists stuff;
|
||||
artistsatbackchance;uncommon
|
||||
|
|
|
@ -20,6 +20,7 @@ Braids
|
|||
Buzz cut
|
||||
Buzz cut with a fade
|
||||
Caesar cut
|
||||
Chonmage
|
||||
Chignon
|
||||
Comb-over
|
||||
Cornrows
|
||||
|
|
@ -33,6 +34,8 @@ Drill
|
|||
Dutch braid
|
||||
Faux hawk
|
||||
Fauxhawk
|
||||
Flipped hair
|
||||
Folded ponytail
|
||||
Fishtail braid
|
||||
French braid
|
||||
French crop
|
||||
|
|
@ -57,6 +60,7 @@ Low bun
|
|||
Low fade
|
||||
Low ponytail
|
||||
Lushious
|
||||
Nihongami
|
||||
Man bun
|
||||
Mermaid waves
|
||||
Messy bun
|
||||
|
|
@ -83,6 +87,7 @@ Side swept
|
|||
Side-swept bangs
|
||||
Side-swept curls
|
||||
Sideswept bangs
|
||||
Side ponytail
|
||||
Slicked-back
|
||||
Space buns
|
||||
Spiky
|
||||
|
|
@ -95,6 +100,7 @@ Top knot
|
|||
Tousled
|
||||
Twist braid
|
||||
Twist out
|
||||
Twintails
|
||||
Undercut
|
||||
Voluminous
|
||||
Waterfall braid
|
||||
|
|
|
|||
|
|
|
@ -15,4 +15,7 @@ short braided hair
|
|||
lushious hair
|
||||
hair with pigtails
|
||||
short and slicked back hair
|
||||
thick and lush hair
|
||||
thick and lush hair
|
||||
pixie cut
|
||||
flipped hair
|
||||
nihongami hair
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
OR(;-heshe- is feeling;uncommon) OR(;very;normal) angry
|
||||
OR(;-heshe- is feeling;uncommon) OR(;very;normal) angry OR(;, anger vein;rare)
|
||||
OR(;-heshe- is feeling;uncommon) OR(;very;normal) annoyed
|
||||
OR(;-heshe- is feeling;uncommon) furious
|
||||
OR(;-heshe- is feeling;uncommon) OR(;very;normal) confused
|
||||
OR(;-heshe- is feeling;uncommon) OR(;very;normal) akward
|
||||
|
|
@ -26,6 +27,8 @@ OR(;-heshe- has a;uncommon) OR(;very;normal) smug smile
|
|||
OR(;-heshe- has a;uncommon) OR(;very;normal) light smile
|
||||
OR(;-heshe- has a;uncommon) OR(;very;normal) radiant smile
|
||||
OR(;-heshe- has a;uncommon) OR(;very;normal) wicked smile
|
||||
OR(;-heshe- has a;uncommon) OR(;very;normal) seductive smile
|
||||
OR(;-heshe- has a;uncommon) OR(;very;normal) sad smile
|
||||
OR(;-heshe- is;uncommon) biting -himher- lip
|
||||
OR(;-heshe- is looking;uncommon) OR(;very;normal) OR(neutral;hollow)
|
||||
OR(;-heshe- is feeling;uncommon) OR(;very;normal) shy OR(;, looking away;uncommon)
|
||||
|
|
@ -44,8 +47,16 @@ OR(;-heshe- is ;uncommon) expressing guilt
|
|||
OR(;-heshe- is ;uncommon) expressing joy
|
||||
OR(;-heshe- is;uncommon) laughing
|
||||
OR(;-heshe- is;uncommon) grinning
|
||||
doyagao
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) relaxed
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) insecure
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) shocked
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) worried
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) resentfull
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) resentfull
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) flustered
|
||||
OR(;-heshe- is ;uncommon) blushing
|
||||
OR(;-heshe- is ;uncommon) feeling OR(;very;normal) crazy
|
||||
OR(;-heshe- is ;uncommon) OR(;very;normal) drunk
|
||||
OR(;-heshe- is ;uncommon) grimacing
|
||||
OR(;-heshe- is ;uncommon) rolling eyes
|
||||
OR(;-heshe- is ;uncommon) staring
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
OR(;very;normal) angry OR(;, anger vein;rare)
|
||||
OR(;very;normal) annoyed
|
||||
furious
|
||||
OR(;very;normal) confused
|
||||
OR(;very;normal) akward
|
||||
crying
|
||||
OR(;very;normal) fearful
|
||||
OR(;very;normal) disappointed
|
||||
OR(;very;normal) happy
|
||||
very happy, glinting eyes
|
||||
OR(;very;normal) lonely
|
||||
OR(;very;normal) lustful
|
||||
OR(;very;normal) sad
|
||||
screaming
|
||||
smiling
|
||||
smirking
|
||||
chuckling
|
||||
yawning
|
||||
bewildered
|
||||
winking
|
||||
OR(;very;normal) smug
|
||||
laughing hysterically
|
||||
OR(;very;normal) smug smile
|
||||
OR(;very;normal) light smile
|
||||
OR(;very;normal) radiant smile
|
||||
OR(;very;normal) wicked smile
|
||||
OR(;very;normal) seductive smile
|
||||
OR(;very;normal) sad smile
|
||||
biting -himher- lip
|
||||
OR(;very;normal) shy OR(;, looking away;uncommon)
|
||||
looking away
|
||||
in awe
|
||||
OR(;very;normal) curious
|
||||
OR(;very;normal) bored
|
||||
OR(;very;normal) embarrased
|
||||
OR(;very;normal) in love
|
||||
feeling OR(;very;normal) melancholy
|
||||
feeling OR(;very;normal) proud
|
||||
feeling OR(;very;normal) envious
|
||||
feeling OR(;very;normal) grateful
|
||||
expressing shame
|
||||
expressing guilt
|
||||
expressing joy
|
||||
laughing
|
||||
grinning
|
||||
doyagao
|
||||
feeling OR(;very;normal) relaxed
|
||||
feeling OR(;very;normal) insecure
|
||||
feeling OR(;very;normal) shocked
|
||||
feeling OR(;very;normal) worried
|
||||
feeling OR(;very;normal) resentfull
|
||||
feeling OR(;very;normal) flustered
|
||||
blushing
|
||||
crazy
|
||||
OR(;very;normal) drunk
|
||||
grimace
|
||||
rolling eyes
|
||||
staring
|
||||
|
|
|
@ -16,4 +16,6 @@ matte skin
|
|||
perfect skin
|
||||
skin pores
|
||||
freckles
|
||||
photo-realistic face
|
||||
photo-realistic face
|
||||
-buildfacepart-
|
||||
-buildfacepart-, -buildfacepart-
|
||||
|
Can't render this file because it has a wrong number of fields in line 21.
|
|
|
@ -0,0 +1,22 @@
|
|||
3D
|
||||
anime
|
||||
2D anime
|
||||
OR(cartoon;illustration;detailed illustration;drawing;sketch)
|
||||
anime screenshot
|
||||
OR(artbook;calendar;card)
|
||||
OR(comic;manga)
|
||||
OR(cover;album cover;character single;cover page;doujin cover;dvd cover;fake cover;video game cover;magazine cover;manga cover)
|
||||
OR(fake screenshot;fake phone screenshot)
|
||||
OR(game cg;game screenshot)
|
||||
highres
|
||||
absurdres
|
||||
OR(icon;logo)
|
||||
lineart
|
||||
pixel art
|
||||
poster
|
||||
wallpaper
|
||||
wallpaper forced
|
||||
widescreen
|
||||
official wallpaper
|
||||
OR(concept art;digital art)
|
||||
OR(fantasy;sci-fi) art
|
||||
|
|
|
@ -17,4 +17,9 @@ telephoto lens
|
|||
800mm lens
|
||||
macro lens
|
||||
L USM
|
||||
pinhole lens
|
||||
pinhole lens
|
||||
atmospheric perspective
|
||||
panorama
|
||||
perspective
|
||||
vanishing point
|
||||
pov
|
||||
|
|
|
@ -4,4 +4,5 @@ Depth of field 270mm
|
|||
50mm
|
||||
Selective focus
|
||||
800mm lens
|
||||
L USM
|
||||
L USM
|
||||
atmospheric perspective
|
||||
|
|
|
@ -10,4 +10,6 @@ F/8
|
|||
F/14
|
||||
Selective focus
|
||||
800mm lens
|
||||
L USM
|
||||
L USM
|
||||
atmospheric perspective
|
||||
pov
|
||||
|
|
|
@ -4,6 +4,7 @@ looking towards camera
|
|||
looking away from camera
|
||||
looking to the side
|
||||
Looking over the shoulder
|
||||
Looking away
|
||||
Sitting
|
||||
Standing
|
||||
Jumping
|
||||
|
|
@ -44,6 +45,9 @@ Action pose
|
|||
Sexy pose
|
||||
giving you the finger
|
||||
Pointing at you
|
||||
Pointing at self
|
||||
Pointing down
|
||||
Pointing up
|
||||
Crouching down
|
||||
Vivacious pose
|
||||
Bending forward
|
||||
|
|
@ -78,4 +82,30 @@ Walking towards camera
|
|||
Walking away from camera
|
||||
peace sign pose
|
||||
-humanexpression- pose
|
||||
Layback pose
|
||||
Layback pose
|
||||
Raised eyebrow
|
||||
Rolling eyes
|
||||
Kubrick stare
|
||||
Finger smile
|
||||
Beckoning
|
||||
Stroking own chin
|
||||
Flirting at the camera
|
||||
Shading -hisher- eyes
|
||||
Thumbs up pose
|
||||
Thumbs down pose
|
||||
Raising fist pose
|
||||
Curtsey pose
|
||||
Victory pose
|
||||
Making V-sign
|
||||
Butterfly sitting
|
||||
Hands resting on head
|
||||
Twisted torso pose
|
||||
T-posing
|
||||
Outstretched hand
|
||||
Knee up pose
|
||||
Knees apart pose
|
||||
-animal- style pose
|
||||
archer pose
|
||||
Villain pose
|
||||
Stretched legs pose
|
||||
-rpgclass- pose
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
OR(;-heshe- has a;rare) OR(;-descriptor-;normal) OR(;-culture-;uncommon) OR(;-color-;uncommon) -accessory- OR(; , -accessory-; , -descriptor- -accessory-;rare) OR(; and -accessory-;unique)
|
||||
OR(;-heshe- has a;rare) OR(;-descriptor-;normal) OR(;-culture-;uncommon) OR(;-color-;uncommon) -accessory- OR(; , -accessory-; , -descriptor- -accessory-;rare) OR(; and -accessory-;unique)
|
||||
OR(;-heshe- has a;rare) OR(;-descriptor-;normal) -accessory-
|
||||
OR(;-heshe- has a;rare) OR(;-basicbitchdescriptor-;normal) -accessory-
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
OR(;-descriptor-;normal) OR(;-culture-;uncommon) OR(;-color-;uncommon) -accessory- OR(; , -accessory-; , -descriptor- -accessory-;rare) OR(; and -accessory-;unique)
|
||||
OR(;-heshe- has a;rare) OR(;-descriptor-;normal) -accessory- OR(; , -accessory-; , -descriptor- -accessory-;rare) OR(; and -accessory-;unique)
|
||||
OR(;-heshe- has a;rare) OR(;-basicbitchdescriptor-;normal) -accessory-
|
||||
|
|
|
@ -2,4 +2,6 @@ combination of OR(-nonfictional-;-fictional-;legendary) OR(;, OR(-nonfictional-;
|
|||
-facepart- of OR(-nonfictional-;-fictional-;legendary), -facepart- of OR(-nonfictional-;-fictional-;legendary)
|
||||
OR(;very;legendary) -buildfacepart- OR(; OR(,;and) -buildfacepart-;normal) OR(; and -buildfacepart-;legendary)
|
||||
OR(;very;legendary) -humandescriptor- -facepart- OR(; and -humandescriptor- -facepart-;uncommon)
|
||||
-facepart- of OR(-conceptsuffix-;-basicbitchdescriptor-;uncommon) OR(; and -facepart- of OR(-conceptsuffix-;-basicbitchdescriptor-;uncommon);uncommon)
|
||||
-facepart- of OR(-conceptsuffix-;-basicbitchdescriptor-;uncommon) OR(; and -facepart- of OR(-conceptsuffix-;-basicbitchdescriptor-;uncommon);uncommon)
|
||||
-buildfacepart-, -buildfacepart-
|
||||
-buildfacepart-
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
OR(-haircolor-;-hairdescriptor-;-culture-;uncommon) hair OR(styled as -hairstyle-;, ;rare)
|
||||
OR(-haircolor-; -hairstyle-) OR(hairstyle;hair)
|
||||
OR(-haircolor-;-hairdescriptor-;-culture-;uncommon) hair
|
||||
OR(-haircolor-; -hairstyle-) OR(hairstyle;hair)
|
||||
-hairstyle-
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
, OR(;-outfitdescriptor-;normal) OR(;-outfitdescriptor-;uncommon) OR(;-color-;uncommon) -outfit- OR(;from the OR(-age-;the -agecalculator-);rare)
|
||||
, OR(;-outfitdescriptor-;normal) OR(;-outfitdescriptor-;uncommon) OR(;-color-;uncommon) -outfit- OR(; and OR(;-outfitdescriptor-;uncommon) OR(;-color-;uncommon) -outfit-;rare)
|
||||
, OR(-job-;-rpgclass-;-season-;-animal--style) OR(-minioutfit-;-outfit-;rare)
|
||||
, OR(;-outfitdescriptor-;uncommon) OR(-minioutfit-;-outfit-;rare) OR(;OR(designed;made;inspired;forged) by OR(-brand-;-fashiondesigner-);legendary)
|
||||
, OR(;-outfitdescriptor-;uncommon) OR(-minioutfit-;-outfit-;rare)
|
||||
, OR(-material-;-color-;-element-;uncommon) -overrideoutfit-
|
||||
, OR(;-outfitdescriptor-;-material-;-color-;uncommon) OR(-outfit-;-minioutfit-;rare), OR(-pattern-;-outfitprinttotal-;-material-;rare) -print-,
|
||||
, OR(;-outfitdescriptor-;normal) -outfit-, OR(-outfitdescriptor-;-color-), OR(-pattern-;-outfitprinttotal-;-material-;uncommon) -print- OR(;-material-;rare)
|
||||
, -culture- -outfit-, OR(;OR(-outfitdescriptor-;-color-),;normal)
|
||||
, OR(;-outfitdescriptor-;normal) OR(;-color-;uncommon) OR(;-culture-;uncommon) OR(;-material-;rare) -outfit- OR(that was OR(designed;made;inspired;forged) by -brand-;rare)
|
||||
, OR(;-outfitdescriptor-;normal) OR(;-color-;uncommon) OR(;-culture-;uncommon) OR(;-material-;rare) -outfit-
|
||||
, OR(;-outfitdescriptor-;normal) OR(-minioutfit-;-outfit-;uncommon), -outfitvomit-
|
||||
, OR(;-outfitdescriptor-;normal) -outfit-, OR(;OR(is tailored by -fashiondesigner- OR(; and -fashiondesigner-;uncommon);-charactertype- OR(;and -charactertype-;rare));rare)
|
||||
, OR(;-outfitdescriptor-;normal) -artmovement- fashion style -outfit-
|
||||
|
|
|
|||
|
|
|
@ -54,6 +54,8 @@ dripping -color- and -color-
|
|||
dripping with -color-
|
||||
Dufaycolor Photograph
|
||||
dynamic composition
|
||||
drop shadow
|
||||
emphasis lines
|
||||
Ebru
|
||||
Elegant
|
||||
Embossing
|
||||
|
|
@ -65,6 +67,7 @@ expressive brush strokes
|
|||
fae folkore
|
||||
fairy tale
|
||||
Film grain
|
||||
foreshortening
|
||||
Floral motifs
|
||||
Folded -material-
|
||||
full of -color-
|
||||
|
|
|
|||
|
|
|
@ -112,10 +112,10 @@ if __name__ == "__main__":
|
|||
generateprompts(10,5
|
||||
,"all" # subject
|
||||
,"all" # artists
|
||||
,"all" # image type "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "dynamic templates mode", "artify mode"
|
||||
,"all" # image type "only other types", "only templates mode", "all - anime", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "dynamic templates mode", "artify mode"
|
||||
, False # only artists
|
||||
,"",""
|
||||
,"" #prefix prompt
|
||||
,"" #prefix prompt -- masterpiece, best quality, very aesthetic, absurdres
|
||||
,"" #suffix prompt
|
||||
,"",1,""
|
||||
,"" # subject override
|
||||
|
|
@ -130,7 +130,7 @@ if __name__ == "__main__":
|
|||
, -1 # seed
|
||||
, "" #outfit override
|
||||
, False #prompt_g_and_l
|
||||
, "SD1.5" #base model
|
||||
, "Stable Cascade" #base model
|
||||
, "" #preset "All (random)..."
|
||||
, "" # superprompter
|
||||
)
|
||||
|
|
@ -18,14 +18,14 @@ from csv_reader import *
|
|||
from one_button_presets import OneButtonPresets
|
||||
OBPresets = OneButtonPresets()
|
||||
|
||||
basemodelslist = ["SD1.5", "SDXL", "Stable Cascade"]
|
||||
basemodelslist = ["SD1.5", "SDXL", "Stable Cascade", "Anime Model"]
|
||||
#subjects = ["all","object","animal","humanoid", "landscape", "concept"]
|
||||
subjects =["------ all"]
|
||||
subjectsubtypesobject = ["all"]
|
||||
subjectsubtypeshumanoid = ["all"]
|
||||
subjectsubtypesconcept = ["all"]
|
||||
artists = ["all", "all (wild)", "none", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "cinema", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"]
|
||||
imagetypes = ["all", "all - force multiple", "none", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "dynamic templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "the tokinator"]
|
||||
imagetypes = ["all", "all - force multiple", "all - anime", "none", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime", "only other types", "only templates mode", "dynamic templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "the tokinator"]
|
||||
promptmode = ["at the back", "in the front"]
|
||||
promptcompounder = ["1", "2", "3", "4", "5"]
|
||||
ANDtogglemode = ["none", "automatic", "prefix AND prompt + suffix", "prefix + prefix + prompt + suffix"]
|
||||
|
|
@ -563,48 +563,52 @@ class Script(scripts.Script):
|
|||
1. all --> normally picks a image type as random. Can choose a 'other' more unique type.
|
||||
|
||||
2. all - force multiple --> idea by redditor WestWordHoeDown, it forces to choose between 2 and 3 image types
|
||||
|
||||
3. all - anime --> Chooses from anime styles, for support of Anime Model mode.
|
||||
|
||||
4. none --> Turns off image type generation
|
||||
|
||||
3. photograph
|
||||
5. photograph
|
||||
|
||||
4. octane render
|
||||
6. octane render
|
||||
|
||||
5. digital art
|
||||
7. digital art
|
||||
|
||||
6. concept art
|
||||
8. concept art
|
||||
|
||||
7. painting
|
||||
9. painting
|
||||
|
||||
6. portrait
|
||||
10. portrait
|
||||
|
||||
7. anime key visual
|
||||
11. anime
|
||||
|
||||
8. only other types --> Will pick only from the more unique types, such as stained glass window or a funko pop
|
||||
12. only other types --> Will pick only from the more unique types, such as stained glass window or a funko pop
|
||||
|
||||
All modes below are considered a special image type mode.
|
||||
|
||||
9. only templates mode --> Will only choose from a set of wildcarded prompt templates. Templates have been gathered from various sources, such as CivitAI, prompthero, promptbook, etc.
|
||||
13. only templates mode --> Will only choose from a set of wildcarded prompt templates. Templates have been gathered from various sources, such as CivitAI, prompthero, promptbook, etc.
|
||||
|
||||
only templates mode is perfect for beginners, who want to see some good results fast.
|
||||
|
||||
10. dynamic templates mode --> A method that uses prompts in a more natural language.
|
||||
14. dynamic templates mode --> A method that uses prompts in a more natural language.
|
||||
|
||||
11. art blaster mode --> Special generation mode that focusses on art movements, stylings and artists.
|
||||
15. art blaster mode --> Special generation mode that focusses on art movements, stylings and artists.
|
||||
|
||||
12. quality vomit mode --> Special generation mode that focusses on qualifiers and stylings.
|
||||
16. quality vomit mode --> Special generation mode that focusses on qualifiers and stylings.
|
||||
|
||||
13. color cannon mode --> Special generation mode that focusses on color scheme's and moods.
|
||||
17. color cannon mode --> Special generation mode that focusses on color scheme's and moods.
|
||||
|
||||
14. unique art mode --> Special generation mode that focusses on other image types, art movements, stylings and lighting.
|
||||
18. unique art mode --> Special generation mode that focusses on other image types, art movements, stylings and lighting.
|
||||
|
||||
15. massive madness mode --> Special generation mode, creates prompt soup. Almost pure randomness.
|
||||
19. massive madness mode --> Special generation mode, creates prompt soup. Almost pure randomness.
|
||||
|
||||
16. photo fantasy mode --> Special generation mode that focusses on photographs, cameras, lenses and lighting.
|
||||
20. photo fantasy mode --> Special generation mode that focusses on photographs, cameras, lenses and lighting.
|
||||
|
||||
17. subject only mode --> Will only generate a subject, with no additional frills.
|
||||
21. subject only mode --> Will only generate a subject, with no additional frills.
|
||||
|
||||
18. fixed styles mode --> Generate a subject on top of a fixed style.
|
||||
22. fixed styles mode --> Generate a subject on top of a fixed style.
|
||||
|
||||
19. the tokinator --> Complete random word gibberish mode, use at own risk
|
||||
23. the tokinator --> Complete random word gibberish mode, use at own risk
|
||||
|
||||
### 🎲🖼️ One in X chance to use special image type mode
|
||||
|
||||
|
|
@ -719,6 +723,8 @@ class Script(scripts.Script):
|
|||
|
||||
Stable Cascade --> More natural language and no prompt weights
|
||||
|
||||
Anime Model --> Focussed on characters and tags, adds 1girl/1boy automatically.
|
||||
|
||||
⭐ Flufferizer
|
||||
|
||||
A simple and quick implementiation of Fooocus prompt magic
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
transformers
|
||||
einops
|
||||
accelerate
|
||||
sentencepiece
|
||||
sentencepiece
|
||||
safetensors
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
# Anime Model Mode
|
||||
|
||||
Finally, One Button Prompt officially has a mode that supports Anime models. One Button Prompt has been focussed on SD based prompting first, and it kept getting worse in Anime Models. Now, it can do both! With a simple switch, set it up for anime/pony style models.
|
||||
|
||||
In A1111, it can be found under Advanced > Base model. Here you can select __Anime Model__
|
||||
|
||||
It is adviced to turn __flufferize__ and __Prompt enhancer__ off for use with anime models.
|
||||
|
||||

|
||||
|
||||
## What does it do
|
||||
|
||||
It supports anime model prompting! The main focus is on generating characters and has some build-in logic to support anime type models. When turned on, it does several things:
|
||||
|
||||
- It adds way more character based focussed words in the prompt. Creating varied and interesting characters.
|
||||
- When generating a character, it will automatically add 1girl/1boy to the prompt.
|
||||
- When generating a animal, it will automatically add anthro 1girl/1boy to the prompt.
|
||||
- Will default __imagetype__ to 'all - anime' when using 'all'. 'all - anime' was added to support this mode.
|
||||
- Prompt is more tag based styled
|
||||
- Turns off several features that are used in other prompt generation modes.
|
||||
|
||||
## What it doesn't do
|
||||
|
||||
It doesn't add any very explicit or NSFW tags. If you want to add these, take a look at [this page](https://github.com/AIrjen/OneButtonPrompt/blob/anime_model_mode/user_guides/custom_files.md) on how to add your own files or words into One Button Prompt.
|
||||
|
||||
You could also add your specific tags in the prefix or suffix prompt.
|
||||
|
||||
## How to use it
|
||||
|
||||
For use of this, you can create a new preset/settings as followed.
|
||||

|
||||
|
||||
Make sure the following is set:
|
||||
|
||||
- **Insanitylevel** = between __4-6__ is recommended.
|
||||
- **Artists** = __'none'__. Artists are all SD based, and will interfere and create bad results. However, some models might work with it. You can try setting it to 'anime' or 'cartoon' as well.
|
||||
- **Imagetype** = __'all - anime'__. Other options might be 'none' or 'subject only mode'.
|
||||
- **Subjecttype** = __'human - all'__, but feel free to select 'human - fictional' or any other to your preference. You can also go for animals, at your own risk ;) You know who you are.
|
||||
- **Gender**, your choice! __'All'__ will do both males and females.
|
||||
- **Prompt prefix**: The prefix stated on the model page. It in this example I am using AnimagineXL, so the prefix is = __'masterpiece, best quality, very aesthetic, absurdres'__. For Pony based models, it should be something like __'score_9, score_8_up, score_7_up'__. For 1.5 models it is usually something like __'(((masterpiece))) (((high quality)))'__
|
||||
- **Prompt suffix**: Personal preference tags.
|
||||
|
||||
You can play around more with the prompt prefix and suffix if needed.
|
||||
|
||||
Other things you can do, is add a overwrite subject and/or outfit yourself. It is possibly to add a subject + Lora in the overwrite subject field.
|
||||
An example would be:
|
||||
Overwrite subject: Princess Peach
|
||||
Overwrite outfit: Jacket
|
||||
|
||||
Use your imagination!
|
||||
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/65d567be-d3bb-401d-b258-6311ed097a39.png" alt="Princess Peach in a jacket" width="40%" height="40%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/339bc932-1be8-44ec-ab61-9ec8ee445296.png" alt="Princess Peach in a jacket" width="40%" height="40%">
|
||||
|
||||
> score_9, score_8_up, score_7_up, side-profile of a heavyset 1girl, solo, princess peach, cute, Warlike jacket, Two-Tone hair, at Sunrise, One Color, geometric patterns, attractive
|
||||
|
||||
# Try it without installing the extension?
|
||||
|
||||
I have a website where you can do prompt generation as well. Try it out [here](https://airjen.pythonanywhere.com/).
|
||||
|
||||
# Examples and prompts (various models)
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/a0880fce-a448-417f-9a8f-be9f56213038.png" alt="Orc!" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/2839476f-5a96-4fb3-85d4-6cfefff05950.png" alt="More princess peach on a 1.5 model" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/7d71f1a3-9ffd-4828-ba41-bec8adc8ff4a.png" alt="Cutie" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/0005e54d-e0c5-404a-b8cb-3b92bf5a7ea3.png" alt="Not so cutie" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/ab7bb864-38ae-478b-b540-5386bd8f569c.png" alt="Semi realism" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/b679c5f6-e99e-4226-b9fd-210121b90044.png" alt="Those hands!" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/878d013e-b125-46a2-b1f0-b02fa431c270.png" alt="Pixel art style" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/701a3ac6-152e-4fa5-a632-1c2f11505b22.png" alt="Yes it can also do husbandos" width="25%" height="25%">
|
||||
<img src="https://github.com/AIrjen/OneButtonPrompt/assets/130234949/cfc86f6e-b17b-4001-a90d-78e79be44f55.png" alt="Varied example" width="25%" height="25%">
|
||||
|
||||
> masterpiece, best quality, very aesthetic, absurdres, upper body shot of a 1girl, solo, Female Orc, looking up, Taper, Thunderstorm, Oversaturated
|
||||
|
||||
> ((best quality)) , ((masterpiece)) , (detailed) , buff 1girl, solo, princess peach, white dress, Plaid trimmings, perched on a cloud, Honey hair, Fine art, Hopeless, hyper detailed, Rembrandt lighting, lots of details, moody
|
||||
|
||||
> masterpiece, best quality, very aesthetic, absurdres, shot from side of a flawless buxom 1girl, solo, Major, Ginger hair, Flustered, One Color, womanly, magnificent
|
||||
|
||||
> masterpiece, best quality, very aesthetic, absurdres, wide shot of a buff 1girl, solo, Minion dark yellow skin, Fur and Leather, Nihongami, Indirect light, Agfacolor, absurdres, 4K, monochromatic
|
||||
|
||||
> masterpiece, best quality, very aesthetic, absurdres, (1girl, solo, Lily James:1.2) , good-looking, Frolicking in a Lalbagh Botanical Garden, spring armor, Bouffant, Sunny, back-light, Low Contrast, realistic and detailed, intricate details
|
||||
|
||||
> score_9, score_8_up, score_7_up, pretty Scottish 1girl, solo, Spider-Gwen, costume, Kung fu pose, Braided half-up half-down, flower in hair, Sharp and in focus, Masterpiece, Lonely, Saturated
|
||||
|
||||
> masterpiece, best quality, very aesthetic, absurdres, dramatic pixel art, shot from side of a wearing Fleece pullover, overweight (1girl, solo:1.3) , Tiny, feeling relaxed, beautiful mouth, Defined lips, Two-Tone hair, Magic Realism, Primitivism, soft lighting, Fujifilm Superia, kawaii
|
||||
|
||||
> masterpiece, best quality, very aesthetic, absurdres, POV shot of a 1boy, solo, Temol, Surfer clothing, Looking over the shoulder, Dark hair, Movie still, Depressing, spotlit, Cinestill
|
||||
|
||||
> score_9, score_8_up, score_7_up, over the shoulder shot of a Nonchalant (1girl, solo, Museum curator:1.2) , Dreadlocks, curly hair, mountains, ultrafine detailed, Happy, elegant, Moonlit, Pastel Colors, Swirling Sisal
|
||||
|
||||
|
||||
|
|
@ -26,9 +26,24 @@ It needs at least the following pieces installed:
|
|||
- einops
|
||||
- accelerate
|
||||
- sentencepiece
|
||||
- safetensors
|
||||
|
||||
It will download the model on first use, it will download into: __\OneButtonPrompt\superprompter\model_files__
|
||||
|
||||
### Error on pickled file?
|
||||
|
||||
**If you get a __Error verifying pickled file__ issue**: Try and see if it downloaded the model.bin or model.safetensors file in the __\OneButtonPrompt\superprompter\model_files__ directory.
|
||||
|
||||
If you have the model.bin file, then remove the model_files directory.
|
||||
|
||||
Execute 'pip install safetensors'
|
||||
|
||||
Try again.
|
||||
|
||||
If that doesn't work, download the safetensors model directly from [this location on hugginface](https://huggingface.co/roborovski/superprompt-v1/tree/main), and place it in the model_files directly instead of the model.bin file.
|
||||
|
||||
|
||||
|
||||
## How to turn it on in A1111/SD.Next
|
||||
Under Advanced, go to the setting __Prompt enhancer__, set this to __superprompt-v1__:
|
||||

|
||||
|
|
|
|||
Loading…
Reference in New Issue