Compare commits
6 Commits
6ad11fc6c0
...
de71049079
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de71049079 | ||
|
|
10849ed21a | ||
|
|
3386ec9e84 | ||
|
|
419f732cf6 | ||
|
|
256a3b6ac8 | ||
|
|
d522b2a267 |
12
backlog.md
12
backlog.md
@@ -63,9 +63,12 @@ Scenery:
|
|||||||
- The UI wants to car.html:2817 GET file:///mnt/zim/tour-comfy/output/_turntable/up_34e48ffb/turntable.jpg?t=1782562827857 net::ERR_FILE_NOT_FOUND, often want to show the wireframe - pose
|
- The UI wants to car.html:2817 GET file:///mnt/zim/tour-comfy/output/_turntable/up_34e48ffb/turntable.jpg?t=1782562827857 net::ERR_FILE_NOT_FOUND, often want to show the wireframe - pose
|
||||||
- ✅ Fixed: statically serve turntable and orbit preview files from filesystem, not via server (avoid GET /output/... 304 Not Modified log spam)
|
- ✅ Fixed: statically serve turntable and orbit preview files from filesystem, not via server (avoid GET /output/... 304 Not Modified log spam)
|
||||||
- Check face similarity in a group of images.
|
- Check face similarity in a group of images.
|
||||||
- implement a tag-system for images, will be used to filter, group, sort and search images. Obvious tags are VISIBLE, ARCHIVED, LIKE, DISLIKE, RATED, GROUP_ANCHOR, GROUP_MEMBER, BACKGROUND etc..
|
- ✅ Fixed: implement a tag-system for images, will be used to filter, group, sort and search images. Obvious tags are VISIBLE, ARCHIVED, LIKE, DISLIKE, RATED, GROUP_ANCHOR, GROUP_MEMBER, BACKGROUND etc..
|
||||||
- mark image as source
|
- ✅ Fixed: mark image as source (with dedicated 'S' keybind)
|
||||||
- introduce multiple filmstrips. .
|
- ✅ Fixed: introduce multiple filmstrips (Group, Hidden, Source, Archived with drag-and-drop & bulk selection actions).
|
||||||
|
- samengestelde outpaint featurue lijkt niet goed te werken, but individual steps work perfect.
|
||||||
|
- regenerate a single orbit - pose
|
||||||
|
- when generating a known pose, we should know roughly the image ratio. Make a pose-table, when a pose is generated store the wireframe and meta data
|
||||||
## refine
|
## refine
|
||||||
|
|
||||||
- when refresh page, we lose track of current jobs running.
|
- when refresh page, we lose track of current jobs running.
|
||||||
@@ -95,4 +98,5 @@ videos
|
|||||||
# generieke stappen
|
# generieke stappen
|
||||||
1) 3ref image HQ detail
|
1) 3ref image HQ detail
|
||||||
2) 3ref image MERGE
|
2) 3ref image MERGE
|
||||||
3) 3ref straight on- head-on - looking viewer
|
3) 3ref straight on- head-on - looking viewer
|
||||||
|
|
||||||
|
|||||||
1228
tour-comfy/car.html
1228
tour-comfy/car.html
File diff suppressed because it is too large
Load Diff
@@ -119,6 +119,87 @@ def migrate_schema():
|
|||||||
finally:
|
finally:
|
||||||
cur.close()
|
cur.close()
|
||||||
_put_db_connection(conn)
|
_put_db_connection(conn)
|
||||||
|
try:
|
||||||
|
initialize_tags_in_db()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[db] initialize_tags_in_db error: {e}")
|
||||||
|
|
||||||
|
def initialize_tags_in_db():
|
||||||
|
conn = get_db_connection()
|
||||||
|
cur = conn.cursor()
|
||||||
|
try:
|
||||||
|
cur.execute("""
|
||||||
|
SELECT filename, archived, hidden, is_source, sort_order, has_background, tags
|
||||||
|
FROM person
|
||||||
|
""")
|
||||||
|
rows = cur.fetchall()
|
||||||
|
for filename, archived, hidden, is_source, sort_order, has_background, tags_val in rows:
|
||||||
|
tags_list = []
|
||||||
|
if tags_val:
|
||||||
|
if isinstance(tags_val, str):
|
||||||
|
try:
|
||||||
|
tags_list = json.loads(tags_val)
|
||||||
|
except Exception:
|
||||||
|
tags_list = []
|
||||||
|
elif isinstance(tags_val, list):
|
||||||
|
tags_list = tags_val
|
||||||
|
|
||||||
|
is_archived = bool(archived) if archived is not None else False
|
||||||
|
is_hidden = bool(hidden) if hidden is not None else False
|
||||||
|
is_src = bool(is_source) if is_source is not None else False
|
||||||
|
has_bg = bool(has_background) if has_background is not None else True
|
||||||
|
|
||||||
|
def add_tag_if_missing(tag):
|
||||||
|
if tag not in tags_list:
|
||||||
|
tags_list.append(tag)
|
||||||
|
|
||||||
|
if is_archived:
|
||||||
|
add_tag_if_missing("ARCHIVED")
|
||||||
|
if "VISIBLE" in tags_list:
|
||||||
|
tags_list.remove("VISIBLE")
|
||||||
|
else:
|
||||||
|
if not is_hidden:
|
||||||
|
add_tag_if_missing("VISIBLE")
|
||||||
|
if "ARCHIVED" in tags_list:
|
||||||
|
tags_list.remove("ARCHIVED")
|
||||||
|
|
||||||
|
if is_hidden:
|
||||||
|
add_tag_if_missing("HIDDEN")
|
||||||
|
if "VISIBLE" in tags_list:
|
||||||
|
tags_list.remove("VISIBLE")
|
||||||
|
else:
|
||||||
|
if "HIDDEN" in tags_list:
|
||||||
|
tags_list.remove("HIDDEN")
|
||||||
|
|
||||||
|
if is_src:
|
||||||
|
add_tag_if_missing("SOURCE")
|
||||||
|
else:
|
||||||
|
if "SOURCE" in tags_list:
|
||||||
|
tags_list.remove("SOURCE")
|
||||||
|
|
||||||
|
if sort_order == 0:
|
||||||
|
add_tag_if_missing("GROUP_ANCHOR")
|
||||||
|
if "GROUP_MEMBER" in tags_list:
|
||||||
|
tags_list.remove("GROUP_MEMBER")
|
||||||
|
else:
|
||||||
|
add_tag_if_missing("GROUP_MEMBER")
|
||||||
|
if "GROUP_ANCHOR" in tags_list:
|
||||||
|
tags_list.remove("GROUP_ANCHOR")
|
||||||
|
|
||||||
|
if not has_bg:
|
||||||
|
add_tag_if_missing("BACKGROUND_REMOVED")
|
||||||
|
if "BACKGROUND" in tags_list:
|
||||||
|
tags_list.remove("BACKGROUND")
|
||||||
|
else:
|
||||||
|
add_tag_if_missing("BACKGROUND")
|
||||||
|
if "BACKGROUND_REMOVED" in tags_list:
|
||||||
|
tags_list.remove("BACKGROUND_REMOVED")
|
||||||
|
|
||||||
|
cur.execute("UPDATE person SET tags = %s WHERE filename = %s", (json.dumps(tags_list), filename))
|
||||||
|
conn.commit()
|
||||||
|
finally:
|
||||||
|
cur.close()
|
||||||
|
_put_db_connection(conn)
|
||||||
|
|
||||||
def upsert_person(filename, filepath=None, name=None, group_id=None, tags=None,
|
def upsert_person(filename, filepath=None, name=None, group_id=None, tags=None,
|
||||||
embedding=None, clip_description=None, prompt=None, pose=None,
|
embedding=None, clip_description=None, prompt=None, pose=None,
|
||||||
@@ -201,6 +282,16 @@ def set_hidden(filename, hidden: bool):
|
|||||||
cur.close()
|
cur.close()
|
||||||
_put_db_connection(conn)
|
_put_db_connection(conn)
|
||||||
|
|
||||||
|
def set_person_tags(filename, tags):
|
||||||
|
conn = get_db_connection()
|
||||||
|
cur = conn.cursor()
|
||||||
|
try:
|
||||||
|
cur.execute("UPDATE person SET tags = %s WHERE filename = %s", (json.dumps(tags) if tags is not None else None, filename))
|
||||||
|
conn.commit()
|
||||||
|
finally:
|
||||||
|
cur.close()
|
||||||
|
_put_db_connection(conn)
|
||||||
|
|
||||||
def get_person(filename):
|
def get_person(filename):
|
||||||
conn = get_db_connection()
|
conn = get_db_connection()
|
||||||
cur = conn.cursor()
|
cur = conn.cursor()
|
||||||
@@ -224,7 +315,7 @@ def list_persons(include_archived=False):
|
|||||||
cur.execute(f"""
|
cur.execute(f"""
|
||||||
SELECT filename, name, group_id, clip_description,
|
SELECT filename, name, group_id, clip_description,
|
||||||
prompt, pose, sort_order, group_name, hidden, has_background, source_refs,
|
prompt, pose, sort_order, group_name, hidden, has_background, source_refs,
|
||||||
has_clothing, content_type, faceswap_source_video, archived, is_source
|
has_clothing, content_type, faceswap_source_video, archived, is_source, tags
|
||||||
FROM person
|
FROM person
|
||||||
{where}
|
{where}
|
||||||
""")
|
""")
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,28 @@ Masterpiece, you are in a black void, hyper-realistic, high quality. detailed. d
|
|||||||
1 female nude.
|
1 female nude.
|
||||||
realistic.
|
realistic.
|
||||||
|
|
||||||
|
# Feminine Body
|
||||||
|
|
||||||
|
Stand with legs slightly apart, knees relaxed. Slightly turn hips to the side, arching back to accentuate buttocks and pelvis depth. Tilt chin slightly upwards, showing teeth in a playful, confident smile. Tilt head slightly, revealing the ear. Relax shoulders and extend arms at sides, drawing attention to the silhouette of the torso. Keep knees slightly bent, creating a gentle, inviting curvature of the spine. Allow the chest to gently protrude, highlighting breast size and natural cleavage. Maintain a relaxed facial expression, eyes gazing forward with a hint of arouse. The primary focus
|
||||||
|
should be on the exposed genitals, capturing their natural form and contours with utmost clarity. Perfect anatomy, hyper realistic.
|
||||||
|
|
||||||
|
# Scene replace (18)
|
||||||
|
|
||||||
|
naturally replace the single female from Image 1 with the teenage female from image 2.
|
||||||
|
Keep characteristics of person in Image 2
|
||||||
|
|
||||||
|
# Scene Steel replace (18)
|
||||||
|
|
||||||
|
replace the female in Image 1 by the teenage female in Image 2. Keep the Identical person in image 2. photo realistic
|
||||||
|
|
||||||
|
|
||||||
|
# Undress
|
||||||
|
|
||||||
|
masterpiece, high quality,
|
||||||
|
undress,
|
||||||
|
hyper realistic, detailed, detailed skin.
|
||||||
|
Ensure the lighting is soft and diffused to bring out the detailed skin texture, especially in the areas of the breasts and genitals. Capture this image in high resolution to showcase the hyper-realistic quality of the photograph. Perfect anatomy, realistic.
|
||||||
|
|
||||||
# Feminine NO BG (18)
|
# Feminine NO BG (18)
|
||||||
|
|
||||||
You are in a black empty void.
|
You are in a black empty void.
|
||||||
@@ -55,20 +77,20 @@ Keep full characteristics of reference image.
|
|||||||
|
|
||||||
# Three-quarter (18)
|
# Three-quarter (18)
|
||||||
|
|
||||||
You are in a black empty void, transparent background.
|
You are in a black empty void.
|
||||||
masterpiece, high quality, detailed, detailed skin.
|
masterpiece, high quality, detailed, detailed skin.
|
||||||
Head-on a right-front.
|
Head-on a right-front.
|
||||||
Detailed full-nude-body.
|
Detailed full-nude-body.
|
||||||
Top-to-toe photo.
|
Top-to-toe photo.
|
||||||
female teenage, hyper realistic.
|
female teenage, hyper-realistic.
|
||||||
Anatomically precise. Keep characteristics of reference image.
|
Anatomically precise. Keep characteristics of reference image.
|
||||||
|
|
||||||
# Three-quarter
|
# Three-quarter
|
||||||
|
|
||||||
You are in a black empty void.
|
You are in a black empty void.
|
||||||
high quality, masterpiece, detailed, detailed skin.
|
high quality, masterpiece, detailed, detailed skin.
|
||||||
Head-on a right-front view. Top-to-toe.
|
Head-on a right-front view.
|
||||||
detailed full-nude-body, female portrait, photorealistic, transparent background.
|
Top-to-toe. detailed full-nude-body, female portrait, hyper-realistic.
|
||||||
Keep characteristics of reference image.
|
Keep characteristics of reference image.
|
||||||
|
|
||||||
# Head-on undress (18)
|
# Head-on undress (18)
|
||||||
@@ -125,14 +147,14 @@ Keep characteristics of reference image.
|
|||||||
|
|
||||||
masterpiece, you are in a black void, high quality, detailed, undress, combine the characteristics from reference images.
|
masterpiece, you are in a black void, high quality, detailed, undress, combine the characteristics from reference images.
|
||||||
detailed skin, detailed full-nude-body. teenage female.
|
detailed skin, detailed full-nude-body. teenage female.
|
||||||
Photo-realistic.
|
Photo-realistic.
|
||||||
Anatomically precise, keep the posture and gesture from the base image.
|
Anatomically precise, keep the posture and gesture from the base image.
|
||||||
|
|
||||||
# Merge (18)
|
# Merge (18)
|
||||||
|
|
||||||
masterpiece, you are in a black void, high quality, detailed, undress, combine the characteristics from reference images.
|
masterpiece, you are in a black void, high quality, detailed, undress, combine the characteristics from reference images.
|
||||||
detailed skin, detailed full-nude-body. teenage female.
|
detailed skin, detailed full-nude-body. teenage female.
|
||||||
hyper realistic.
|
hyper realistic.
|
||||||
Anatomically precise, keep the posture and gesture from the base image.
|
Anatomically precise, keep the posture and gesture from the base image.
|
||||||
|
|
||||||
# Merge
|
# Merge
|
||||||
@@ -4591,3 +4613,4 @@ of serene anticipation, lips parted ever so slightly. The room around her is a v
|
|||||||
|
|
||||||
In the void, you lay supine with legs spread wide and bent at the knees, your feet flat against the ground. The back is slightly arched, emphasizing the curve of the lower spine. Your arms are outstretched to the sides, parallel to the ground, with elbows slightly bent. The head is tilted back, eyes closed and mouth slightly open, in a state of blissful surrender. The hips are raised just enough to create tension in the lower back, enhancing the silhouette. A steel band encircles each thigh, just above the knee, cinching them tightly together, symbolizing restraint. Your skin glistens with a
|
In the void, you lay supine with legs spread wide and bent at the knees, your feet flat against the ground. The back is slightly arched, emphasizing the curve of the lower spine. Your arms are outstretched to the sides, parallel to the ground, with elbows slightly bent. The head is tilted back, eyes closed and mouth slightly open, in a state of blissful surrender. The hips are raised just enough to create tension in the lower back, enhancing the silhouette. A steel band encircles each thigh, just above the knee, cinching them tightly together, symbolizing restraint. Your skin glistens with a
|
||||||
sheen of perspiration, accentuating every muscle contour. Anatomically precise, hyperrealistic.
|
sheen of perspiration, accentuating every muscle contour. Anatomically precise, hyperrealistic.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user