Ultralytics YOLO27:
Get Started

Xuất Ultralytics YOLO sang NCNN#

Việc triển khai 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ư thiết bị di động hoặc hệ thống nhúng, đòi hỏi phải lựa chọn định dạng cẩn thận. Sử dụng định dạng được tối ưu hóa đảm bảo ngay cả những thiết bị có tài nguyên hạn chế 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 định dạng NCNN cho phép bạn tối ưu hóa 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 định dạng 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à 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 model deep learning lên các nền tảng di động, trở thành lựa chọn tuyệt vời để xây dựng ứng dụng tích hợp AI.

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

Model NCNN cung cấp một số tính năng chính hỗ trợ machine learning trên thiết bị, giúp nhà phát triển triển khai model trên thiết bị di động, thiết bị nhúng và thiết bị biên:

  • Hiệu quả và hiệu năng cao: Model NCNN có dung lượng nhẹ và được tối ưu hóa cho thiết bị di động và nhúng như Raspberry Pi có 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 của trọng số và activation của model nhằm cải thiện hiệu năng và giảm dung lượng bộ nhớ.

  • Khả năng tương thích: Model NCNN tương thích với các framework deep learning phổ biến, bao gồm TensorFlow, Caffe và ONNX, cho phép developer tận dụng các model và quy trình làm việc 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 định dạng, đả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 inference 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#

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 ứng dụng di động để inference hiệu quả ngay trên thiết bị.

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

  • Triển khai trên máy tính để bàn và máy chủ: Hỗ trợ triển khai trên Linux, Windows và macOS cho các quy trình phát triển, huấn luyện 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 inference hiệu năng cao trên nhiều loại GPU, bao gồm AMD, Intel và các card đồ họa không phải NVIDIA khác. Tính năng 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 GPU của nhiều nhà cung cấp.
  • Hệ thống nhiều GPU: Chọn một thiết bị Vulkan cụ thể trên hệ thống có nhiều GPU bằng cách sử dụng device="vulkan:0", device="vulkan:1", v.v.
  • Triển khai trên edge và máy tính để bàn: Tận dụng khả năng tăng tốc GPU trên các thiết bị không hỗ trợ CUDA.

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

Inference bằng Vulkan
from ultralytics import YOLO

# Tải model NCNN đã export
ncnn_model = YOLO("./yolo26n_ncnn_model")

# # Chạy inference với tính năng tăng tốc GPU bằng Vulkan (thiết bị Vulkan đầu tiên)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")

# # Sử dụng thiết bị Vulkan thứ hai trên hệ thống nhiều GPU
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")
Yêu cầu đối với Vulkan

Đảm bảo đã cài đặt driver Vulkan cho GPU. 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 Vulkan khả dụng bằng các công cụ như vulkaninfo trên Linux hoặc Vulkan SDK trên Windows.

Các tác vụ được hỗ trợ#

NCNN hỗ trợ xuất cho 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 model duy nhất có các head này.

Tác vụYOLOv8YOLO11YOLO26
Phát hiện✅✅✅
Phân đoạn✅✅✅
Ngữ nghĩa❌❌✅
Độ sâu❌❌✅
Phân loại✅✅✅
Tư thế✅✅✅
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 model YOLO26 sang định dạng NCNN.

Cài đặt#

Để cài đặt các package cần thiết, 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 tối ưu, 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 vấn đề 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 từ đầu, giúp bạn dễ dàng tích hợp chúng vào quy trình triển khai mong muốn. Bạn có thể xem danh sách đầy đủ các định dạng xuất được hỗ trợ và tùy chọn cấu hình để chọn thiết lập phù hợp nhất cho ứng dụng.

Định dạng NCNN hỗ trợ các chế độ Export, Predict và Validate. Hãy xuất model, sau đó tải model đã xuất để chạy inference hoặc xác thực độ chính xác.

Export
from ultralytics import YOLO

# Nạp model YOLO26
model = YOLO("yolo26n.pt")

# Export model sang định dạng NCNN
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
Dự đoán
from ultralytics import YOLO

# Tải model NCNN đã export
model = YOLO("./yolo26n_ncnn_model")

# Chạy suy luận
results = model("https://ultralytics.com/images/bus.jpg")
Xác thực
from ultralytics import YOLO

# Tải model NCNN đã export
model = YOLO("./yolo26n_ncnn_model")

# # Đánh giá độ chính xác trên bộ dữ liệu COCO8
metrics = model.val(data="coco8.yaml")

Các tham số xuất model#

Đối sốKiểuMặc địnhMô tả
formatstr'ncnn'Định dạng đích của model đã xuất, 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 đầu vào model. Có thể là số nguyên cho ảnh vuông hoặc tuple (height, width) để chỉ định 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 kích thước 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 đã lỗi thời.
batchint1Chỉ định kích thước batch suy luận của model khi xuất hoặc số lượng ảnh tối đa mà model đã xuất xử lý đồng thời ở chế độ predict.
devicestrNoneChỉ định thiết bị dùng để xuất: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps).

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

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

Sau khi xuất model Ultralytics YOLO26 sang định dạng NCNN, bạn có thể triển khai bằng phương thức YOLO("yolo26n_ncnn_model/") như minh họa 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: Xây dựng và tích hợp model NCNN để phát hiện đối tượng trong ứng dụng Android.

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

  • Linux: Triển khai 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 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 model Ultralytics YOLO26 sang định dạng NCNN để cải thiện hiệu quả và tốc độ trên các thiết bị có tài nguyên hạn chế.

Để biết thêm chi tiết, hãy tham khảo tài liệu chính thức của NCNN. Để 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.

Câu hỏi thường gặp#

  • Để xuất model Ultralytics YOLO26 sang định dạng NCNN:

    • Python: Sử dụng phương thức export của lớp YOLO.

      from ultralytics import YOLO
      
      # Nạp model YOLO26
      model = YOLO("yolo26n.pt")
      
      # # Xuất sang định dạng NCNN
      model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
    • CLI: Sử dụng lệnh 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 model Ultralytics YOLO26 sang NCNN mang lại một số lợi ích:

    • Hiệu quả: Model NCNN được tối ưu hóa cho thiết bị di động và thiết bị 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ớ.
    • Khả năng tương thích rộng: Bạn có thể triển khai 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 khả nă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 để tăng tốc inference.

    Để 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 và được tối ưu hóa chuyên biệt cho nền tảng di động. Các 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 nhiều nền tảng khác nhau dễ dàng hơn.
    • Hỗ trợ cộng đồng: Cộng đồng hỗ trợ tích cực đảm bảo NCNN liên tục được cải tiến và cập nhật.

    Để 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 linh hoạt và hỗ trợ nhiều nền tảng:

    • Thiết bị 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 định dạng NCNN như trình bày trong hướng dẫn Raspberry Pi của chúng tôi.

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

    1. Xây dựng cho Android: Làm theo hướng dẫn Xây dựng 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, giúp inference hiệu quả ngay trên thiết bị.

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

    Để xem thêm hướng dẫn nâng cao và các trường hợp sử dụng, hãy truy cập hướng dẫn triển khai của 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
    
    # # Tải model NCNN và chạy bằng GPU Vulkan
    model = YOLO("yolo26n_ncnn_model")
    results = model("image.jpg", device="vulkan:0")  # # Sử dụng thiết bị Vulkan đầu tiên

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

Bình luận