mirror of
https://github.com/vladmandic/automatic
synced 2026-08-27 07:31:01 +02:00
update
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/bin/env python
|
||||
import io
|
||||
import json
|
||||
import base64
|
||||
import logging
|
||||
from PIL import Image
|
||||
|
||||
from util import Map, log
|
||||
from sdapi import postsync
|
||||
|
||||
template = 'photo of "{name}", {suffix}, high detailed, skin texture, facing camera, 135mm, shot on dslr, 4k, modelshoot style'
|
||||
opt = {
|
||||
'prompt': None,
|
||||
'negative_prompt': '',
|
||||
'init_images': [],
|
||||
'sampler_name': 'DPM2 Karras',
|
||||
'batch_size': 1,
|
||||
'n_iter': 1,
|
||||
'steps': 30,
|
||||
'cfg_scale': 6,
|
||||
'width': 512,
|
||||
'height': 512,
|
||||
'restore_faces': False
|
||||
}
|
||||
|
||||
def encode(f):
|
||||
img = Image.open(f)
|
||||
with io.BytesIO() as stream:
|
||||
img.save(stream, 'JPEG')
|
||||
values = stream.getvalue()
|
||||
encoded = base64.b64encode(values).decode()
|
||||
return encoded
|
||||
|
||||
def img2img(name: str, suffix: str):
|
||||
opt['prompt'] = template.format(name = name, suffix = suffix)
|
||||
log.info({ 'preview prompt': opt['prompt'] })
|
||||
log.info({ 'preview options': opt })
|
||||
opt['init_images'].append(encode('sillouethe.jpg'))
|
||||
data = postsync('/sdapi/v1/img2img', opt)
|
||||
if 'error' in data:
|
||||
log.error({ 'preview': data['error'], 'reason': data['reason'] })
|
||||
return
|
||||
info = Map(json.loads(data['info']))
|
||||
log.debug({ 'preview info': info })
|
||||
if not 'images' in data:
|
||||
log.error({ 'preview': 'no images' })
|
||||
return
|
||||
obj = data.copy()
|
||||
del obj['images']
|
||||
log.info({ 'preview response': obj })
|
||||
for b64 in data['images']:
|
||||
image = Image.open(io.BytesIO(base64.b64decode(b64.split(",",1)[0])))
|
||||
image.save('test.jpg')
|
||||
|
||||
if __name__ == "__main__":
|
||||
# log.setLevel(logging.DEBUG)
|
||||
log.info({ 'preview': 'start' })
|
||||
img2img('hanna', 'person, woman, girl, model')
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
+1
-1
@@ -415,7 +415,7 @@ async def main():
|
||||
parser.add_argument("--init", type = str, default = "person", required = False, help = "initialization class, default: %(default)s")
|
||||
parser.add_argument("--dst", type = str, default = "/tmp", required = False, help = "destination image folder for processed images, default: %(default)s")
|
||||
parser.add_argument("--steps", type = int, default = -1, required = False, help = "training steps, default: %(default)s")
|
||||
parser.add_argument("--maxsteps", type = int, default = 2500, required = False, help = "max training steps used when dynamic gradient is active, default: %(default)s")
|
||||
parser.add_argument("--maxsteps", type = int, default = 5000, required = False, help = "max training steps used when dynamic gradient is active, default: %(default)s")
|
||||
parser.add_argument("--vectors", type = int, default = -1, required = False, help = "number of vectors per token, default: dynamic based on number of input images")
|
||||
parser.add_argument("--batch", type = int, default = 1, required = False, help = "batch size, default: %(default)s")
|
||||
parser.add_argument("--rate", type = str, default = "", required = False, help = "learn rate, default: dynamic")
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@
|
||||
"training_image_repeats_per_epoch": 1,
|
||||
"training_write_csv_every": 1.0,
|
||||
"training_xattention_optimizations": false,
|
||||
"training_enable_tensorboard": true,
|
||||
"training_enable_tensorboard": false,
|
||||
"training_tensorboard_save_images": false,
|
||||
"training_tensorboard_flush_every": 120,
|
||||
"sd_model_checkpoint": "sd-v15-runwayml.ckpt [cc6cb27103]",
|
||||
|
||||
Reference in New Issue
Block a user