OpenCV 5 เปิดตัวแล้ว! มาพร้อม DNN Engine ใหม่ รองรับ LLM, VLM และ ONNX กว่า 80%

OpenCV 5 ไลบรารีโอเพ่นซอร์สด้าน Computer Vision ยอดนิยมได้เปิดตัวอย่างเป็นทางการแล้ว โดยมาพร้อมกับ DNN (Deep Neural Network) Engine รุ่นใหม่ ที่รองรับมาตรฐาน ONNX ได้ดียิ่งขึ้น และสามารถรันโมเดล LLM (Large Language Model) และ VLM (Vision Language Model)

นอกจากนี้เวอร์ชัน 5 ยังเพิ่มการรองรับฮาร์ดแวร์เร่งความเร็วจาก Intel, Arm, Qualcomm และ RISC-V พร้อมปรับปรุงความสามารถด้าน 3D Vision และเพิ่มฟีเจอร์ใหม่ในส่วน Core Library หลายรายการ ได้แก่ รองรับชนิดข้อมูล (Data Types) ใหม่, รองรับข้อมูลแบบ N-Dimensional และ Scalar, และปรับปรุงประสิทธิภาพการประมวลผลให้ดียิ่งขึ้น

OpenCV 5

DNN Engine ใหม่ใน OpenCV 5

OpenCV 4.x รองรับ ONNX Operators ได้เพียงประมาณ 22% ขณะที่ DNN Engine ใหม่ใน OpenCV 5 เพิ่มการรองรับเป็นมากกว่า 80% ส่งผลให้โมเดลที่มี Dynamic Shape ซึ่งก่อนหน้านี้ไม่สามารถทำงานบน OpenCV 4.x ได้ สามารถทำงานได้ใน OpenCV 5 เนื่องจากสถาปัตยกรรมใหม่ถูกออกแบบบน Typed Operation Graph ที่รองรับ Shape Inference, Constant Folding และ Operator Fusion

ONNX Coverage OpenCV 5.0
การรองรับ ONNX: OpenCV 4.x กับ OpenCV 5

เปรียบเทียบ OpenCV 4.x และ OpenCV 5

คุณสมบัติClassic Engine (4.x)New Engine (5.x)
รูปแบบการแทนโมเดลใช้โครงสร้าง (Struct) แยกตามแต่ละเลเยอร์ และประมวลผลตามลำดับใช้กราฟแบบมีชนิดข้อมูล (Typed Graph) ที่สามารถวิเคราะห์และปรับแต่งได้
การรองรับ Shapeรองรับเฉพาะ Shape แบบคงที่ (Static)รองรับ Shape แบบ Symbolic และ Dynamic
Subgraphไม่รองรับรองรับโครงสร้าง If และ Loop
Fusionรองรับการรวมคำสั่งได้จำกัดรองรับ QDQ, BatchNorm, Attention, MatMul, Softmax และอื่นๆ
การจัดการหน่วยความจำใช้หน่วยความจำซ้ำในแต่ละเลเยอร์ใช้ Unified Buffer Pool ที่จัดสรรและนำหน่วยความจำกลับมาใช้ซ้ำได้อย่างมีประสิทธิภาพ

เนื่องจากการเปลี่ยนแปลงครั้งนี้มีขนาดใหญ่ เพื่อป้องกันปัญหาความเข้ากันได้และลดโอกาสที่โมเดลเดิมจะทำงานผิดพลาด OpenCV 5 จึงมีตัวเลือก Engine ให้ใช้งาน 4 รูปแบบ ได้แก่

  • ENGINE_CLASSIC (1) – ใช้ DNN Engine แบบเดิมของ OpenCV 4.x รองรับ CUDA และ OpenVINO
  • ENGINE_NEW (2) – ใช้ Graph Engine รุ่นใหม่ที่รองรับ Fusion และ Dynamic Shapes ปัจจุบันรองรับเฉพาะ CPU เท่านั้น แต่ทีมพัฒนากำลังเพิ่มการรองรับ GPU Acceleration สำหรับ Inference และ HAL สำหรับขั้นตอน Pre-processing และ Post-processing
  • ENGINE_AUTO (3) – โหมดเริ่มต้นของระบบ โดยจะทดลองใช้ Engine รุ่นใหม่ก่อน และถ้าโหลดโมเดลไม่สำเร็จ จะสลับกลับไปใช้ Engine เดิม โดยอัตโนมัติ
  • ENGINE_ORT (4) – ใช้งานผ่าน ONNX Runtime Wrapper ต้องเปิดใช้งาน WITH_ONNXRUNTIME=ON ขณะคอมไพล์

