Ultralytics YOLO27:

Xuất Ultralytics YOLO sang NCNN#

Triển khai các model thị giác máy tính trên các thiết bị có năng lực tính toán hạn chế, chẳng hạn như hệ thống di động hoặc nhúng, đòi hỏi lựa chọn format cẩn thận. Sử dụng format được tối ưu hóa đảm bảo rằng ngay cả các thiết bị bị giới hạn tài nguyên cũng có thể xử lý hiệu quả các tác vụ thị giác máy tính nâng cao.

Xuất sang format NCNN cho phép bạn tối ưu hóa các model Ultralytics YOLO26 cho các ứng dụng nhẹ chạy trên thiết bị. Hướng dẫn này trình bày cách chuyển đổi model sang format NCNN để cải thiện hiệu năng trên thiết bị di động và nhúng.

Tại sao nên xuất sang NCNN?#

NCNN high-performance neural network inference framework

Framework NCNN, do Tencent phát triển, là một framework tính toán suy luận mạng nơ-ron hiệu năng cao, được tối ưu hóa riêng cho các nền tảng di động, bao gồm điện thoại di động, thiết bị nhúng và thiết bị IoT. NCNN tương thích với nhiều nền tảng, bao gồm Linux, Android, iOS và macOS.

NCNN nổi tiếng với tốc độ xử lý nhanh trên CPU di động và cho phép triển khai nhanh các model deep learning lên các nền tảng di động, khiến đây trở thành lựa chọn tuyệt vời để xây dựng các ứng dụng được hỗ trợ bởi AI.

Các tính năng chính của model NCNN#

Các model NCNN cung cấp nhiều tính năng chính hỗ trợ machine learning trên thiết bị, giúp developer triển khai model trên thiết bị di động, nhúng và edge:

  • Hiệu quả và hiệu năng cao: Các model NCNN có kích thước nhỏ và được tối ưu hóa cho các thiết bị di động và nhúng như Raspberry Pi với tài nguyên hạn chế, đồng thời vẫn duy trì độ chính xác cao trong các tác vụ thị giác máy tính.

  • Lượng tử hóa: NCNN hỗ trợ lượng tử hóa, một kỹ thuật làm giảm độ chính xác số của các trọng số và activation của model để cải thiện hiệu năng và giảm dung lượng bộ nhớ.

  • Tính tương thích: Các model NCNN tương thích với các framework deep learning phổ biến, bao gồm TensorFlow, CaffeONNX, cho phép developer tận dụng các model và workflow hiện có.

  • Dễ sử dụng: NCNN cung cấp các công cụ thân thiện với người dùng để chuyển đổi model giữa các format, đảm bảo khả năng tương tác liền mạch giữa các môi trường phát triển khác nhau.

  • Tăng tốc GPU bằng Vulkan: NCNN hỗ trợ Vulkan để tăng tốc suy luận bằng GPU trên nhiều nhà cung cấp, bao gồm AMD, Intel và các GPU không phải NVIDIA khác, cho phép triển khai hiệu năng cao trên nhiều loại phần cứng hơn.

Các tùy chọn triển khai với NCNN#

Các model NCNN tương thích với nhiều nền tảng triển khai:

  • Triển khai trên thiết bị di động: Được tối ưu hóa cho Android và iOS, cho phép tích hợp liền mạch vào các ứng dụng di động để thực hiện suy luận hiệu quả trên thiết bị.

  • Hệ thống nhúng và thiết bị IoT: Lý tưởng cho các thiết bị bị giới hạn tài nguyên như Raspberry Pi và NVIDIA Jetson. Nếu suy luận tiêu chuẩn trên Raspberry Pi theo Hướng dẫn Ultralytics không đủ, NCNN có thể mang lại cải thiện hiệu năng đáng kể.

  • Triển khai trên desktop và server: Hỗ trợ triển khai trên Linux, Windows và macOS cho các workflow phát triển, training và đánh giá.

Tăng tốc GPU bằng Vulkan#

NCNN hỗ trợ tăng tốc GPU thông qua Vulkan, cho phép suy luận hiệu năng cao trên nhiều GPU, bao gồm AMD, Intel và các card đồ họa không phải NVIDIA khác. Điều này đặc biệt hữu ích cho:

  • Hỗ trợ GPU đa nhà cung cấp: Không giống CUDA, vốn chỉ giới hạn ở GPU NVIDIA, Vulkan hoạt động trên nhiều nhà cung cấp GPU.
  • Hệ thống đa GPU: Chọn một thiết bị Vulkan cụ thể trong các hệ thống có nhiều GPU bằng device="vulkan:0", device="vulkan:1", v.v.
  • Triển khai edge và desktop: Tận dụng tăng tốc GPU trên các thiết bị không hỗ trợ CUDA.

