Ориентиры лица Vision (DetectFaceLandmarksRequest) смещены в iOS 26, но исправлены в iOS 18 с тем же кодом и изображениеIOS

Программируем под IOS
Ответить
Anonymous
 Ориентиры лица Vision (DetectFaceLandmarksRequest) смещены в iOS 26, но исправлены в iOS 18 с тем же кодом и изображение

Сообщение Anonymous »

Я использую платформу Vision (

Код: Выделить всё

DetectFaceLandmarksRequest
) с тем же кодом и тем же тестовым изображением для обнаружения ориентиров лица. В iOS 18 все работает так, как ожидалось: обнаруженные ориентиры лица совпадают с лицом правильно.
Но когда я запускаю тот же код на устройствах с iOS 26, координаты ориентиров находятся за пределами диапазона [0,1], что указывает на то, что они выходят за пределы лица.
Интересный факт: старый API VNDetectFaceLandmarksRequest работает очень хорошо, не сталкиваясь с этой проблемой
Как получить ориентиры на лице:

Код: Выделить всё

private let faceRectangleRequest = DetectFaceRectanglesRequest(.revision3)
private var faceLandmarksRequest = DetectFaceLandmarksRequest(.revision3)

func detectFaces(in ciImage: CIImage) async throws -> FaceTrackingResult {
let faces = try await faceRectangleRequest.perform(on: ciImage)
faceLandmarksRequest.inputFaceObservations = faces
let landmarksResults = try await faceLandmarksRequest.perform(on: ciImage)
...
}
Как показать ориентиры лиц в SwiftUI View:

Код: Выделить всё

private func convert(
point: NormalizedPoint,
faceBoundingBox: NormalizedRect,
imageSize: CGSize
) -> CGPoint {
let point = point.toImageCoordinates(
from: faceBoundingBox,
imageSize: imageSize,
origin: .upperLeft
)

return point
}
Что я уже пробовал:
  • Ввод одного и того же изображения.
  • Протестировал несколько устройств на iOS 26.0.1 -> всегда неправильно.
  • Протестировал несколько устройств на iOS 18.7.1 -> всегда правильно.
Среда:
  • macOS 26.0.1
  • Xcode 26.0.1 (17A400)
  • Реальные устройства, а не симулятор
Face Landmarks iOS 18
Изображение

Ориентиры по лицу iOS 26
Изображение

UPD.
Я обнаружил, что ориентиры нормализованы относительно unalignedBoundingBox. Однако я не могу получить к нему доступ в коде. Тем не менее, когда я использую эти значения для ограничивающей рамки, она работает правильно.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/797 ... ut-correct
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»