แม้ว่าคำว่า CV ใน OpenCV จะย่อมาจาก Computer Vision แต่ OpenCV 5 สามารถรันโมเดล LLM และโมเดล VLM ได้โดยตรงภายในโมดูล DNN โดยไม่ต้องพึ่ง Runtime ภายนอก เนื่องจากมี Tokenizer แบบ Native และ KV Cache สำหรับการถอดรหัสแบบ Autoregressive ในตัว โมเดลที่รองรับ ได้แก่ Qwen 2.5, Gemma 3ล PaliGemma, GPT-2/GPT-4 Family ทั้งหมดสามารถทำงานผ่าน Net API เดียวกับที่ใช้รันโมเดลประเภท YOLO

ส่งผลให้ OpenCV 5 รองรับงาน AI หลากหลายประเภท เช่น การตรวจจับวัตถุ (Object Detection), การแบ่งส่วนภาพ (Segmentation)ล โมเดล Vision-Language (VLM) และโมเดล Generative AI และ LLM

OpenCV 5 Model enabled by new DNN

ผลการทดสอบบนเครื่องที่ใช้ Intel Core i9-14900KS และ Ubuntu 24.04 LTS แสดงให้เห็นว่า OpenCV 5 สามารถทำงานได้เร็วกว่า ONNX Runtime ในหลายโมเดล

โมเดลOpenCV 5 (ms)ONNX Runtime (ms)ผลต่าง
XFeat6.56 8.61 เร็วกว่า 31.25%
YOLOv8n10.9 12.15 เร็วกว่า 11.5%
YOLOX-S23.46 25.16 เร็วกว่า 7.24%
DINOv2 Small23.78 29.58เร็วกว่า 24.4%
RF-DETR102.01 106.49 เร็วกว่า 4.4%
OWLv21,090 1,489เร็วกว่า 36.6%
BiRefNet7,178 9,503 เร็วกว่า 32.4%

สามารถดูผลการทดสอบประสิทธิภาพ (Benchmark) เพิ่มเติมบนแพลตฟอร์มต่างๆ ได้จาก Wiki บน GitHub

ฟีเจอร์ใหม่ใน Core Library

นอกเหนือจากการปรับปรุงด้าน Deep Learning แล้ว ส่วน OpenCV core ก็ได้รับการอัปเกรดหลายด้าน:

  • ชนิดข้อมูลใหม่ (New Data Types) OpenCV 5 เพิ่มการรองรับ FP16 (cv::hfloat, CV_16F) และ BF16 (cv::bfloat, CV_16BF) types, plus bool, Integer 64 บิต และชนิดข้อมูลอื่นๆ เพิ่มเติม
  • รองรับข้อมูล N-Dimensional และ Scalar อย่างแท้จริง cv::Mat สามารถเก็บข้อมูลได้ทั้ง 0 มิติ (Scalar) และ 1 มิติ Array), หลายมิติ (N-Dimensional) พร้อมเพิ่มฟีเจอร์ เช่น Broadcasting, transposeND, flipND
  • ประสิทธิภาพดีขึ้น งานคำนวณทางคณิตศาสตร์เร็วขึ้นสูงสุด 2 เท่า โค้ดเดียวสามารถทำงานได้ทั้ง CPU และ Accelerator โดยไม่ต้องแก้ไข

การเปลี่ยนแปลงด้านภาษาโปรแกรม:

  • ยกเลิกการใช้งาน Legacy C API อย่างเป็นทางการ
  • แนะนำให้ใช้มาตรฐาน C++17 เป็นขั้นต่ำ พร้อม มีแผนรองรับ C++20 Modules ใน OpenCV 5.x รุ่นถัดไป
  • Python รองรับ NumPy 2.x, เชื่อมต่อกับ Python ได้ลึกขึ้น, รองรับ Named Arguments สำหรับอัลกอริทึม C++ เช่น cv.someAlgorithm(threshold=0.5) แทนการส่งค่าแบบเรียงลำดับพารามิเตอร์

