Các giải pháp của Ultralytics: Ứng dụng YOLO26 để giải quyết các vấn đề trong thực tế#
Các giải pháp của Ultralytics cung cấp những ứng dụng tiên tiến của các model YOLO, mang đến các giải pháp thực tế như đếm đối tượng, làm mờ và hệ thống bảo mật, nâng cao hiệu quả và độ chính xác trong nhiều ngành. Khám phá sức mạnh của YOLO26 qua các triển khai thực tiễn, tạo ra tác động rõ rệt.

Watch: How to Run Ultralytics Solutions from the Command Line (CLI) | Ultralytics YOLO26 🚀
Giải pháp#
Dưới đây là danh sách được tuyển chọn các giải pháp của Ultralytics có thể dùng để xây dựng những dự án thị giác máy tính ấn tượng.
- Phân tích: Thực hiện phân tích dữ liệu toàn diện để phát hiện các pattern và đưa ra quyết định dựa trên thông tin, khai thác YOLO26 cho phân tích mô tả, dự đoán và đề xuất.
- Tính khoảng cách: Tính khoảng cách giữa các đối tượng bằng centroid của bounding box trong YOLO26, yếu tố thiết yếu cho phân tích không gian.
- Bản đồ nhiệt: Sử dụng bản đồ nhiệt detection để trực quan hóa cường độ dữ liệu trên một ma trận, cung cấp thông tin chi tiết rõ ràng trong các tác vụ thị giác máy tính.
- Phân đoạn instance với theo dõi đối tượng: Triển khai phân đoạn instance và theo dõi đối tượng bằng YOLO26 để xác định ranh giới đối tượng chính xác và giám sát liên tục.
- Inference trực tiếp với Streamlit: Khai thác sức mạnh của YOLO26 để thực hiện detection đối tượng theo thời gian thực trực tiếp trên trình duyệt web thông qua giao diện Streamlit thân thiện với người dùng.
- Làm mờ đối tượng: Áp dụng tính năng làm mờ đối tượng bằng YOLO26 để bảo vệ quyền riêng tư khi xử lý hình ảnh và video.
- Đếm đối tượng: Tìm hiểu cách đếm đối tượng theo thời gian thực bằng YOLO26. Nắm vững kỹ thuật đếm chính xác các đối tượng trong luồng video trực tiếp.
- Đếm đối tượng trong các vùng: Đếm đối tượng trong các vùng cụ thể bằng YOLO26 để detection chính xác ở nhiều khu vực khác nhau.
- Cắt đối tượng: Làm chủ việc cắt đối tượng bằng YOLO26 để trích xuất chính xác các đối tượng từ hình ảnh và video.
- Quản lý bãi đỗ xe: Tổ chức và điều hướng luồng phương tiện trong khu vực đỗ xe bằng YOLO26, tối ưu hóa việc sử dụng không gian và trải nghiệm người dùng.
- Quản lý hàng đợi: Triển khai các hệ thống quản lý hàng đợi hiệu quả để giảm thời gian chờ và cải thiện năng suất bằng YOLO26.
- Hệ thống cảnh báo bảo mật: Tạo hệ thống cảnh báo bảo mật bằng YOLO26, kích hoạt cảnh báo khi phát hiện đối tượng mới. Tùy chỉnh hệ thống theo nhu cầu cụ thể của bạn.
- Tìm kiếm tương đồng: Cho phép truy xuất hình ảnh thông minh bằng cách kết hợp embedding của OpenAI CLIP với tìm kiếm độ tương đồng cosine, hỗ trợ các truy vấn ngôn ngữ tự nhiên như "người đang cầm túi" hoặc "phương tiện đang di chuyển."
- Ước tính tốc độ: Ước tính tốc độ đối tượng bằng YOLO26 và các kỹ thuật theo dõi đối tượng, rất quan trọng đối với các ứng dụng như phương tiện tự hành và giám sát giao thông.
- Theo dõi đối tượng trong vùng: Tìm hiểu cách theo dõi đối tượng trong các zone cụ thể của khung hình video bằng YOLO26 để giám sát chính xác và hiệu quả.
- Lập bản đồ đối tượng theo góc nhìn VisionEye: Phát triển các hệ thống mô phỏng khả năng tập trung của mắt người vào những đối tượng cụ thể, nâng cao khả năng nhận biết và ưu tiên các chi tiết của máy tính.
- Giám sát bài tập: Khám phá cách giám sát bài tập bằng YOLO26. Tìm hiểu cách theo dõi và phân tích nhiều bài tập thể chất khác nhau theo thời gian thực.
Các tham số của giải pháp#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến file model Ultralytics YOLO. |
region | list hoặc dict | None | Các điểm xác định vùng quan tâm, có thể là một list các tuple (x, y) hoặc một dictionary ánh xạ tên vùng với list điểm cho nhiều vùng (chỉ dành cho RegionCounter). Khi None, các solution yêu cầu vùng sẽ sử dụng vùng mặc định được định nghĩa sẵn. |
show_in | bool | True | Cờ điều khiển việc hiển thị số lượng vào trên luồng video. |
show_out | bool | True | Cờ điều khiển việc hiển thị số lượng ra trên luồng video. |
analytics_type | str | 'line' | Loại biểu đồ, tức là line, bar, area hoặc pie. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Colormap dùng cho heatmap. |
line_width | int | 2 | Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ. |
verbose | bool | True | Bật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng. |
json_file | str | None | Đường dẫn đến file JSON chứa toàn bộ dữ liệu tọa độ bãi đỗ xe. |
up_angle | float | 145.0 | Ngưỡng góc cho tư thế 'lên'. |
kpts | list[int] | '[6, 8, 10]' | List gồm ba chỉ số keypoint được dùng để theo dõi bài tập. Các keypoint này tương ứng với khớp hoặc bộ phận cơ thể, chẳng hạn như vai, khuỷu tay và cổ tay, cho các bài tập như chống đẩy, kéo xà, squat và tập cơ bụng. |
down_angle | int | 90 | Ngưỡng góc cho tư thế 'xuống'. |
blur_ratio | float | 0.5 | Điều chỉnh phần trăm cường độ làm mờ, với các giá trị trong khoảng 0.1 - 1.0. |
crop_dir | str | 'cropped-detections' | Tên thư mục dùng để lưu các detection đã crop. |
records | int | 5 | Tổng số detection cần đạt để kích hoạt email cùng hệ thống cảnh báo an ninh. |
vision_point | tuple[int, int] | (20, 20) | Điểm mà VisionEye Solution sẽ dùng để tracking đối tượng và vẽ path. |
source | str | None | Đường dẫn đến nguồn input (video, RTSP, v.v.). Chỉ có thể sử dụng với giao diện dòng lệnh Solutions (CLI). |
figsize | tuple[float, float] | (12.8, 7.2) | Kích thước figure cho các biểu đồ phân tích như heatmap hoặc graph. |
fps | float | 30.0 | Số frame mỗi giây được dùng để tính tốc độ. |
max_hist | int | 5 | Số điểm lịch sử tối đa cần tracking trên mỗi đối tượng để tính tốc độ/hướng. |
meter_per_pixel | float | 0.05 | Hệ số scale dùng để chuyển đổi khoảng cách pixel sang đơn vị thực tế. |
max_speed | int | 120 | Giới hạn tốc độ tối đa trong các lớp phủ trực quan (được dùng trong alert). |
data | str | 'images' | Đường dẫn đến thư mục ảnh được dùng cho tìm kiếm độ tương đồng. |
imgsz | int | 640 | Kích thước ảnh input cho inference của model. |
Solutions chuyển tiếp các đối số inference và tracking bên dưới đến model.track().
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Chỉ định thuật toán theo dõi cần sử dụng. Các tùy chọn tích hợp sẵn: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Thiết lập ngưỡng độ tin cậy cho các detection; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm các false positive. |
iou | float | 0.7 | Thiết lập ngưỡng Intersection over Union (IoU) để lọc các detection chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ số class. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các class được chỉ định. |
device | str | None | Chỉ định thiết bị dùng cho inference (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để thực thi model. |
imgsz | int or tuple | 640 | Kích thước ảnh inference mục tiêu: một số nguyên cho ảnh vuông hoặc một cặp (height, width). Các hình dạng được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng detection tối đa được giữ lại trên mỗi frame trước khi tracking, giới hạn các đối tượng mà một solution xử lý trong các scene đông đúc. |
quantize | int or str | None | Độ chính xác inference: 16 (FP16) hoặc 32/không thiết lập (FP32) đối với các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Thay thế cờ half đã bị loại bỏ. |
Bạn có thể sử dụng show_conf, show_labels và các tham số khác đã đề cập để tùy chỉnh việc trực quan hóa.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị image hoặc video đã được annotate trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình development hoặc testing. |
show_conf | bool | True | Hiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection. |
show_labels | bool | True | Hiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện. |
Sử dụng SolutionAnnotator#
Tất cả các giải pháp của Ultralytics đều sử dụng class riêng biệt SolutionAnnotator, mở rộng class chính Annotator, và có các method sau:
| Method | Kiểu trả về | Mô tả |
|---|---|---|
draw_region() | None | Vẽ một vùng bằng các điểm, màu sắc và độ dày được chỉ định. |
queue_counts_display() | None | Hiển thị số lượng hàng đợi trong vùng được chỉ định. |
display_analytics() | None | Hiển thị các thống kê tổng quan về việc quản lý bãi đỗ xe. |
estimate_pose_angle() | float | Tính góc giữa ba điểm trong pose của đối tượng. |
draw_specific_kpts() | np.ndarray | Vẽ các keypoint cụ thể trên hình ảnh. |
plot_workout_information() | int | Vẽ hộp văn bản có nhãn trên hình ảnh. |
plot_angle_and_count_and_stage() | None | Trực quan hóa góc, số bước và giai đoạn để giám sát bài tập. |
plot_distance_and_line() | None | Hiển thị khoảng cách giữa các centroid và nối chúng bằng một đường thẳng. |
display_objects_labels() | None | Gắn nhãn class đối tượng vào các bounding box. |
sweep_annotator() | None | Trực quan hóa đường quét dọc và nhãn tùy chọn. |
visioneye() | None | Lập bản đồ và nối các centroid của đối tượng với một điểm "mắt" trực quan. |
adaptive_label() | None | Vẽ nhãn nền hình tròn hoặc hình chữ nhật ở giữa bounding box. |
Làm việc với SolutionResults#
Ngoại trừ Similarity Search, mỗi lệnh gọi Solution đều trả về một object SolutionResults.
- Đối với việc đếm đối tượng, kết quả bao gồm
in_count,out_countvàclasswise_count.
import cv2
from ultralytics import solutions
im0 = cv2.imread("path/to/img")
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo26n.pt", # model="yolo26n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes i.e. person and car with COCO pretrained model.
# tracker="botsort.yaml" # Choose trackers i.e "bytetrack.yaml"
)
results = counter(im0)
print(results.in_count) # display in_counts
print(results.out_count) # display out_counts
print(results.classwise_count) # display classwise_countObject SolutionResults có các thuộc tính sau:
| Thuộc tính | Kiểu | Mô tả |
|---|---|---|
plot_im | np.ndarray | Hình ảnh với các lớp phủ trực quan như số lượng, hiệu ứng làm mờ hoặc các cải tiến riêng của giải pháp. |
in_count | int | Tổng số đối tượng được detection khi đi vào vùng đã xác định trong luồng video. |
out_count | int | Tổng số đối tượng được detection khi đi ra khỏi vùng đã xác định trong luồng video. |
classwise_count | Dict[str, int] | Dictionary ghi lại số lượng đối tượng vào/ra theo từng class cho các phân tích nâng cao. |
queue_count | int | Số đối tượng hiện đang ở trong hàng đợi hoặc khu vực chờ được xác định trước (phù hợp cho quản lý hàng đợi). |
workout_count | list[int] | Số lần lặp bài tập theo từng track từ AI Gym (mỗi cá nhân đang được theo dõi có một mục). |
workout_angle | list[float] | Góc bài tập theo từng track từ AI Gym (mỗi cá nhân đang được theo dõi có một mục). |
workout_stage | list[str] | Giai đoạn bài tập hiện tại theo từng track từ AI Gym (mỗi cá nhân đang được theo dõi có một mục). |
pixels_distance | float | Khoảng cách tính theo pixel giữa hai đối tượng hoặc điểm, ví dụ như bounding box. (Phù hợp cho việc tính khoảng cách). |
available_slots | int | Số vị trí còn trống trong khu vực được giám sát (phù hợp cho quản lý bãi đỗ xe). |
filled_slots | int | Số vị trí đã sử dụng trong khu vực được giám sát. (phù hợp cho quản lý bãi đỗ xe) |
email_sent | bool | Cho biết email thông báo hoặc cảnh báo đã được gửi thành công hay chưa (phù hợp cho hệ thống cảnh báo bảo mật). |
total_tracks | int | Tổng số track đối tượng duy nhất được quan sát trong quá trình phân tích video. |
region_counts | Dict[str, int] | Số lượng đối tượng trong các vùng hoặc zone do người dùng xác định. |
speed_dict | Dict[str, float] | Dictionary tốc độ đối tượng được tính theo từng track, hữu ích cho phân tích vận tốc. |
total_crop_objects | int | Tổng số hình ảnh đối tượng đã cắt được tạo bởi giải pháp ObjectCropper. |
speed | Dict[str, float] | Dictionary chứa các metric hiệu suất cho việc theo dõi và xử lý giải pháp. |
Để biết thêm chi tiết, hãy tham khảo tài liệu về class SolutionResults.
Sử dụng giải pháp qua CLI#
Hầu hết các giải pháp có thể được sử dụng trực tiếp thông qua giao diện dòng lệnh.
Cú pháp
yolo SOLUTIONS SOLUTION_NAME ARGS
- SOLUTIONS là keyword bắt buộc.
- SOLUTION_NAME là một trong các giá trị sau:
['count', 'crop', 'blur', 'workout', 'heatmap', 'isegment', 'queue', 'speed', 'analytics', 'trackzone', 'inference', 'visioneye', 'region', 'security', 'parking']. - ARGS (tùy chọn) là các cặp
arg=valuetùy chỉnh, chẳng hạn nhưshow_in=True, dùng để ghi đè các thiết lập mặc định.
yolo solutions count show=True # for object counting
yolo solutions count source="path/to/video.mp4" # specify video file pathĐóng góp cho các giải pháp của chúng tôi#
Chúng tôi hoan nghênh những đóng góp từ cộng đồng! Nếu bạn đã thành thạo một khía cạnh cụ thể của Ultralytics YOLO nhưng khía cạnh đó chưa được đề cập trong các giải pháp của chúng tôi, chúng tôi khuyến khích bạn chia sẻ chuyên môn của mình. Viết một hướng dẫn là cách tuyệt vời để đóng góp cho cộng đồng và giúp chúng tôi làm cho tài liệu toàn diện, thân thiện với người dùng hơn.
Để bắt đầu, vui lòng đọc Hướng dẫn đóng góp của chúng tôi để biết hướng dẫn về cách mở một Pull Request (PR) 🛠️. Chúng tôi mong đợi những đóng góp của bạn!
Hãy cùng nhau làm cho hệ sinh thái Ultralytics YOLO mạnh mẽ và linh hoạt hơn 🙏!
FAQ#
Ultralytics YOLO26 có thể được sử dụng để đếm đối tượng theo thời gian thực bằng cách khai thác các khả năng detection đối tượng tiên tiến. Bạn có thể làm theo hướng dẫn chi tiết về Đếm đối tượng của chúng tôi để thiết lập YOLO26 cho việc phân tích luồng video trực tiếp. Chỉ cần cài đặt YOLO26, load model và xử lý các frame video để đếm đối tượng một cách linh hoạt.
Ultralytics YOLO26 nâng cao các hệ thống bảo mật bằng cách cung cấp detection đối tượng theo thời gian thực và cơ chế cảnh báo. Bằng cách sử dụng YOLO26, bạn có thể tạo một hệ thống cảnh báo bảo mật, kích hoạt cảnh báo khi phát hiện đối tượng mới trong khu vực giám sát. Tìm hiểu cách thiết lập Hệ thống cảnh báo bảo mật với YOLO26 để giám sát bảo mật mạnh mẽ.
Ultralytics YOLO26 có thể cải thiện đáng kể các hệ thống quản lý hàng đợi bằng cách đếm và theo dõi chính xác người trong hàng, qua đó giúp giảm thời gian chờ và tối ưu hóa hiệu quả dịch vụ. Làm theo hướng dẫn chi tiết về Quản lý hàng đợi của chúng tôi để tìm hiểu cách triển khai YOLO26 cho việc giám sát và phân tích hàng đợi hiệu quả.
Có, Ultralytics YOLO26 có thể được sử dụng hiệu quả để giám sát bài tập bằng cách theo dõi và phân tích các bài tập thể chất theo thời gian thực. Điều này cho phép đánh giá chính xác tư thế và hiệu suất tập luyện. Khám phá hướng dẫn về Giám sát bài tập của chúng tôi để tìm hiểu cách thiết lập hệ thống giám sát bài tập được hỗ trợ bởi AI bằng YOLO26.
Ultralytics YOLO26 có thể tạo bản đồ nhiệt để trực quan hóa cường độ dữ liệu trên một khu vực nhất định, làm nổi bật những vùng có mức độ hoạt động hoặc mức độ quan tâm cao. Tính năng này đặc biệt hữu ích để tìm hiểu các pattern và xu hướng trong nhiều tác vụ thị giác máy tính. Tìm hiểu thêm về cách tạo và sử dụng Bản đồ nhiệt với YOLO26 để phân tích và trực quan hóa dữ liệu toàn diện.