Để sử dụng tăng tốc Vulkan, hãy chỉ định thiết bị Vulkan khi chạy suy luận:

Suy luận Vulkan
from ultralytics import YOLO

# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")

# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")

# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")
Yêu cầu đối với Vulkan

Đảm bảo bạn đã cài đặt driver Vulkan cho GPU của mình. Hầu hết driver GPU hiện đại đều tích hợp sẵn hỗ trợ Vulkan. Bạn có thể xác minh khả năng hỗ trợ Vulkan bằng các công cụ như vulkaninfo trên Linux hoặc Vulkan SDK trên Windows.

Các Task được hỗ trợ#

Xuất NCNN hỗ trợ cả bảy tác vụ của Ultralytics. Phân đoạn ngữ nghĩa và ước tính độ sâu chỉ khả dụng với YOLO26, dòng duy nhất được cung cấp các head đó.

TaskYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Xuất sang NCNN: Chuyển đổi model YOLO26#

Bạn có thể mở rộng khả năng tương thích của model và tính linh hoạt khi triển khai bằng cách chuyển đổi các model YOLO26 sang format NCNN.

Cài đặt#

Để cài đặt các package bắt buộc, hãy chạy:

Cài đặt
# Install the required package for YOLO26
pip install ultralytics

Để xem hướng dẫn chi tiết và các phương pháp hay nhất, hãy tham khảo hướng dẫn cài đặt Ultralytics. Nếu gặp khó khăn, hãy xem hướng dẫn Các sự cố thường gặp để tìm giải pháp.

Cách sử dụng#

Tất cả model Ultralytics YOLO26 đều được thiết kế để hỗ trợ xuất ngay khi cài đặt, giúp dễ dàng tích hợp vào quy trình triển khai mà bạn lựa chọn. Bạn có thể xem danh sách đầy đủ các định dạng xuất và tùy chọn cấu hình được hỗ trợ để chọn thiết lập phù hợp nhất cho ứng dụng của mình.

Format NCNN hỗ trợ các mode Export, PredictValidate. Hãy xuất model, sau đó load model đã xuất để chạy suy luận hoặc xác thực độ chính xác.

Export
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
Predict
from ultralytics import YOLO

# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Validate
from ultralytics import YOLO

# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Đối số Export#

Đối sốKiểuMặc địnhMô tả
formatstr'ncnn'Định dạng đích của model đã export, xác định khả năng tương thích với nhiều môi trường triển khai.
imgszint hoặc tuple640Kích thước ảnh mong muốn cho input của model. Có thể là một số nguyên đối với ảnh vuông hoặc một tuple (height, width) cho các kích thước cụ thể.
quantizeint hoặc strNoneĐộ chính xác lượng tử hóa: 16 (FP16) giảm một nửa trọng số đã xuất; 32/không đặt sẽ xuất trọng số FP32, nhưng runtime CPU của NCNN vẫn tính toán ở FP16 theo mặc định khi phần cứng hỗ trợ. Thay thế flag half đã deprecated.
batchint1Chỉ định batch inference size của model export hoặc số image tối đa mà model đã export sẽ xử lý đồng thời trong mode predict.
devicestrNoneChỉ định thiết bị dùng để export: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps).

Để biết thêm chi tiết về quy trình export, hãy truy cập trang tài liệu Ultralytics về export.

Triển khai các model YOLO26 NCNN đã xuất#

Sau khi xuất các model Ultralytics YOLO26 sang format NCNN, bạn có thể triển khai chúng bằng phương thức YOLO("yolo26n_ncnn_model/") như trong ví dụ sử dụng ở trên. Để xem hướng dẫn triển khai theo từng nền tảng, hãy tham khảo các tài nguyên sau:

  • Android: Build và tích hợp các model NCNN để phát hiện đối tượng trong các ứng dụng Android.

  • macOS: Triển khai các model NCNN trên hệ thống macOS.

  • Linux: Triển khai các model NCNN trên thiết bị Linux, bao gồm Raspberry Pi và các hệ thống nhúng tương tự.

  • Windows x64: Triển khai các model NCNN trên Windows x64 bằng Visual Studio.

