create embedding preview

This commit is contained in:
Vladimir Mandic
2023-01-22 14:27:47 -05:00
parent 9b03d17c91
commit 3680003edc
6 changed files with 30 additions and 16 deletions
+24 -15
View File
@@ -1,28 +1,31 @@
#!/bin/env python
import os
import io
import json
import base64
import logging
from pathlib import Path
from PIL import Image
from util import Map, log
from sdapi import getsync, postsync
from grid import grid
# masks = ['preview-face.jpg', 'preview-body.jpg']
mask = 'preview-body.jpg'
template = 'photo of "{name}", {suffix}, high detailed, skin texture, facing camera, 135mm, shot on dslr, 4k, modelshoot style'
img2img_options = {
img2img_options = Map({
'prompt': None,
'negative_prompt': '',
'init_images': [],
'sampler_name': 'DPM2 Karras',
'batch_size': 1,
'batch_size': 4,
'n_iter': 1,
'steps': 30,
'cfg_scale': 6,
'width': 512,
'height': 512,
'restore_faces': False
}
})
def encode(f):
img = Image.open(f)
@@ -32,28 +35,34 @@ def encode(f):
encoded = base64.b64encode(values).decode()
return encoded
def img2img(name: str, suffix: str):
def create_preview(name: str, suffix: str):
options = getsync('/sdapi/v1/options')
cmdflags = getsync('/sdapi/v1/cmd-flags')
print(cmdflags.embeddings_dir)
img2img_options['prompt'] = template.format(name = name, suffix = suffix)
log.info({ 'preview prompt': img2img_options['prompt'] })
log.info({ 'preview options': img2img_options })
img2img_options['init_images'].append(encode(mask))
log.debug({ 'preview options': img2img_options })
if len(img2img_options['init_images']) == 0:
for i in range(img2img_options.batch_size):
img2img_options['init_images'].append(encode(mask))
data = postsync('/sdapi/v1/img2img', img2img_options)
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': { 'model': options["sd_model_checkpoint"], 'seed': obj['info']['seed'] } })
image = Image.open(io.BytesIO(base64.b64decode(data['images'][0].split(",",1)[0])))
image.save('test.jpg')
fn = os.path.join(cmdflags.embeddings_dir, name + '.preview.png')
log.info({ 'preview': { 'name': fn, 'model': options.sd_model_checkpoint, 'seed': info.seed } })
images = []
for b64 in data['images']:
images.append(Image.open(io.BytesIO(base64.b64decode(b64.split(",",1)[0]))))
image = grid(images, None, square=True)
image.save(fn)
if __name__ == "__main__":
# log.setLevel(logging.DEBUG)
log.info({ 'preview': 'start' })
img2img('hanna', 'person, woman, girl, model')
cmdflags = getsync('/sdapi/v1/cmd-flags')
for f in Path(cmdflags.embeddings_dir).glob('*.pt'):
create_preview(f.stem, 'person')
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB