Vision: เฟรมเวิร์กคอมพิวเตอร์วิชันใน iOS

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-19 เวลาอ่าน: 9 นาที

Vision เป็นเฟรมเวิร์กคอมพิวเตอร์วิชันของ Apple ซึ่งเปิดตัวครั้งแรกใน iOS 11 เมื่อปี 2017 Vision มีอัลกอริทึมพร้อมใช้งานสำหรับการตรวจจับใบหน้า การรู้จำข้อความ (OCR) การตรวจจับบาร์โค้ด การติดตามวัตถุ การจำแนกภาพ และการวิเคราะห์โครงร่าง — ทั้งหมดทำงานบนอุปกรณ์โดยใช้ Neural Engine ตามข้อมูลจาก Apple WWDC 2023 Vision ถูกใช้ในแอพรูปภาพมาตรฐานสำหรับการจดจำใบหน้าและในแอพกล้องถ่ายรูปสำหรับการตรวจจับข้อความแบบเรียลไทม์บน iPhone และ iPad

ประเด็นสำคัญ

  • Vision — เฟรมเวิร์กคอมพิวเตอร์วิชันบนอุปกรณ์ของ Apple พร้อมวงจรการวิเคราะห์ที่สมบูรณ์บนอุปกรณ์
  • รองรับ การตรวจจับใบหน้า การรู้จำข้อความ (OCR) บาร์โค้ด การจำแนกประเภท และการติดตามวัตถุ
  • ทำงานผ่านกลไก VNRequest แบบรวมศูนย์ — คำขอไปยังภาพหรือสตรีมวิดีโอ
  • ผนวกรวมกับ Core ML สำหรับโมเดลที่กำหนดเองผ่าน VNCoreMLRequest
  • เฟรมเวิร์กได้รับการปรับให้เหมาะสมสำหรับ Neural Engine บนชิป A12+ เพื่อประสิทธิภาพแบบเรียลไทม์

Vision ใน iOS คืออะไร

Vision เป็นเฟรมเวิร์กคอมพิวเตอร์วิชันระดับสูงที่ซ่อนอัลกอริทึมการเรียนรู้ของเครื่องที่ซับซ้อนไว้เบื้องหลัง API คำขอที่เรียบง่าย (VNRequest) นักพัฒนาไม่จำเป็นต้องเข้าใจโครงข่ายประสาทเทียมแบบคอนโวลูชัน — เพียงสร้างคำขอประเภทที่เหมาะสม ส่งภาพ และรับผลลัพธ์

สถาปัตยกรรมของ Vision เป็นไปตามหลักการ Request → Handler → Result: VNImageRequestHandler รับภาพ ดำเนินการ VNRequest และส่งคืนอาร์เรย์ของ VNObservation พร้อมผลลัพธ์ ซึ่งช่วยให้สามารถรวมคำขอหลายรายการในภาพเดียวได้ — เช่น การตรวจจับใบหน้าและข้อความในภาพถ่ายพร้อมกัน

Vision รองรับ iOS 11+ และ macOS 10.13+ การเร่งความเร็วฮาร์ดแวร์ผ่าน Neural Engine ต้องใช้ชิป A12 Bionic หรือใหม่กว่า บนอุปกรณ์ที่มี A17 Pro และซีรีส์ M Vision สามารถประมวลผลได้สูงสุด 60 เฟรมต่อวินาทีสำหรับวิดีโอสตรีมมิ่ง

ข้อได้เปรียบหลัก ของ Vision คือความเป็นส่วนตัวที่สมบูรณ์: การคำนวณทั้งหมดดำเนินการบนอุปกรณ์ ภาพจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ ซึ่งช่วยให้สามารถใช้เฟรมเวิร์กในแอปพลิเคชันที่ทำงานกับข้อมูลที่ละเอียดอ่อน เช่น แอปทางการแพทย์หรือธนาคาร

การตรวจจับและรู้จำใบหน้า

VNDetectFaceRectanglesRequest คือคำขอพื้นฐานของ Vision สำหรับตรวจจับใบหน้าในภาพ โดยส่งคืนพิกัดของสี่เหลี่ยมที่ล้อมรอบใบหน้าแต่ละใบ โดยไม่ระบุตัวบุคคลที่เฉพาะเจาะจง

สำหรับการวิเคราะห์โดยละเอียดยิ่งขึ้น ให้ใช้ VNDetectFaceLandmarksRequest ซึ่งระบุจุดสำคัญของใบหน้า: ดวงตา คิ้ว จมูก ปาก โครงร่างกราม ข้อมูลนี้ใช้สำหรับการวางมาสก์ การเคลื่อนไหวอิโมจิ และฟิลเตอร์แบบเรียลไทม์ (เช่น ใน FaceTime และ Snapchat)

swift
import Vision
import UIKit

guard let image = UIImage(named: "photo") else { return }
let request = VNDetectFaceRectanglesRequest()
let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])

try handler.perform([request])
for observation in request.results ?? [] {
    let bbox = observation.boundingBox
    print("Face at x=\\(bbox.origin.x), y=\\(bbox.origin.y)")
}

VNFaceObservation ไม่เพียงประกอบด้วย boundingBox แต่ยังรวมถึง confidence (ความเชื่อมั่นตั้งแต่ 0 ถึง 1) และ landmarks — อาร์เรย์ของจุดบนใบหน้าหากคำขอเป็น VNDetectFaceLandmarksRequest ค่า confidence ที่ต่ำกว่า 0.5 มักบ่งชี้ว่าผลบวกปลอม — ควรทิ้งผลลัพธ์ดังกล่าว

Vision ยังรองรับ VNDetectFaceCaptureQualityRequest ซึ่งประเมินคุณภาพของภาพใบหน้า: แสงสว่าง ความคมชัด มุมการหมุน ซึ่งมีประโยชน์สำหรับการเลือกเฟรมที่ดีที่สุดระหว่างการลงทะเบียนผู้ใช้หรือสร้างอวาตาร์

การรู้จำข้อความ (OCR) ด้วย Vision

VNRecognizeTextRequest คือเอนจิ้น OCR ในตัวของ Apple ที่เปิดตัวใน iOS 13 ซึ่งรู้จำข้อความที่พิมพ์ในภาพโดยรองรับ 13 ภาษา: อังกฤษ รัสเซีย จีน ญี่ปุ่น เกาหลี อิตาลี เยอรมัน สเปน โปรตุเกส ฝรั่งเศส อาหรับ เวียดนาม และไทย

VNRecognizeTextRequest รองรับความแม่นยำสองระดับ: .fast (รวดเร็ว สำหรับข้อความง่ายบนพื้นหลังที่ตัดกัน) และ .accurate (แม่นยำ สำหรับฉากที่ซับซ้อนด้วยแบบอักษรและมุมต่างๆ) .fast เร็วกว่า 3–5 เท่าแต่จัดการกับข้อความที่เขียนด้วยลายมือและแบบอักษรที่ไม่ได้มาตรฐานได้มีประสิทธิภาพน้อยกว่า

swift
import Vision

let textRequest = VNRecognizeTextRequest { request, _ in
    guard let observations = request.results as? [VNRecognizedTextObservation]
    else { return }
    for observation in observations {
        let topCandidate = observation.topCandidates(1).first
        print(topCandidate?.string ?? "")
    }
}
textRequest.recognitionLevel = .accurate
textRequest.usesLanguageCorrection = true

คุณสมบัติ usesLanguageCorrection เปิดการแก้ไขข้อความที่รู้จำโดยใช้แบบจำลองภาษา ซึ่งช่วยเพิ่มความแม่นยำสำหรับภาษาอังกฤษ 10–15% แต่เพิ่มเวลาในการประมวลผล การแก้ไขภาษารัสเซียก็สามารถใช้ได้เมื่อระบุการรู้จำที่เหมาะสม

ตามข้อมูลของ Apple ML Research 2022 ความแม่นยำของ VNRecognizeTextRequest ที่ระดับ .accurate อยู่ที่ 96% สำหรับภาพถ่ายเอกสารที่ชัดเจนเป็นภาษาอังกฤษและประมาณ 88% สำหรับภาษารัสเซีย สำหรับข้อความบนบรรจุภัณฑ์ ป้าย และหน้าจอ ความแม่นยำลดลงเหลือ 75–85%

