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, และปรับปรุงประสิทธิภาพการประมวลผลให้ดียิ่งขึ้น
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

เปรียบเทียบ 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
ผลการทดสอบบนเครื่องที่ใช้ Intel Core i9-14900KS และ Ubuntu 24.04 LTS แสดงให้เห็นว่า OpenCV 5 สามารถทำงานได้เร็วกว่า ONNX Runtime ในหลายโมเดล
| โมเดล | OpenCV 5 (ms) | ONNX Runtime (ms) | ผลต่าง |
|---|---|---|---|
| XFeat | 6.56 | 8.61 | เร็วกว่า 31.25% |
| YOLOv8n | 10.9 | 12.15 | เร็วกว่า 11.5% |
| YOLOX-S | 23.46 | 25.16 | เร็วกว่า 7.24% |
| DINOv2 Small | 23.78 | 29.58 | เร็วกว่า 24.4% |
| RF-DETR | 102.01 | 106.49 | เร็วกว่า 4.4% |
| OWLv2 | 1,090 | 1,489 | เร็วกว่า 36.6% |
| BiRefNet | 7,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 เท่านั้น ดังนั้นผู้ที่ต้องการทดลองใช้งานในตอนนี้ยังจำเป็นต้องคอมไพล์จากซอร์สโค้ดเองก่อน

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT


