feat(faceswap): expose yaw on enumeration too
ListFaces now carries head yaw, so a caller choosing WHICH face to swap can see the thing that decides whether the swap will read — not only learn it afterwards from the swap report. In the run that prompted this the target's three faces sat at -82, -8 and -11 degrees; only the first was hopeless, and nothing in a bounding box said so.
This commit is contained in:
@@ -41,11 +41,12 @@ type faceSwapModel struct {
|
||||
type facesResponse struct {
|
||||
Count int `json:"count"`
|
||||
Faces []struct {
|
||||
Index int `json:"index"`
|
||||
Box []int `json:"box"`
|
||||
Score float64 `json:"score"`
|
||||
Width int `json:"width"`
|
||||
Height int `json:"height"`
|
||||
Index int `json:"index"`
|
||||
Box []int `json:"box"`
|
||||
Score float64 `json:"score"`
|
||||
Width int `json:"width"`
|
||||
Height int `json:"height"`
|
||||
Yaw *float64 `json:"yaw"`
|
||||
} `json:"faces"`
|
||||
}
|
||||
|
||||
@@ -74,7 +75,7 @@ func (m *faceSwapModel) ListFaces(ctx context.Context, img imagegen.Image) ([]im
|
||||
}
|
||||
out := make([]imagegen.DetectedFace, 0, len(parsed.Faces))
|
||||
for _, f := range parsed.Faces {
|
||||
df := imagegen.DetectedFace{Index: f.Index, Score: f.Score}
|
||||
df := imagegen.DetectedFace{Index: f.Index, Score: f.Score, Yaw: f.Yaw}
|
||||
// A short box would silently index out of range below; treat a
|
||||
// malformed entry as a protocol error rather than zero-filling it,
|
||||
// because a wrong box sends the caller at the wrong face.
|
||||
|
||||
Reference in New Issue
Block a user