Keep SDXL explicit tags metadata driven
This commit is contained in:
+34
-2
@@ -70,6 +70,30 @@ def _pair_counts(row: dict[str, Any], root: dict[str, Any]) -> tuple[int, int]:
|
||||
return _descriptor_counts(root)
|
||||
|
||||
|
||||
def _row_explicit_signal_text(
|
||||
row: dict[str, Any],
|
||||
*,
|
||||
item: str,
|
||||
pose: str,
|
||||
role_graph: str,
|
||||
expression: str,
|
||||
composition: str,
|
||||
deps: SDXLTagRouteDependencies,
|
||||
) -> str:
|
||||
values = (
|
||||
item,
|
||||
pose,
|
||||
role_graph,
|
||||
deps.clean(row.get("hardcore_clothing_state")),
|
||||
deps.clean(row.get("clothing_state")),
|
||||
deps.clean(row.get("clothing")),
|
||||
deps.clean(row.get("scene_kind")),
|
||||
expression,
|
||||
composition,
|
||||
)
|
||||
return " ".join(deps.clean(value) for value in values if deps.clean(value))
|
||||
|
||||
|
||||
def row_core_tags_result(request: SDXLRowTagRequest, deps: SDXLTagRouteDependencies) -> SDXLTagRoute:
|
||||
row = request.row
|
||||
tags: list[str] = []
|
||||
@@ -110,7 +134,15 @@ def row_core_tags_result(request: SDXLRowTagRequest, deps: SDXLTagRouteDependenc
|
||||
for tag in deps.camera_tags(row):
|
||||
deps.add_one(tags, seen, tag)
|
||||
|
||||
combined = " ".join(deps.clean(value) for value in (item, pose, role_graph, row.get("prompt", "")))
|
||||
combined = _row_explicit_signal_text(
|
||||
row,
|
||||
item=item,
|
||||
pose=pose,
|
||||
role_graph=role_graph,
|
||||
expression=expression,
|
||||
composition=composition,
|
||||
deps=deps,
|
||||
)
|
||||
for tag in deps.explicit_tags(combined, request.nude_weight):
|
||||
deps.add_one(tags, seen, tag)
|
||||
return SDXLTagRoute(tags)
|
||||
@@ -191,7 +223,7 @@ def hard_tags_result(request: SDXLPairTagRequest, deps: SDXLTagRouteDependencies
|
||||
deps.add(tags, seen, value)
|
||||
for tag in deps.camera_tags(row, root.get("hardcore_camera_directive"), root.get("hardcore_camera_config")):
|
||||
deps.add_one(tags, seen, tag)
|
||||
combined = " ".join([hard_role, hard_item, hard_clothing, expression, composition, root.get("hardcore_prompt", "") or ""])
|
||||
combined = " ".join([hard_role, hard_item, hard_clothing, expression, composition])
|
||||
for tag in deps.explicit_tags(combined, request.nude_weight):
|
||||
deps.add_one(tags, seen, tag)
|
||||
return SDXLTagRoute(tags)
|
||||
|
||||
Reference in New Issue
Block a user