Trao quyền Ultralytics YOLOv5 đào tạo và triển khai mô hình với Neural Magic 's DeepSparse cho GPU -hiệu suất lớp trên CPU. Đạt được tốc độ nhanh hơn, có thể mở rộng YOLOv5 triển khai.
Muốn đẩy nhanh việc đào tạo và triển khai YOLOv5 Mô hình? Chúng tôi luôn sẵn sàng hỗ trợ bạn! Giới thiệu đối tác mới nhất của chúng tôi, Neural Magic. Như Neural Magic Cung cấp các công cụ phần mềm nhấn mạnh hiệu suất mô hình cao nhất và sự đơn giản của quy trình làm việc, điều tự nhiên là chúng tôi đã cùng nhau đưa ra giải pháp để tạo ra YOLOv5 Quá trình triển khai thậm chí còn tốt hơn.
DeepSparse là Neural Magic's CPU Inference Runtime, tận dụng lợi thế của số học thưa thớt và độ chính xác thấp trong các mạng thần kinh để cung cấp hiệu suất vượt trội trên phần cứng hàng hóa. Ví dụ, so với ONNX Đường cơ sở thời gian chạy, DeepSparse cung cấp tốc độ tăng gấp 5,8 lần cho YOLOv5 chạy trên cùng một máy!
Lần đầu tiên, khối lượng công việc deep learning của bạn có thể đáp ứng nhu cầu hiệu năng của sản xuất mà không cần sự phức tạp và chi phí của bộ tăng tốc phần cứng. Nói một cách đơn giản, DeepSparse cung cấp cho bạn hiệu suất của GPU và sự đơn giản của phần mềm:
DeepSparse tận dụng sự thưa thớt của mô hình để tăng tốc hiệu suất của nó.
Thưa thớt hóa thông qua cắt tỉa và lượng tử hóa cho phép giảm kích thước và tính toán cần thiết để thực thi mạng trong khi vẫn duy trì độ chính xác cao. DeepSparse nhận biết thưa thớt, bỏ qua phép nhân cộng bằng 0 và thu hẹp lượng tính toán trong một đường chuyền về phía trước. Vì tính toán thưa thớt bị ràng buộc bộ nhớ, DeepSparse thực thi độ sâu mạng, chia nhỏ vấn đề thành Tensor Cột, là các sọc tính toán dọc phù hợp với bộ nhớ cache.
Các mạng thưa thớt với tính toán nén, được thực thi theo chiều sâu trong bộ nhớ cache, cho phép DeepSparse phân phối GPU-hiệu suất lớp trên CPU!
Neural MagicKho lưu trữ mô hình mã nguồn mở của SparseZoo, chứa các điểm kiểm tra thưa thớt trước của mỗi YOLOv5 mẫu. Sử dụng SparseML, được tích hợp với Ultralytics, bạn có thể tinh chỉnh một điểm kiểm tra thưa thớt trên dữ liệu của mình bằng một điểm kiểm tra duy nhất CLI lệnh.
Kiểm tra lại Neural Magic's YOLOv5 Tài liệu để biết thêm chi tiết.
Chạy như sau để cài đặt DeepSparse. Chúng tôi khuyên bạn nên sử dụng môi trường ảo với Python.
pip cài đặt deepsparse[máy chủ,yolo,onnxruntime]
DeepSparse chấp nhận một mô hình trong ONNX định dạng, được thông qua dưới dạng:
Chúng tôi sẽ so sánh YOLOv5 dày đặc tiêu chuẩn với YOLOv5 lượng tử hóa được cắt tỉa, được xác định bởi các sơ khai SparseZoo sau:
Sở thú: CV / Phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none
Sở thú: CV / Phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
DeepSparse cung cấp các API thuận tiện để tích hợp mô hình của bạn vào một ứng dụng.
Để thử các ví dụ triển khai bên dưới, hãy kéo xuống một hình ảnh mẫu cho ví dụ và lưu dưới dạng basilica.jpg bằng lệnh sau:
wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpg
Pipeline bọc tiền xử lý và xử lý hậu kỳ đầu ra trong suốt thời gian chạy, cung cấp giao diện sạch để thêm DeepSparse vào ứng dụng. The DeepSparse-Ultralytics tích hợp bao gồm một Pipeline out-of-the-box chấp nhận hình ảnh thô và xuất ra các hộp giới hạn.
Tạo Pipeline và chạy suy luận:
từ đường ống nhập khẩu thưa thớt
# Danh sách hình ảnh trong hệ thống tệp cục bộ
hình ảnh = ["basilica.jpg"]
# tạo Pipeline
model_stub = "sở thú:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
nhiệm vụ = "yolo",
model_path=model_stub,
)
# Chạy suy luận trên hình ảnh, nhận hộp giới hạn + lớp
pipeline_outputs = yolo_pipeline(hình ảnh = hình ảnh, iou_thres = 0,6, conf_thres = 0,001)
in(pipeline_outputs)
Nếu bạn đang chạy trên đám mây, bạn có thể gặp lỗi open-cv không thể tìm thấy libGL.so.1. Chạy phần sau trên Ubuntu sẽ cài đặt nó:
apt-get cài đặt libgl1-mesa-glx
DeepSparse Server chạy trên khung web FastAPI phổ biến và máy chủ web Uvicorn. Chỉ với một đĩa đơn CLI lệnh, bạn có thể dễ dàng thiết lập điểm cuối dịch vụ mô hình với DeepSparse. Máy chủ hỗ trợ bất kỳ Pipeline nào từ DeepSparse, bao gồm phát hiện đối tượng với YOLOv5, cho phép bạn gửi ảnh thô đến điểm cuối và nhận các hộp giới hạn.
Quay Máy chủ với YOLOv5s lượng tử hóa được cắt tỉa:
deepsparse.server \
--nhiệm vụ yolo \
--model_path sở thú: CV / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
Một yêu cầu ví dụ, sử dụng PythonGói yêu cầu:
import requests, JSON
# danh sách hình ảnh để suy luận (tệp cục bộ ở phía máy khách)
đường dẫn = ['basilica.jpg']
files = [('request', open(img, 'rb')) cho img trong đường dẫn]
# gửi yêu cầu qua HTTP đến điểm cuối /predict/from_files
URL = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post (url = url, tệp = tệp)
# response được trả về trong JSON
Chú thích = json.loads(resp.text) # Từ điển kết quả chú thích
bounding_boxes = chú thích["hộp"]
labels = chú thích["labels"]
Bạn cũng có thể sử dụng lệnh annotate để công cụ lưu ảnh có chú thích trên đĩa. Hãy thử --source 0 để chú thích nguồn cấp dữ liệu webcam trực tiếp của bạn!
deepsparse.object_detection.chú thích --model_filepath sở thú:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --nguồn basilica.jpg
Chạy lệnh trên sẽ tạo một thư mục annotation-results và lưu hình ảnh được chú thích vào bên trong.
Sử dụng tập lệnh đo điểm chuẩn của DeepSparse, chúng ta sẽ so sánh thông lượng của DeepSparse với ONNX Thông lượng thời gian chạy trên YOLOv5s.
Điểm chuẩn được chạy trên phiên bản AWS c6i.8xlarge (16 lõi).
Tại đợt 32, ONNX Thời gian chạy đạt được 42 hình ảnh / giây với YOLOv5s dày đặc tiêu chuẩn:
deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime
> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Kích thước lô: 32
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 41,9025
Mặc dù DeepSparse cung cấp hiệu suất tốt nhất với các mô hình thưa thớt được tối ưu hóa, nhưng nó cũng hoạt động tốt với YOLOv5 dày đặc tiêu chuẩn.
Ở lô 32, DeepSparse đạt được 70 hình ảnh / giây với YOLOv5s dày đặc tiêu chuẩn — cải thiện hiệu suất gấp 1,7 lần so với ORT!
deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none -s đồng bộ hóa -b 32 -nstreams 1
> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Kích thước lô: 32
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 69,5546
Khi sự thưa thớt được áp dụng cho mô hình, hiệu suất của DeepSparse sẽ tăng lên ONNX Thời gian chạy thậm chí còn mạnh hơn.
Ở lô 32, DeepSparse đạt được 241 hình ảnh / giây với YOLOv5s lượng tử hóa được cắt tỉa — cải thiện hiệu suất gấp 5,8 lần so với ORT!
deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s đồng bộ hóa -b 32 -nstreams 1
> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Kích thước lô: 32
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 241,2452
DeepSparse cũng có thể tăng tốc ONNX Thời gian chạy cho kịch bản lô 1, nhạy cảm với độ trễ.
Ở đợt 1, ONNX Thời gian chạy đạt được 48 hình ảnh / giây với YOLOv5s tiêu chuẩn, dày đặc.
deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime
> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Kích thước lô: 1
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 48,0921
Khi sự thưa thớt được áp dụng cho mô hình, hiệu suất của DeepSparse sẽ tăng lên ONNX Thời gian chạy thậm chí còn mạnh hơn.
Ở đợt 1, DeepSparse đạt được 135 hình ảnh / giây với YOLOv5s lượng tử hóa được cắt tỉa—Cải thiện hiệu suất gấp 2,8 lần so với ONNX Runtime!
deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s đồng bộ hóa -b 32 -nstreams 1
> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Kích thước lô: 1
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 134,9468
Vì các phiên bản c6i.8xlarge có lệnh VNNI, thông lượng của DeepSparse có thể được đẩy xa hơn nếu trọng số được cắt tỉa theo khối 4.
Ở đợt 1, DeepSparse đạt được 180 vật phẩm / giây với YOLOv5s được cắt tỉa 4 khối—Tăng hiệu suất gấp 3,7 lần ONNX Runtime!
deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1
> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni
> Kích thước lô: 1
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 179,7375
Và thì đấy! Bạn đã sẵn sàng Tối ưu hóa YOLOv5 triển khai với DeepSparse.
Để liên lạc với chúng tôi, hãy tham gia cộng đồng của chúng tôi và để lại cho chúng tôi câu hỏi và nhận xét của bạn. Kiểm tra các Ultralytics YOLOv5 kho lưu trữ và đầy đủ Neural Magic Tài liệu để triển khai YOLOv5.
Tại Ultralytics, chúng tôi hợp tác thương mại với các công ty khởi nghiệp khác để giúp chúng tôi tài trợ cho việc nghiên cứu và phát triển các công cụ nguồn mở tuyệt vời của chúng tôi, như YOLOv5, để giữ chúng miễn phí cho tất cả mọi người. Bài viết này có thể chứa các liên kết liên kết đến các đối tác đó.
Bắt đầu hành trình của bạn với tương lai của machine learning