Использование Apple Vision Framework для задач компьютерного зрения на устройствах iOS: обнаружение объектов, распознавание текста и классификация изображений

Если фраза «vision pro apple» относится к платформе Apple Vision, которая используется для задач компьютерного зрения на устройствах iOS, вот несколько методов с примерами кода:

  1. Обнаружение объектов.
    Среду Vision можно использовать для обнаружения объектов в реальном времени на изображениях или в видеопотоках. Вот пример того, как выполнить обнаружение объекта с помощью платформы:
import Vision
func detectObjects(in image: UIImage) {
    guard let ciImage = CIImage(image: image) else {
        return
    }

    let request = VNRecognizeObjectsRequest { request, error in
        guard let observations = request.results as? [VNRecognizedObjectObservation] else {
            return
        }

        for observation in observations {
            let boundingBox = observation.boundingBox
            let label = observation.labels.first?.identifier ?? "Unknown"
            print("Detected object: \(label), bounding box: \(boundingBox)")
        }
    }

    let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])

    do {
        try handler.perform([request])
    } catch {
        print("Object detection failed with error: \(error)")
    }
}
// Usage
let image = UIImage(named: "image.jpg")!
detectObjects(in: image)
  1. Распознавание текста.
    Среду Vision также можно использовать для распознавания текста на изображениях. Вот пример:
import Vision
func recognizeText(in image: UIImage) {
    guard let ciImage = CIImage(image: image) else {
        return
    }

    let request = VNRecognizeTextRequest { request, error in
        guard let observations = request.results as? [VNRecognizedTextObservation] else {
            return
        }

        for observation in observations {
            guard let topCandidate = observation.topCandidates(1).first else {
                continue
            }

            let recognizedText = topCandidate.string
            let boundingBox = observation.boundingBox
            print("Recognized text: \(recognizedText), bounding box: \(boundingBox)")
        }
    }

    let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])

    do {
        try handler.perform([request])
    } catch {
        print("Text recognition failed with error: \(error)")
    }
}
// Usage
let image = UIImage(named: "image.jpg")!
recognizeText(in: image)
  1. Классификация изображений.
    Инструмент Vision поддерживает классификацию изображений, позволяя классифицировать изображения по предопределенным категориям. Вот пример:
import Vision
func classifyImage(_ image: UIImage) {
    guard let ciImage = CIImage(image: image) else {
        return
    }
// Load a Core ML model
    guard let model = try? VNCoreMLModel(for: YourModel().model) else {
        return
    }

    let request = VNCoreMLRequest(model: model) { request, error in
        guard let classifications = request.results as? [VNClassificationObservation] else {
            return
        }

        for classification in classifications {
            let identifier = classification.identifier
            let confidence = classification.confidence
            print("Classified as: \(identifier), confidence: \(confidence)")
        }
    }

    let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])

    do {
        try handler.perform([request])
    } catch {
        print("Image classification failed with error: \(error)")
    }
}
// Usage
let image = UIImage(named: "image.jpg")!
classifyImage(image)