Cắt đối tượng bằng cách sử dụng Ultralytics YOLO11
Cắt đối tượng là gì?
Cắt đối tượng bằng Ultralytics YOLO11 bao gồm việc cô lập và trích xuất các đối tượng cụ thể được phát hiện từ hình ảnh hoặc video. YOLO11 Khả năng của mô hình được sử dụng để xác định và phân định chính xác các đối tượng, cho phép cắt xén chính xác để phân tích hoặc thao tác thêm.
Đồng hồ: Cắt đối tượng bằng cách sử dụng Ultralytics YOLO
Ưu điểm của việc cắt đối tượng?
- Phân tích tập trung : YOLO11 hỗ trợ cắt đối tượng mục tiêu, cho phép kiểm tra hoặc xử lý chuyên sâu từng mục riêng lẻ trong một cảnh.
- Giảm khối lượng dữ liệu : Bằng cách chỉ trích xuất các đối tượng có liên quan, việc cắt đối tượng giúp giảm thiểu kích thước dữ liệu, giúp lưu trữ, truyền tải hoặc thực hiện các tác vụ tính toán tiếp theo hiệu quả hơn.
- Độ chính xác được cải thiện : YOLO11 Độ chính xác phát hiện đối tượng đảm bảo rằng các đối tượng được cắt vẫn duy trì mối quan hệ không gian của chúng, bảo toàn tính toàn vẹn của thông tin hình ảnh để phân tích chi tiết.
Hình ảnh
Hành lý sân bay |
---|
Vali Cắt tại băng chuyền sân bay sử dụng Ultralytics YOLO11 |
Cắt đối tượng bằng cách sử dụng YOLO11 Ví dụ
import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolo11n.pt")
names = model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
os.mkdir(crop_dir_name)
# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
idx = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0, show=False)
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
annotator = Annotator(im0, line_width=2, example=names)
if boxes is not None:
for box, cls in zip(boxes, clss):
idx += 1
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)
cv2.imshow("ultralytics", im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Lập luận model.predict
Lý lẽ | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Chỉ định nguồn dữ liệu để suy luận. Có thể là đường dẫn hình ảnh, tệp video, thư mục, URL hoặc ID thiết bị cho nguồn cấp dữ liệu trực tiếp. Hỗ trợ nhiều định dạng và nguồn, cho phép ứng dụng linh hoạt trên nhiều loại đầu vào khác nhau . |
conf |
float |
0.25 |
Đặt ngưỡng tin cậy tối thiểu cho các phát hiện. Các đối tượng được phát hiện với độ tin cậy dưới ngưỡng này sẽ bị bỏ qua. Điều chỉnh giá trị này có thể giúp giảm các kết quả dương tính giả. |
iou |
float |
0.7 |
Ngưỡng Giao điểm qua Liên hợp (IoU) cho Không triệt tiêu tối đa (NMS). Các giá trị thấp hơn dẫn đến ít phát hiện hơn bằng cách loại bỏ các hộp chồng chéo, hữu ích để giảm trùng lặp. |
imgsz |
int or tuple |
640 |
Xác định kích thước hình ảnh để suy luận. Có thể là một số nguyên duy nhất 640 để thay đổi kích thước hình vuông hoặc một bộ (chiều cao, chiều rộng). Kích thước phù hợp có thể cải thiện khả năng phát hiện sự chính xác và tốc độ xử lý. |
half |
bool |
False |
Cho phép suy luận bán chính xác (FP16), có thể tăng tốc suy luận mô hình trên GPU được hỗ trợ với tác động tối thiểu đến độ chính xác. |
device |
str |
None |
Chỉ định thiết bị để suy luận (ví dụ: cpu , cuda:0 hoặc 0 ). Cho phép người dùng lựa chọn giữa CPU , một cụ thể GPU hoặc các thiết bị tính toán khác để thực hiện mô hình. |
batch |
int |
1 |
Chỉ định kích thước lô để suy luận (chỉ hoạt động khi nguồn là một thư mục, tập tin video hoặc .txt tài liệu). Kích thước lô lớn hơn có thể cung cấp thông lượng cao hơn, rút ngắn tổng thời gian cần thiết cho quá trình suy luận. |
max_det |
int |
300 |
Số lượng phát hiện tối đa được phép trên mỗi hình ảnh. Giới hạn tổng số đối tượng mà mô hình có thể phát hiện trong một suy luận duy nhất, ngăn chặn đầu ra quá mức trong các cảnh dày đặc. |
vid_stride |
int |
1 |
Bước nhảy khung hình cho đầu vào video. Cho phép bỏ qua các khung hình trong video để tăng tốc độ xử lý với chi phí là độ phân giải thời gian. Giá trị 1 xử lý mọi khung hình, giá trị cao hơn bỏ qua các khung hình. |
stream_buffer |
bool |
False |
Xác định xem có nên xếp hàng các khung hình đến cho luồng video hay không. Nếu False , các khung cũ bị loại bỏ để chứa các khung mới (được tối ưu hóa cho các ứng dụng thời gian thực). Nếu `Đúng', xếp hàng các khung mới trong bộ đệm, đảm bảo không có khung nào bị bỏ qua, nhưng sẽ gây ra độ trễ nếu FPS suy luận thấp hơn FPS luồng. |
visualize |
bool |
False |
Kích hoạt khả năng trực quan hóa các tính năng của mô hình trong quá trình suy luận, cung cấp thông tin chi tiết về những gì mô hình đang "nhìn thấy". Hữu ích cho việc gỡ lỗi và diễn giải mô hình. |
augment |
bool |
False |
Cho phép tăng cường thời gian thử nghiệm (TTA) để dự đoán, có khả năng cải thiện độ mạnh mẽ của phát hiện với cái giá phải trả là tốc độ suy luận. |
agnostic_nms |
bool |
False |
Cho phép Non-Maximum Suppression (NMS) không phân biệt lớp, hợp nhất các hộp chồng chéo của các lớp khác nhau. Hữu ích trong các tình huống phát hiện nhiều lớp trong đó sự chồng chéo lớp là phổ biến. |
classes |
list[int] |
None |
Lọc các dự đoán thành một tập hợp ID lớp. Chỉ các phát hiện thuộc về các lớp được chỉ định mới được trả về. Hữu ích để tập trung vào các đối tượng có liên quan trong các tác vụ phát hiện nhiều lớp. |
retina_masks |
bool |
False |
Trả về mặt nạ phân đoạn có độ phân giải cao. Các mặt nạ trả về (masks.data ) sẽ khớp với kích thước hình ảnh gốc nếu được bật. Nếu bị tắt, chúng sẽ có kích thước hình ảnh được sử dụng trong quá trình suy luận. |
embed |
list[int] |
None |
Chỉ định các lớp để trích xuất các vectơ đặc điểm hoặc nhúng . Hữu ích cho các tác vụ hạ lưu như phân cụm hoặc tìm kiếm sự tương đồng. |
project |
str |
None |
Tên của thư mục dự án nơi đầu ra dự đoán được lưu nếu save được bật. |
name |
str |
None |
Tên của lần chạy dự đoán. Được sử dụng để tạo một thư mục con trong thư mục dự án, nơi lưu trữ các đầu ra dự đoán nếu save được bật. |
CÂU HỎI THƯỜNG GẶP
Cắt đối tượng là gì? Ultralytics YOLO11 và nó hoạt động như thế nào?
Việc cắt đối tượng bằng Ultralytics YOLO11 liên quan đến việc cô lập và trích xuất các đối tượng cụ thể từ hình ảnh hoặc video dựa trên YOLO11 khả năng phát hiện của. Quá trình này cho phép phân tích tập trung, giảm khối lượng dữ liệu và tăng cường độ chính xác bằng cách tận dụng YOLO11 để xác định các đối tượng với độ chính xác cao và cắt chúng cho phù hợp. Để biết hướng dẫn chi tiết, hãy tham khảo ví dụ cắt đối tượng .
Tại sao tôi nên sử dụng Ultralytics YOLO11 để cắt xén đối tượng trên các giải pháp khác?
Ultralytics YOLO11 nổi bật nhờ độ chính xác, tốc độ và dễ sử dụng. Nó cho phép phát hiện và cắt đối tượng chi tiết và chính xác, cần thiết cho phân tích tập trung và các ứng dụng cần tính toàn vẹn dữ liệu cao. Hơn nữa, YOLO11 tích hợp liền mạch với các công cụ như OpenVINO Và TensorRT cho các triển khai yêu cầu khả năng thời gian thực và tối ưu hóa trên nhiều phần cứng khác nhau. Khám phá các lợi ích trong hướng dẫn về xuất mô hình .
Làm thế nào tôi có thể giảm khối lượng dữ liệu của tập dữ liệu của mình bằng cách cắt đối tượng?
Bằng cách sử dụng Ultralytics YOLO11 để chỉ cắt các đối tượng có liên quan từ hình ảnh hoặc video của bạn, bạn có thể giảm đáng kể kích thước dữ liệu, giúp lưu trữ và xử lý hiệu quả hơn. Quá trình này bao gồm việc đào tạo mô hình để phát hiện các đối tượng cụ thể và sau đó sử dụng kết quả để cắt và lưu các phần này. Để biết thêm thông tin về khai thác Ultralytics YOLO11 khả năng của, hãy truy cập hướng dẫn bắt đầu nhanh của chúng tôi.
Tôi có thể sử dụng Ultralytics YOLO11 để phân tích video thời gian thực và cắt đối tượng?
Đúng, Ultralytics YOLO11 có thể xử lý nguồn cấp dữ liệu video thời gian thực để phát hiện và cắt xén các đối tượng một cách động. Khả năng suy luận tốc độ cao của mô hình làm cho nó trở nên lý tưởng cho các ứng dụng thời gian thực như giám sát, phân tích thể thao và hệ thống kiểm tra tự động. Kiểm tra các chế độ theo dõi và dự đoán để hiểu cách triển khai xử lý thời gian thực.
Yêu cầu về phần cứng để chạy hiệu quả là gì? YOLO11 để cắt đối tượng?
Ultralytics YOLO11 được tối ưu hóa cho cả hai CPU Và GPU môi trường, nhưng để đạt được hiệu suất tối ưu, đặc biệt là đối với suy luận thời gian thực hoặc khối lượng lớn, một GPU (ví dụ, NVIDIA Tesla, RTX series) được khuyến nghị. Để triển khai trên các thiết bị nhẹ, hãy cân nhắc sử dụng CoreML vì iOS hoặc TFLite cho Android . Bạn có thể tìm thấy thêm thông tin chi tiết về các thiết bị và định dạng được hỗ trợ trong các tùy chọn triển khai mô hình của chúng tôi.