Tóm tắt#

Hướng dẫn này đã trình bày cách xuất các model Ultralytics YOLO26 sang format NCNN để cải thiện hiệu quả và tốc độ trên các thiết bị bị giới hạn tài nguyên.

Để biết thêm chi tiết, hãy tham khảo tài liệu NCNN chính thức. Để xem các tùy chọn xuất khác, hãy truy cập trang hướng dẫn tích hợp của chúng tôi.

FAQ#

  • Để xuất model Ultralytics YOLO26 sang format NCNN:

    • Python: Sử dụng phương thức export từ class YOLO.

      from ultralytics import YOLO
      
      # Load a YOLO26 model
      model = YOLO("yolo26n.pt")
      
      # Export to NCNN format
      model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
    • CLI: Sử dụng command yolo export.

      yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

    Để xem các tùy chọn xuất chi tiết, hãy tham khảo tài liệu Export.

  • Xuất các model Ultralytics YOLO26 sang NCNN mang lại một số lợi ích:

    • Hiệu quả: Các model NCNN được tối ưu hóa cho thiết bị di động và nhúng, đảm bảo hiệu năng cao ngay cả khi tài nguyên tính toán hạn chế.
    • Lượng tử hóa: NCNN hỗ trợ các kỹ thuật như lượng tử hóa, giúp tăng tốc model và giảm mức sử dụng bộ nhớ.
    • Tính tương thích rộng: Bạn có thể triển khai các model NCNN trên nhiều nền tảng, bao gồm Android, iOS, Linux và macOS.
    • Tăng tốc GPU bằng Vulkan: Tận dụng tăng tốc GPU trên AMD, Intel và các GPU không phải NVIDIA khác thông qua Vulkan để suy luận nhanh hơn.

    Để biết thêm chi tiết, hãy xem phần Tại sao nên xuất sang NCNN?.

  • NCNN, do Tencent phát triển, được tối ưu hóa riêng cho các nền tảng di động. Những lý do chính để sử dụng NCNN gồm:

    • Hiệu năng cao: Được thiết kế để xử lý hiệu quả và nhanh chóng trên CPU di động.
    • Đa nền tảng: Tương thích với các framework phổ biến như TensorFlow và ONNX, giúp chuyển đổi và triển khai model trên các nền tảng khác nhau dễ dàng hơn.
    • Hỗ trợ cộng đồng: Cộng đồng tích cực đảm bảo các cải tiến và bản cập nhật liên tục.

    Để biết thêm thông tin, hãy xem phần Các tính năng chính của model NCNN.

  • NCNN có tính linh hoạt cao và hỗ trợ nhiều nền tảng:

    • Di động: Android, iOS.
    • Hệ thống nhúng và thiết bị IoT: Các thiết bị như Raspberry Pi và NVIDIA Jetson.
    • Máy tính để bàn và máy chủ: Linux, Windows và macOS.

    Để cải thiện hiệu năng trên Raspberry Pi, hãy cân nhắc sử dụng format NCNN như được trình bày trong Hướng dẫn Raspberry Pi của chúng tôi.

  • Để triển khai các model YOLO26 trên Android:

    1. Build cho Android: Làm theo hướng dẫn Build NCNN cho Android.
    2. Tích hợp với ứng dụng: Sử dụng NCNN Android SDK để tích hợp model đã xuất vào ứng dụng nhằm thực hiện suy luận hiệu quả trên thiết bị.

    Để xem hướng dẫn chi tiết, hãy tham khảo Triển khai các model YOLO26 NCNN đã xuất.

    Để xem các hướng dẫn nâng cao và trường hợp sử dụng khác, hãy truy cập hướng dẫn triển khai Ultralytics.

  • NCNN hỗ trợ Vulkan để tăng tốc GPU trên AMD, Intel và các GPU không phải NVIDIA khác. Để sử dụng Vulkan:

    from ultralytics import YOLO
    
    # Load NCNN model and run with Vulkan GPU
    model = YOLO("yolo26n_ncnn_model")
    results = model("image.jpg", device="vulkan:0")  # Use first Vulkan device

    Đối với hệ thống đa GPU, hãy chỉ định index của thiết bị, ví dụ vulkan:1 cho GPU thứ hai. Đảm bảo driver Vulkan đã được cài đặt cho GPU của bạn. Xem phần Tăng tốc GPU bằng Vulkan để biết thêm chi tiết.

Bình luận