Hardware acceleration

OpenCV 5 ปรับปรุง Hardware Acceleration Layer (HAL) ใหม่ โดยใช้ Universal Intrinsics 2.0 ซึ่งรองรับชุดคำสั่งหลากหลายแพลตฟอร์ม เช่น  SSE, AVX2/512, NEON, SVE, RVV และรองรับฮาร์ดแวร์เร่งความเร็วต่อไปนี้:

  • Intel IPP (IPPICV) – ได้รับการปรับโครงสร้างใหม่จากระบบเร่งความเร็ว x86/x64 เดิม มีชุดไลบรารีฟรี (ICV) รวมมาให้โดยค่าเริ่มต้น รองรับการเร่งความเร็วด้วย SSE และ AVX สำหรับงานต่างๆ เช่น การกรองภาพ (Filtering), การแปลงสี (Color Conversion), การแปลงเชิงเรขาคณิต (Geometric Transform)
  • Arm KleidiCV – HAL สำหรับแพลตฟอร์ม AArch64 ที่ใช้, NEON, SVE, SME เพื่อเร่งความเร็วการประมวลผลภาพและ DNN ผ่านการทดสอบบน AWS Graviton4 และ Arm Cortex-A ให้ประสิทธิภาพสูงขึ้นถึง 3-4 เท่าในงาน Resize และ Warp Image
  • Qualcomm FastCV – รองรับการเร่งความเร็วบนชิป Snapdragon ผ่าน Hexagon DSP และ NPU
  • RISC-V Vector (RVV) – รองรับการประมวลผลแบบเวกเตอร์ของสถาปัตยกรรม RISC-V ซึ่งได้รับการพัฒนาและผลักดันโดยทีม OpenCV China

IOpenCV จะเลือกใช้เส้นทางการประมวลผลที่เหมาะสมที่สุดกับฮาร์ดแวร์โดยอัตโนมัติ โดยที่นักพัฒนาไม่จำเป็นต้องแก้ไขโค้ดระดับสูง

ความสามารถด้าน 3D Vision ที่ดีขึ้น

OpenCV 5 เพิ่มความสามารถสำหรับงาน 3D Vision เช่น Multi-Camera Calibration, Point Cloud I/O, Mesh I/O และ Dense RGB-D Fusion โดยแบ่งเป็น 3 โมดูลหลัก:

  • 3d: ประกอบด้วย 3D Geometry,  Point Cloud, ICP และส่วนประกอบของ SLAM
  • calib: รองรับ Single Camera Calibration และ Multi-Camera Calibration Pipeline
  • stereo: สำหรับสร้างข้อมูลความลึก (Depth Estimation) จากกล้อง Stereo

นักพัฒนาระบุว่า OpenCV 5 เป็นการอัปเกรดครั้งสำคัญสำหรับงาน Structure from Motion (SfM), Robotics, 3D Reconstruction และ Spatial AI

สามารถดูรายละเอียดเกี่ยวกับ OpenCV 5 จากประกาศเปิดตัวและเว็บไซต์เอกสารประกอบที่ได้รับการปรับปรุงใหม่, ขณะที่ซอร์สโค้ดทั้งหมดถูกเผยแพร่บน GitHub แม้ในประกาศจะระบุว่า OpenCV 5 เวอร์ชันสำหรับ pip จะเปิดให้ใช้งานในวันที่ 8 มิถุนายน แต่ในขณะนี้ยังพบเพียงแพ็กเกจ OpenCV 4.13.0.92 เท่านั้น ดังนั้นผู้ที่ต้องการทดลองใช้งานในตอนนี้ยังจำเป็นต้องคอมไพล์จากซอร์สโค้ดเองก่อน

แปลภาษาไทย : OpenCV 5 release – New DNN engine with enhanced ONNX and LLM/VLM support, Intel, Arm, and RISC-V hardware optimizations

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
โฆษณา