Giải pháp Ultralytics: Ứng dụng YOLO26 để giải quyết vấn đề trong thực tế#
Ultralytics Solutions cung cấp các ứng dụng tiên tiến của model YOLO, mang đến 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 nghề. Khám phá sức mạnh của YOLO26 qua các ứng dụng thực tiễn tạo ra tác động rõ rệt.

Xem: Cách chạy giải pháp Ultralytics từ dòng lệnh (CLI) | Ultralytics YOLO26 🚀
Giải pháp#
Sau đây là danh sách tuyển chọn các giải pháp Ultralytics có thể dùng để tạo những dự án thị giác máy tính tuyệt vời.
- Phân tích: Thực hiện phân tích dữ liệu toàn diện để khám phá các mẫu và đưa ra quyết định dựa trên thông tin, sử dụng YOLO26 cho phân tích mô tả, dự đoán và đề xuất hành động.
- Tính khoảng cách: Tính khoảng cách giữa các đối tượng bằng tâm 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 phát hiện để trực quan hóa cường độ dữ liệu trên một ma trận, cung cấp thông tin chuyên sâu rõ ràng cho các tác vụ thị giác máy tính.
- Phân đoạn đối tượng với theo dõi đối tượng: Triển khai phân đoạn instance và theo dõi đối tượng với YOLO26 để xác định ranh giới đối tượng chính xác và giám sát liên tục.
- Suy luận trực tiếp với Streamlit: Tận dụng sức mạnh của YOLO26 để thực hiện phát hiện đối tượng theo thời gian thực ngay 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 đối tượng chính xác trong luồng video trực tiếp.
- Đếm đối tượng trong vùng: Đếm đối tượng trong các vùng cụ thể bằng YOLO26 để phát hiện chính xác ở nhiều khu vực khác nhau.
- Cắt đối tượng: Nắm vững kỹ thuật cắt đối tượng bằng YOLO26 để trích xuất chính xác đối tượng từ hình ảnh và video.
- Quản lý bãi đỗ xe: Tổ chức và điều phối luồng phương tiện trong bãi đỗ 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 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 báo động an ninh: Tạo hệ thống báo động an ninh bằng YOLO26, hệ thống sẽ 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 OpenAI CLIP với tìm kiếm độ tương đồng cosine, hỗ trợ các truy vấn bằng 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, yếu tố quan trọng trong những ứng dụng như xe 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 vùng cụ thể của khung hình video bằng YOLO26 để giám sát chính xác và hiệu quả.
- Ánh nhìn VisionEye lập bản đồ đối tượng: Phát triển hệ thống mô phỏng cách mắt người tập trung vào các đối tượng cụ thể, nâng cao khả năng nhận biết và ưu tiên 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ể dục khác nhau theo thời gian thực.
Các tham số của Solutions#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
region | list hoặc dict | None | Các điểm xác định vùng quan tâm, dưới dạng danh sách tuple (x, y) hoặc từ điển ánh xạ tên vùng với danh sách điểm cho nhiều vùng (chỉ dùng RegionCounter). Khi là None, các giải pháp cần vùng sẽ dùng vùng mặc định được xác định trước. |
show_in | bool | True | Flag điều khiển việc hiển thị số lượt đi vào trên luồng video. |
show_out | bool | True | Flag điều khiển việc hiển thị số lượt đi 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 | Bảng màu dùng cho heatmap. |
line_width | int | 2 | Độ dày đường viền của box, keypoint và số đếm mà giải pháp vẽ. |
verbose | bool | True | Bật nhật ký theo từng frame của giải pháp, gồm shape đầu vào, số lượng class và tốc độ xử lý. Bản thân lệnh gọi tracking luôn không ghi nhật ký. |
json_file | str | None | Đường dẫn đến tệp JSON chứa toàn bộ dữ liệu tọa độ chỗ đỗ xe. |
up_angle | float | 145.0 | Ngưỡng góc cho tư thế 'lên'. |
kpts | list[int] | [6, 8, 10] | Danh sách ba chỉ số keypoint 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ể như vai, khuỷu tay và cổ tay, dành cho các bài tập như chống đẩy, kéo xà, squat và bài tập cơ bụng. |
down_angle | float | 90.0 | Ngưỡng góc cho tư thế 'xuống'. |
blur_ratio | float | 0.5 | Điều chỉnh tỷ lệ cường độ làm mờ, với giá trị trong phạm vi 0.1 - 1.0. |
crop_dir | str | 'cropped-detections' | Tên thư mục dùng để lưu các đối tượng phát hiện đã cắt. |
records | int | 5 | Tổng số đối tượng phát hiện cần đạt để kích hoạt email cảnh báo từ hệ thống an ninh. |
vision_point | tuple[int, int] | (20, 20) | Điểm mà VisionEye Solution sẽ theo dõi đối tượng và vẽ đường đi. |
source | str | None | Đường dẫn đến nguồn đầu vào (video, RTSP, v.v.). Chỉ sử dụng được với giao diện dòng lệnh (CLI) của Solutions. |
figsize | tuple[float, float] | (12.8, 7.2) | Kích thước hình tính bằng inch cho biểu đồ Analytics; (12.8, 7.2) hiển thị khung hình 1280×720. |
fps | float | 30.0 | Số khung hình 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 theo dõi cho mỗi đối tượng để tính tốc độ/hướng di chuyển. |
meter_per_pixel | float | 0.05 | Hệ số tỷ lệ dùng để chuyển đổi khoảng cách pixel sang đơn vị thực tế. |
max_speed | int | 120 | Tốc độ tối đa tính bằng km/h; các tốc độ ước tính cao hơn sẽ bị giới hạn ở giá trị này. |
data | str | 'images' | Đường dẫn đến thư mục ảnh dùng để tìm kiếm độ tương đồng. |
imgsz | int | 640 | Kích thước ảnh đầu vào dùng cho quá trình inference của model. |
Solutions chuyển các tham số suy luận và theo dõi dưới đây đến model.track().
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'tracktrack.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 | Đặt ngưỡng confidence cho các đối tượng được phát hiện; 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ả kết quả dương tính giả. |
iou | float | 0.7 | Đặt ngưỡng Intersection over Union (IoU) để lọc các đối tượng phát hiện bị chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ mục 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 để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn CPU, một GPU cụ thể hoặc thiết bị tính toán khác để chạy model. |
imgsz | int or tuple | 640 | Kích thước ảnh suy luận mục tiêu: số nguyên cho ảnh vuông hoặc cặp (height, width). Kích thước sẽ được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng đối tượng phát hiện tối đa được giữ lại trong mỗi khung hình trước khi theo dõi, giới hạn số đối tượng mà một giải pháp xử lý trong các cảnh dày đặc. |
quantize | int or str | None | Độ chính xác suy luận: 16 (FP16) hoặc 32/unset (FP32) cho model PyTorch và TorchScript khi chạy ngoài CPU; các định dạng khác sử dụng độ chính xác do artifact và runtime của chúng lựa chọn. Thay thế đối số half đã lỗi thời. |
Bạn có thể sử dụng show_conf, show_labels và các tham số khác đã đề cập để tùy chỉnh phần trực quan hóa.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị ảnh hoặc video đã được chú thích 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 phát triển hoặc kiểm thử. |
show_conf | bool | True | Hiển thị điểm confidence bên cạnh nhãn của mỗi detection. Cho biết mức độ chắc chắn của model đối với từng detection. |
show_labels | bool | True | Hiển thị nhãn cho mỗi detection trong đầu ra trực quan. Giúp nhận biết ngay các đối tượng được phát hiện. |
Sử dụng SolutionAnnotator#
Tất cả Ultralytics Solutions đều sử dụng class riêng SolutionAnnotator, mở rộng class chính Annotator và có các phương thức sau:
| Phương thức | 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 người trong hàng đợi ở vùng được chỉ định. |
display_analytics() | None | Hiển thị thống kê tổng quan về quản lý bãi đỗ xe. |
estimate_pose_angle() | float | Tính góc giữa ba điểm trong tư thế của một đối tượng. |
draw_specific_kpts() | np.ndarray | Vẽ các keypoint cụ thể lên hình ảnh. |
plot_workout_information() | int | Vẽ hộp văn bản có nhãn lê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 tâm và nối chúng bằng một đường thẳng. |
display_objects_labels() | None | Gắn nhãn class đối tượng cho 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 tâm các đố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 ở tâm của bounding box. |
Làm việc với SolutionResults#
Ngoại trừ Similarity Search, mỗi lần gọi Solution đều trả về một đối tượng SolutionResults.
- Đối với tác vụ đế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, # hiển thị đầu ra
region=region_points, # truyền các điểm của vùng
model="yolo26n.pt", # model="yolo26n-obb.pt" để đếm đối tượng bằng model OBB.
# classes=[0, 2], # đếm các class cụ thể, tức là person và car bằng model COCO pretrained.
# tracker="botsort.yaml" # Chọn tracker, ví dụ "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_countCác đối tượng SolutionResults có những thuộc tính sau:
| Thuộc tính | Kiểu | Mô tả |
|---|---|---|
plot_im | np.ndarray | Hình ảnh có các lớp phủ trực quan như số lượng, hiệu ứng làm mờ hoặc cải tiến dành riêng cho giải pháp. |
in_count | int | Tổng số đối tượng được phát hiện đi vào vùng đã xác định trong luồng video. |
out_count | int | Tổng số đối tượng được phát hiện đi ra khỏi vùng đã xác định trong luồng video. |
classwise_count | dict[str, dict[str, int] | int] | Số lượng theo từng class: {"IN": int, "OUT": int} cho ObjectCounter và Heatmap, hoặc int cho Analytics. |
queue_count | int | Số lượng đối tượng hiện đang ở trong khu vực xếp hàng hoặ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 lại bài tập của từng track từ AI Gym (mỗi cá thể hiện đang được theo dõi có một mục). |
workout_angle | list[float] | Góc bài tập của từng track từ AI Gym (mỗi cá thể hiệ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 của từng track từ AI Gym (mỗi cá thể hiệ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 để tính khoảng cách). |
available_slots | int | Số chỗ 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ố chỗ đã có xe 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 báo động an ninh). |
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 do người dùng xác định. |
speed_dict | Dict[int, int] | Từ điển tốc độ ước tính của từng track, tính bằng km/h và lấy từ SpeedEstimator, hữu ích cho việc phân tích vận tốc. |
total_crop_objects | int | Tổng số ảnh đối tượng đã cắt được tạo bởi giải pháp ObjectCropper. |
speed | Dict[str, float] | Từ điển chứa các chỉ số hiệu suất cho quá trình tracking và xử lý của 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 Solutions qua CLI#
Hầu hết Solutions 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à từ khóa 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 (không bắt buộc) 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 Solutions của chúng tôi#
Chúng tôi hoan nghênh đó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 mà các solutions của chúng tôi chưa đề cập, chúng tôi khuyến khích bạn chia sẻ chuyên môn của mình. Viết hướng dẫn là một 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 để biết cách mở Pull Request (PR) 🛠️. Chúng tôi mong chờ những đóng góp của bạn!
Hãy cùng hợp tác để hệ sinh thái Ultralytics YOLO trở nên mạnh mẽ và linh hoạt hơn 🙏!
Câu hỏi thường gặp#
Có thể sử dụng Ultralytics YOLO26 để đếm đối tượng theo thời gian thực bằng cách tận dụng các khả năng phát hiện đố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 để thiết lập YOLO26 phân tích luồng video trực tiếp. Chỉ cần cài đặt YOLO26, tải model và xử lý các frame video để đếm đối tượng một cách linh hoạt.
Ultralytics YOLO26 nâng cao hệ thống an ninh bằng cách cung cấp khả năng phát hiện đối tượng theo thời gian thực và cơ chế cảnh báo. Với YOLO26, bạn có thể tạo hệ thống báo động an ninh 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 báo động an ninh với YOLO26 để giám sát an ninh hiệu quả.
Ultralytics YOLO26 có thể cải thiện đáng kể hệ thống quản lý hàng đợi bằng cách đếm và theo dõi chính xác những người đang xếp 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 để tìm hiểu cách triển khai YOLO26 nhằm 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ả để theo dõi quá trình tập luyện bằng cách tracking và phân tích các bài tập thể chất theo thời gian thực. Nhờ đó, có thể đánh giá chính xác tư thế và hiệu suất tập luyện. Khám phá hướng dẫn Theo dõi quá trình tập luyện để tìm hiểu cách thiết lập hệ thống theo dõi tập luyện ứng dụng AI bằng YOLO26.
Ultralytics YOLO26 có thể tạo heatmap để 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ối quan tâm cao. Tính năng này đặc biệt hữu ích để hiểu các mẫu 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 Heatmap với YOLO26 để phân tích và trực quan hóa dữ liệu toàn diện.