Tune Krea2 POV doggy prompts
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Krea2 POV Pose Atlas
|
||||
|
||||
Local reference root:
|
||||
|
||||
`/media/unraid/davinci/Qwen_edit_lora/POV/dataset_v2`
|
||||
|
||||
Use this dataset as the pose-geometry reference for POV prompt tuning. The pose
|
||||
folders contain rendered POV examples; matching `_control` folders contain the
|
||||
solo/control image for the same pose family. Ignore `bg` and `*_bg` folders for
|
||||
pose analysis; they are background plates without people.
|
||||
|
||||
## Inventory
|
||||
|
||||
| Family | Pose images | Control images | First sample |
|
||||
| --- | ---: | ---: | --- |
|
||||
| cowgirl | 63 | 63 | `5.cowgirl/100_cowgirl.png` |
|
||||
| cowgirl alt | 62 | 62 | `5.cowgirl_alt/101_cowgirl_alt.png` |
|
||||
| reverse cowgirl | 58 | 58 | `cowgirl_reverse/101_cowgirl_reverse.png` |
|
||||
| reverse cowgirl alt | 50 | 50 | `cowgirl_reversere_alt/100_cowgirl_reversere_alt.png` |
|
||||
| doggy | 57 | 57 | `doggy/101_doggy.png` |
|
||||
| doggy alt | 45 | 45 | `doggy_alt/100_doggy_alt.png` |
|
||||
| missionary | 74 | 74 | `missionary/101_missionary.png` |
|
||||
| missionary folded | 12 | 12 | `missionary_folded/16_missionary_folded.png` |
|
||||
| sixty-nine | 29 | 29 | `69/105_sixtynine.png` |
|
||||
| ballsucking | 25 | 25 | `ballsucking/101_ballsucking.png` |
|
||||
| blowjob laying | 42 | 42 | `blowjob_laying/101_blowjob_laying.png` |
|
||||
| blowjob side | 17 | 17 | `blowjob_side/103_blowjob_side.png` |
|
||||
| blowjob sitting | 27 | 27 | `blowjob_sitting/100_blowjob_sitting.png` |
|
||||
| blowjob top view | 17 | 17 | `blowjob_top_view/102_blowjob_top_view.png` |
|
||||
| boobjob | 11 | 11 | `boobjob/100_boobjob.png` |
|
||||
| handjob | 24 | 24 | `handjob/18_handjob.png` |
|
||||
| footjob | 2 | 2 | `footjob/59_footjob.png` |
|
||||
| fingering | 10 | 10 | `fingering/103_fingering.png` |
|
||||
| spread | 55 | 55 | `spread/100_spread_.png` |
|
||||
| ready | 19 | 19 | `ready/105_ready_.png` |
|
||||
| wand | 7 | 7 | `wand/106_wand_.png` |
|
||||
|
||||
## Tuning Method
|
||||
|
||||
For each pose family:
|
||||
|
||||
1. Sample 5-10 pose images and 2-3 control images.
|
||||
2. Write a compact geometry summary using only repeated visual facts.
|
||||
3. Test one prompt variant with a fixed seed.
|
||||
4. Test the same wording on a second seed or character.
|
||||
5. Patch generator defaults only when the wording improvement repeats or the
|
||||
generated prompt is structurally wrong before rendering.
|
||||
6. Record the evidence in `docs/krea2-prompt-guide.md`.
|
||||
|
||||
## Confirmed Notes
|
||||
|
||||
### Doggy / Rear-Entry
|
||||
|
||||
Dataset references show that visible POV thighs, lower torso, or pelvis can be
|
||||
correct. They should be treated as natural foreground cues, not automatic
|
||||
failures.
|
||||
|
||||
Better Krea2 wording:
|
||||
|
||||
- `top-down POV doggy position from behind`
|
||||
- `camera looks down over the viewer's hands onto the woman's raised hips`
|
||||
- `woman is on all fours with chest low, forearms folded, cheek turned sideways`
|
||||
- `back arched, hips raised high toward the camera`
|
||||
- `viewer hands hold her hips with natural lower-body POV cues in the foreground`
|
||||
|
||||
Avoid using visible shoes or lower legs as the standing cue. In seed `65`, that
|
||||
wording pulled Krea2 toward oral contact and weakened rear-entry geometry.
|
||||
@@ -36,6 +36,11 @@ image can justify a prompt-only retry when the mismatch is obvious, but a
|
||||
generator rule needs either repeated evidence or a generated prompt that is
|
||||
structurally wrong before rendering.
|
||||
|
||||
When a workflow batches soft/hard prompts through an index switch, sidecar text
|
||||
files may not be the exact prompt used for each rendered image. If the sidecar
|
||||
and image disagree, inspect the PNG workflow metadata and the final text encode
|
||||
input before patching the generator.
|
||||
|
||||
When reviewing an eval payload, log:
|
||||
|
||||
- emitted seed,
|
||||
@@ -140,6 +145,44 @@ Avoid:
|
||||
- making `the viewer` the first subject before the visible character is
|
||||
established.
|
||||
|
||||
For POV climax wording, the fluid target must follow the pose before expression
|
||||
tokens. Rear-entry, doggy, bent-over, face-down, and on-all-fours poses should
|
||||
target the ass, thighs, and lower back even if the expression detail mentions
|
||||
face, lips, mouth, or tongue.
|
||||
|
||||
Evidence:
|
||||
|
||||
- Dataset seed `52` generated an internally contradictory prompt: on-all-fours
|
||||
rear-view positioning paired with a face/chest ejaculation target.
|
||||
- Corrected seed `52` and follow-up seed `5202` both rendered the rear-view
|
||||
target consistently when the wording used `across her ass, thighs, and lower
|
||||
back` and kept the clothing state tied to the lower garment.
|
||||
|
||||
### POV Doggy / Rear-Entry
|
||||
|
||||
For doggy-style POV, visible viewer thighs, lower torso, or pelvis can be
|
||||
correct. Real POV references often show them. The useful target is not removing
|
||||
the viewer body, but making the body cues read as a standing or crouched
|
||||
first-person viewpoint instead of a vague seated pose.
|
||||
|
||||
To push the reference closer to a standing or crouched man looking down, use a
|
||||
top-down rear-entry structure:
|
||||
|
||||
- `top-down standing POV doggy position from behind`
|
||||
- `camera looks down over the viewer's extended hands onto the woman's raised hips`
|
||||
- `woman is on all fours with chest low, forearms folded, cheek turned sideways`
|
||||
- `rear-entry penetration visible between raised hips`
|
||||
- `face and mouth remain far ahead, clearly separated from the penis`
|
||||
|
||||
Do not use visible shoes or lower legs as the standing cue. Seed `65` showed
|
||||
that adding shoes/lower legs made Krea2 drift into oral contact and lose the
|
||||
rear-entry geometry.
|
||||
|
||||
Do not over-prompt `viewer torso and thighs outside frame`; seeds `65` and
|
||||
`6602` showed Krea2 still draws lower-body POV cues, and real references support
|
||||
that. Prefer framing them as plausible foreground body cues rather than trying
|
||||
to suppress them.
|
||||
|
||||
## Style
|
||||
|
||||
Style should describe rendering, not camera mechanics.
|
||||
|
||||
@@ -67,6 +67,29 @@ The request is sent on stdin. The command also receives:
|
||||
- Seed control/reproducibility
|
||||
- Overall Krea2 image usefulness
|
||||
|
||||
## POV Pose Atlas
|
||||
|
||||
Use `/media/unraid/davinci/Qwen_edit_lora/POV/dataset_v2` as the local
|
||||
reference atlas for POV pose geometry. The top-level pose folders contain real
|
||||
POV examples, and matching `_control` folders contain solo/control versions.
|
||||
Ignore `bg` and `*_bg` folders for pose rules; they are background plates
|
||||
without people. Treat the pose image folders as the primary source for body
|
||||
geometry; captions are optional and are not present for every folder.
|
||||
|
||||
Suggested workflow:
|
||||
|
||||
1. Choose one pose family, for example `doggy`, `doggy_alt`, `cowgirl`, or
|
||||
`missionary`.
|
||||
2. Sample 5-10 real pose images and their control images.
|
||||
3. Write the repeated geometry as a compact prompt rule.
|
||||
4. Run one fixed-seed Krea2 prompt using that rule.
|
||||
5. Repeat on a second seed or character before changing generator defaults.
|
||||
6. If the prompt itself is structurally contradictory before rendering, patch
|
||||
immediately and add a regression test.
|
||||
|
||||
For POV doggy, the atlas shows that visible viewer thighs, lower torso, or
|
||||
pelvis can be correct. Do not treat them as automatic failures.
|
||||
|
||||
## Seed Contract
|
||||
|
||||
The seed is transport metadata, not prompt text. When the graph emits a seed, an
|
||||
|
||||
+24
-5
@@ -36,12 +36,30 @@ def _clean(value: Any) -> str:
|
||||
|
||||
|
||||
def pov_ejaculation_target(context: str) -> str:
|
||||
if any(token in context for token in ("face", "mouth", "lips", "tongue", "chin")):
|
||||
return "onto her face and chest"
|
||||
if any(token in context for token in ("lower back", "ass", "rear-entry", "face-down", "bent-over", "doggy")):
|
||||
if any(
|
||||
token in context
|
||||
for token in (
|
||||
"lower back",
|
||||
"ass",
|
||||
"rear-entry",
|
||||
"rear entry",
|
||||
"face-down",
|
||||
"face down",
|
||||
"bent-over",
|
||||
"bent over",
|
||||
"doggy",
|
||||
"on all fours",
|
||||
"hips high",
|
||||
"hips raised",
|
||||
"raised ass",
|
||||
"behind her",
|
||||
)
|
||||
):
|
||||
return "across her ass, thighs, and lower back"
|
||||
if any(token in context for token in ("pussy", "open thighs", "thighs", "legs open")):
|
||||
return "across her pussy and thighs"
|
||||
if any(token in context for token in ("face", "mouth", "lips", "tongue", "chin")):
|
||||
return "onto her face and chest"
|
||||
return "onto her body"
|
||||
|
||||
|
||||
@@ -444,8 +462,9 @@ def pov_hardcore_pose_sentence(
|
||||
)
|
||||
if "doggy" in position_context or "all fours" in position_context or "rear-entry" in position_context:
|
||||
return sentence(
|
||||
"The woman is seen from behind with her ass raised toward the POV viewer, on all fours directly in front of him with hips high and back arched; "
|
||||
f"the viewer looks down at her raised ass with his hands on her hips in the foreground {contact}"
|
||||
"Top-down POV doggy position from behind: the camera looks down over the viewer's hands onto the woman's raised hips; "
|
||||
f"the woman is on all fours with chest low, forearms folded, cheek turned sideways far ahead, back arched, and hips raised high toward the camera; "
|
||||
f"the viewer's hands hold her hips with natural lower-body POV cues in the foreground {contact}"
|
||||
)
|
||||
if "kneeling" in position_context:
|
||||
return sentence(
|
||||
|
||||
+26
-2
@@ -55,6 +55,7 @@ import node_tooltips # noqa: E402
|
||||
import krea_cast # noqa: E402
|
||||
import krea_action_details # noqa: E402
|
||||
import krea_action_context # noqa: E402
|
||||
import krea_pov_actions # noqa: E402
|
||||
import krea_configured_cast_formatter # noqa: E402
|
||||
import krea_format_route # noqa: E402
|
||||
import krea_formatter # noqa: E402
|
||||
@@ -6942,6 +6943,28 @@ def smoke_pov_oral_position_routes() -> None:
|
||||
_expect(term in prompt, f"{name} Krea prompt missing {term!r}: {prompt}")
|
||||
|
||||
|
||||
def smoke_pov_climax_target_policy() -> None:
|
||||
context = (
|
||||
"doggy rear-entry on all fours with hips raised and ass toward the camera; "
|
||||
"mouth, face, lips, and tongue appear only in expression detail"
|
||||
)
|
||||
target = krea_pov_actions.pov_ejaculation_target(context)
|
||||
_expect(
|
||||
target == "across her ass, thighs, and lower back",
|
||||
f"rear-entry climax target should beat face-expression tokens, got {target!r}",
|
||||
)
|
||||
phrase = krea_pov_actions.pov_action_phrase(
|
||||
"Man A ejaculates semen onto Woman A's face and chest; visible semen lands while her mouth stays open",
|
||||
["Man A"],
|
||||
role_graph="Woman A is on all fours directly in front of Man A with hips raised while Man A is positioned behind her.",
|
||||
hard_item="cumshot with mouth and face expression",
|
||||
composition="first-person rear-view frame looking down at the woman's raised ass",
|
||||
axis_values={"position": "doggy style position"},
|
||||
).lower()
|
||||
_expect("face and chest" not in phrase, f"POV rear-entry climax kept incompatible face/chest target: {phrase}")
|
||||
_expect("across her ass, thighs, and lower back" in phrase, f"POV rear-entry climax lost rear target: {phrase}")
|
||||
|
||||
|
||||
def smoke_pov_penetration_position_routes() -> None:
|
||||
cases = [
|
||||
(
|
||||
@@ -6966,7 +6989,7 @@ def smoke_pov_penetration_position_routes() -> None:
|
||||
"pov_penetration_doggy",
|
||||
"doggy",
|
||||
("woman a is on all fours", "man a is positioned behind her"),
|
||||
("ass raised toward the pov viewer", "on all fours", "penetrates her pussy"),
|
||||
("top-down pov doggy position", "on all fours", "forearms folded", "penetrates her pussy"),
|
||||
),
|
||||
(
|
||||
"pov_penetration_edge_supported",
|
||||
@@ -7030,7 +7053,7 @@ def smoke_pov_anal_position_routes() -> None:
|
||||
"pov_anal_doggy",
|
||||
"doggy",
|
||||
("on all fours", "positioned behind her"),
|
||||
("on all fours directly in front", "penetrates her ass"),
|
||||
("top-down pov doggy position", "on all fours", "forearms folded", "penetrates her ass"),
|
||||
),
|
||||
(
|
||||
"pov_anal_bent_over",
|
||||
@@ -9658,6 +9681,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("krea_pov_penetration_route", smoke_krea_pov_penetration_route),
|
||||
("pov_outercourse_position_routes", smoke_pov_outercourse_position_routes),
|
||||
("pov_oral_position_routes", smoke_pov_oral_position_routes),
|
||||
("pov_climax_target_policy", smoke_pov_climax_target_policy),
|
||||
("pov_penetration_position_routes", smoke_pov_penetration_position_routes),
|
||||
("pov_anal_position_routes", smoke_pov_anal_position_routes),
|
||||
("double_front_back_route", smoke_double_front_back_route),
|
||||
|
||||
Reference in New Issue
Block a user