ระดับการรู้จำความเร็วความแม่นยำ (อังกฤษ)รองรับรัสเซีย
.fast0.1–0.3 วินาที~85%ใช่
.accurate0.3–1.0 วินาที~96%ใช่

การตรวจจับบาร์โค้ดและคิวอาร์โค้ด

VNDetectBarcodesRequest — คำขอ Vision สำหรับตรวจจับและถอดรหัสบาร์โค้ดและคิวอาร์โค้ดในภาพ รองรับทุกรูปแบบหลัก: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec และ QR

แตกต่างจาก AVFoundation (AVCaptureMetadataOutput) Vision ทำงานไม่เพียงกับสตรีมวิดีโอเท่านั้น แต่ยังทำงานกับภาพนิ่งด้วย — ทำให้สามารถสแกนโค้ดจากภาพถ่ายที่มีอยู่หรือภาพหน้าจอ Vision ยังระบุ boundingBox ของโค้ดด้วยความแม่นยำระดับพิกเซล ซึ่งสะดวกสำหรับการสร้างกรอบเคลื่อนไหวรอบโค้ดที่ตรวจจับได้

swift
import Vision

let barcodeRequest = VNDetectBarcodesRequest { request, _ in
    guard let observations = request.results as? [VNBarcodeObservation]
    else { return }
    for observation in observations {
        let payload = observation.payloadStringValue ?? ""
        print("Barcode: \\(payload), Symbology: \\(observation.symbology.rawValue)"
    }
}

VNBarcodeObservation ประกอบด้วย payloadStringValue (เนื้อหาที่ถอดรหัสแล้ว) symbology (ประเภทโค้ด) และ confidence สำหรับคิวอาร์โค้ด เพย์โหลดสามารถเป็น URL ข้อความ หรือ JSON สำหรับ EAN/UPC จะส่งคืนรหัสผลิตภัณฑ์ที่เป็นตัวเลขซึ่งสามารถใช้ค้นหารายการในฐานข้อมูลได้

Vision สามารถประมวลผล บาร์โค้ดหลายรายการ ในภาพเดียว — อาร์เรย์ observations มีหนึ่งอ็อบเจกต์สำหรับแต่ละโค้ดที่ตรวจจับได้ ซึ่งมีประโยชน์สำหรับการสแกนชุดผลิตภัณฑ์หรือเอกสารที่มีบาร์โค้ดหลายรายการ

การติดตามวัตถุในสตรีมวิดีโอ

VNDetectObjectAtPointRequest และ VNSequenceRequestHandler — เครื่องมือของ Vision สำหรับติดตามวัตถุในสตรีมวิดีโอ ตัวแรกระบุวัตถุตามจุดสัมผัสของผู้ใช้ ตัวที่สองติดตามวัตถุระหว่างเฟรมวิดีโอ

VNSequenceRequestHandler รับลำดับของภาพ (เฟรมวิดีโอ) และส่งคืนตำแหน่งที่อัปเดตของวัตถุที่กำลังติดตามสำหรับแต่ละเฟรม ซึ่งใช้ในแอปพลิเคชันความเป็นจริงเสริม โปรแกรมตัดต่อวิดีโอ และระบบเฝ้าระวัง

swift
import Vision

let trackingRequest = VNTrackObjectRequest(detectedObjectObservation: initialObservation)
let sequenceHandler = VNSequenceRequestHandler()

for frame in videoFrames {
    try sequenceHandler.perform([trackingRequest],
        on: frame.cgImage!)
    let newBBox = trackingRequest.results?.first?.boundingBox
    // อัปเดตตำแหน่งวัตถุบนหน้าจอ
}

VNTrackObjectRequest ใช้อัลกอริทึมการติดตามแบบออปติคัลโฟลว์ — มันไม่ได้ฝึกตัวตรวจจับใหม่ในทุกเฟรมแต่คำนวณการกระจัดของวัตถุจากตำแหน่งก่อนหน้า ซึ่งช่วยให้ทำงานแบบเรียลไทม์ได้แม้บนอุปกรณ์ที่ไม่มี Neural Engine

ข้อจำกัด: การติดตามอาจสูญเสียวัตถุระหว่างการเคลื่อนไหวเร็ว การบดบัง หรือการเปลี่ยนแปลงแสงอย่างกะทันหัน Apple แนะนำให้เริ่มการตรวจจับใหม่ (VNDetectObjectAtPointRequest) ทุก 10–15 เฟรมเพื่อแก้ไขการติดตาม

การจำแนกภาพและการวิเคราะห์โครงร่าง

VNClassifyImageRequest — โมเดลในตัวของ Vision สำหรับจำแนกภาพเป็น 1,000 หมวดหมู่ (โมเดล ResNet-50 ที่ฝึกบน ImageNet) คำขอส่งคืนอาร์เรย์ของ VNClassificationObservation พร้อมชื่อหมวดหมู่และความเชื่อมั่น

VNDetectContoursRequest ทำการวิเคราะห์โครงร่างของภาพ — แยกขอบเขตของวัตถุ มีประโยชน์สำหรับการแบ่งส่วน การวาดโครงร่าง และการประมวลผลล่วงหน้าก่อนการรู้จำ คำขอส่งคืนอาร์เรย์ของจุดที่อธิบายแต่ละโครงร่างในภาพ

swift
import Vision

// การจำแนกภาพ
let classificationRequest = VNClassifyImageRequest { request, _ in
    guard let results = request.results as? [VNClassificationObservation]
    else { return }
    let topMatch = results.prefix(3).filter { $0.confidence > 0.3 }
    for match in topMatch {
        print("\\(match.identifier): \\(match.confidence)"
    }
}

VNClassifyImageRequest ทำงานได้ดีสำหรับหมวดหมู่ทั่วไป (แมว สุนัข รถยนต์ อาหาร) แต่ไม่เหมาะสำหรับวัตถุเฉพาะ — สำหรับวัตถุเหล่านั้น คุณต้องฝึกโมเดล Core ML ที่กำหนดเองและใช้ VNCoreMLRequest โมเดลของ Apple ได้รับการปรับให้เหมาะสมสำหรับอุปกรณ์มือถือและใช้พื้นที่เพียง 5 MB

VNDetectContoursRequest ส่งคืนโครงร่างเป็นอาร์เรย์ของจุดพร้อมประเภทโครงร่าง (ภายนอก ภายใน รู) คำขอนี้ใช้สำหรับการประมวลผลภาพล่วงหน้าก่อน OCR (ปรับปรุงคอนทราสต์ของข้อความ) การวาดเอฟเฟกต์ (การวาดโครงร่างวัตถุ) และการวิเคราะห์รูปร่าง

คำขอ Visionวัตถุประสงค์เวอร์ชัน iOS
VNDetectFaceRectanglesRequestค้นหาใบหน้าในภาพiOS 11
VNRecognizeTextRequestรู้จำข้อความ (OCR)iOS 13
VNDetectBarcodesRequestตรวจจับบาร์โค้ดและ QRiOS 11
VNClassifyImageRequestจำแนกภาพiOS 13
VNDetectContoursRequestวิเคราะห์โครงร่างiOS 14
VNTrackObjectRequestติดตามวัตถุiOS 11

คำถามที่พบบ่อย

อะไรคือความแตกต่างระหว่าง Vision และ Core ML สำหรับคอมพิวเตอร์วิชัน

Vision มีอัลกอริทึมพร้อมใช้งาน (ตรวจจับใบหน้า OCR บาร์โค้ด) โดยไม่ต้องฝึกโมเดล Core ML เป็นเอนจิ้นสำหรับดำเนินการโมเดลที่กำหนดเอง Vision + VNCoreMLRequest ช่วยให้เรียกใช้โมเดล Core ML ภายในไปป์ไลน์ของ Vision ได้รับสิ่งที่ดีที่สุดของทั้งสองโลก: ตัวตรวจจับพร้อมใช้ของ Vision + การจำแนกประเภทแบบกำหนดเองของ Core ML

Vision ทำงานแบบเรียลไทม์บนวิดีโอได้หรือไม่

ใช่ Vision รองรับการประมวลผลสตรีมวิดีโอแบบเรียลไทม์ผ่าน VNSequenceRequestHandler สำหรับการติดตามและ AVCaptureVideoDataOutput สำหรับการประมวลผลแบบเฟรมต่อเฟรม บนอุปกรณ์ที่มี A12+ และ Neural Engine Vision ประมวลผลได้ถึง 60 fps สำหรับการตรวจจับใบหน้า สำหรับงานหนัก (OCR การจำแนกประเภท) แนะนำให้ประมวลผลทุก 5–10 เฟรม

VNRecognizeTextRequest รองรับภาษาใดบ้าง

VNRecognizeTextRequest รองรับ 13 ภาษา: อังกฤษ รัสเซีย จีน (ตัวย่อและตัวเต็ม) ญี่ปุ่น เกาหลี อิตาลี เยอรมัน สเปน โปรตุเกส ฝรั่งเศส อาหรับ เวียดนาม และไทย หากต้องการรู้จำหลายภาษาในภาพเดียว ให้ระบุอาร์เรย์ในคุณสมบัติ recognitionLanguages

สามารถใช้ Vision กับโมเดล Core ML ได้หรือไม่

ได้ ผ่าน VNCoreMLRequest คุณสร้างโมเดล Core ML ที่ห่อใน VNCoreMLModel และส่งต่อไปยัง VNCoreMLRequest Vision จัดการการประมวลผลภาพล่วงหน้า (การปรับขนาด การครอบตัด) โดยอัตโนมัติและป้อนให้กับโมเดล Core ML ผลลัพธ์จะถูกส่งคืนเป็น VNCoreMLFeatureValueObservation พร้อมข้อมูลเอาต์พุตของโมเดล

Vision ส่งภาพไปยังเซิร์ฟเวอร์ของ Apple หรือไม่

ไม่ Vision ดำเนินการวิเคราะห์ทั้งหมดบนอุปกรณ์อย่างสมบูรณ์ ภาพจะไม่ออกจากอุปกรณ์ของผู้ใช้ นี่คือสถาปัตยกรรมหลักของ Apple: เฟรมเวิร์ก ML ทั้งหมด (Vision, NaturalLanguage, Core ML, Speech) ทำงานบนอุปกรณ์เพื่อรับประกันความเป็นส่วนตัว ไม่มีข้อมูลใดถูกส่งไปยังเซิร์ฟเวอร์ของ Apple

สรุป

  • Vision — เฟรมเวิร์กคอมพิวเตอร์วิชันบนอุปกรณ์ของ Apple พร้อม API ที่ใช้ VNRequest พร้อมใช้งานตั้งแต่ iOS 11 บนอุปกรณ์ Apple ทั้งหมด
  • VNDetectFaceRectanglesRequest และ VNDetectFaceLandmarksRequest ตรวจจับใบหน้าและจุดสำคัญสำหรับฟิลเตอร์ มาสก์ และแอนิเมชัน
  • VNRecognizeTextRequest — OCR ในตัวสำหรับ 13 ภาษาพร้อมระดับ .fast และ .accurate ความแม่นยำสูงถึง 96% สำหรับเอกสาร
  • VNDetectBarcodesRequest ถอดรหัสรูปแบบบาร์โค้ดและคิวอาร์โค้ดยอดนิยมทั้งหมดทั้งในภาพถ่ายและสตรีมวิดีโอ
  • VNTrackObjectRequest ติดตามวัตถุระหว่างเฟรมวิดีโอผ่านออปติคัลโฟลว์โดยไม่ต้องฝึกตัวตรวจจับใหม่
  • การผนวกรวม Core ML ผ่าน VNCoreMLRequest ช่วยให้เรียกใช้โมเดลการจำแนกและการตรวจจับที่กำหนดเองภายในไปป์ไลน์ของ Vision
  • การคำนวณทั้งหมดดำเนินการ บนอุปกรณ์ โดยใช้ Neural Engine — ไม่ส่งภาพไปยังเซิร์ฟเวอร์และความเป็นส่วนตัวของข้อมูลที่สมบูรณ์

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม