Vision face landmarks shifted on iOS 26 but correct on iOS 18 with same code and image

I'm using Vision framework (DetectFaceLandmarksRequest) with the same code and the same test image to detect face landmarks. On iOS 18 everything works as expected: detected face landmarks align with the face correctly.

But when I run the same code on devices with iOS 26, the landmark coordinates are outside the [0,1] range, which indicates they are out of face bounds.

Fun fact: the old VNDetectFaceLandmarksRequest API works very well without encountering this issue

How I get face landmarks:

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)
    ...
}

How I show face landmarks in SwiftUI View:

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

    return point
}

At the same time, it works as expected and gives me the correct results:

region is FaceObservation.Landmarks2D.Region

let points: [CGPoint] = region.pointsInImageCoordinates(
    imageSize, 
    origin: .upperLeft
)

After that, I found that the landmarks are normalized relative to the unalignedBoundingBox. However, I can’t access it in code. Still, using these values for the bounding box works correctly.

Things I've already tried:

  • Same image input
  • Tested multiple devices on iOS 26.2 -> always wrong.
  • Tested multiple devices on iOS 18.7.1 -> always correct.

Environment:

  • macOS 26.2
  • Xcode 26.2 (17C52)
  • Real devices, not simulator

Face Landmarks iOS 18

Face Landmarks iOS 26

Vision face landmarks shifted on iOS 26 but correct on iOS 18 with same code and image
 
 
Q