Object Cropping using Ultralytics YOLO11
Cắt xén đối tượng là gì?
Object cropping with Ultralytics YOLO11 involves isolating and extracting specific detected objects from an image or video. The YOLO11 model capabilities are utilized to accurately identify and delineate objects, enabling precise cropping for further analysis or manipulation.
Xem: Object Cropping using Ultralytics YOLO
Ưu điểm của việc cắt xén đối tượng?
- Focused Analysis: YOLO11 facilitates targeted object cropping, allowing for in-depth examination or processing of individual items within a scene.
- 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, cắt xén đối tượng giúp giảm thiểu kích thước dữ liệu, làm cho nó hiệu quả cho việc lưu trữ, truyền tải hoặc các tác vụ tính toán tiếp theo.
- Enhanced Precision: YOLO11's object detection accuracy ensures that the cropped objects maintain their spatial relationships, preserving the integrity of the visual information for detailed analysis.
Hình ảnh
Hành lý sân bay |
---|
Suitcases Cropping at airport conveyor belt using Ultralytics YOLO11 |
Object Cropping using YOLO11 Example
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' |
Specifies the data source for inference. Can be an image path, video file, directory, URL, or device ID for live feeds. Supports a wide range of formats and sources, enabling flexible application across different types of input. |
conf |
float |
0.25 |
Đặt ngưỡng tin cậy tối thiểu để 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 dương tính giả. |
iou |
float |
0.7 |
Intersection Over Union (IoU) threshold for Non-Maximum Suppression (NMS). Lower values result in fewer detections by eliminating overlapping boxes, useful for reducing duplicates. |
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 for square resizing or a (height, width) tuple. Proper sizing can improve detection accuracy and processing speed. |
half |
bool |
False |
Enables half-precision (FP16) inference, which can speed up model inference on supported GPUs with minimal impact on accuracy. |
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ể GPUhoặc các thiết bị điện toán khác để thực thi mô hình. |
max_det |
int |
300 |
Số lần phát hiện tối đa được phép cho 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 |
Sải chân 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í phân giải tạm thời. Giá trị 1 xử lý mọi khung, giá trị cao hơn bỏ qua khung. |
stream_buffer |
bool |
False |
Determines whether to queue incoming frames for video streams. If False , old frames get dropped to accomodate new frames (optimized for real-time applications). If `True', queues new frames in a buffer, ensuring no frames get skipped, but will cause latency if inference FPS is lower than stream FPS. |
visualize |
bool |
False |
Kích hoạt 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à giải thích mô hình. |
augment |
bool |
False |
Cho phép tăng thời gian kiểm tra (TTA) cho các dự đoán, có khả năng cải thiện độ mạnh phát hiện với chi phí là tốc độ suy luận. |
agnostic_nms |
bool |
False |
Cho phép ngăn chặn không tối đa bất khả tri lớp (NMS), kết hợp 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 cho một tập hợp ID lớp. Chỉ những phát hiện thuộc 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 nhiệm vụ phát hiện nhiều lớp. |
retina_masks |
bool |
False |
Sử dụng mặt nạ phân đoạn có độ phân giải cao nếu có sẵn trong mô hình. Điều này có thể nâng cao chất lượng mặt nạ cho các nhiệm vụ phân đoạn, cung cấp chi tiết tốt hơn. |
embed |
list[int] |
None |
Specifies the layers from which to extract feature vectors or embeddings. Useful for downstream tasks like clustering or similarity search. |
FAQ
What is object cropping in Ultralytics YOLO11 and how does it work?
Object cropping using Ultralytics YOLO11 involves isolating and extracting specific objects from an image or video based on YOLO11's detection capabilities. This process allows for focused analysis, reduced data volume, and enhanced precision by leveraging YOLO11 to identify objects with high accuracy and crop them accordingly. For an in-depth tutorial, refer to the object cropping example.
Why should I use Ultralytics YOLO11 for object cropping over other solutions?
Ultralytics YOLO11 stands out due to its precision, speed, and ease of use. It allows detailed and accurate object detection and cropping, essential for focused analysis and applications needing high data integrity. Moreover, YOLO11 integrates seamlessly with tools like OpenVINO and TensorRT for deployments requiring real-time capabilities and optimization on diverse hardware. Explore the benefits in the guide on model export.
Làm cách nào để giảm khối lượng dữ liệu của tập dữ liệu bằng cách cắt xén đối tượng?
By using Ultralytics YOLO11 to crop only relevant objects from your images or videos, you can significantly reduce the data size, making it more efficient for storage and processing. This process involves training the model to detect specific objects and then using the results to crop and save these portions only. For more information on exploiting Ultralytics YOLO11's capabilities, visit our quickstart guide.
Can I use Ultralytics YOLO11 for real-time video analysis and object cropping?
Yes, Ultralytics YOLO11 can process real-time video feeds to detect and crop objects dynamically. The model's high-speed inference capabilities make it ideal for real-time applications such as surveillance, sports analysis, and automated inspection systems. Check out the tracking and prediction modes to understand how to implement real-time processing.
What are the hardware requirements for efficiently running YOLO11 for object cropping?
Ultralytics YOLO11 is optimized for both CPU and GPU environments, but to achieve optimal performance, especially for real-time or high-volume inference, a dedicated GPU (e.g., NVIDIA Tesla, RTX series) is recommended. For deployment on lightweight devices, consider using CoreML for iOS or TFLite for Android. More details on supported devices and formats can be found in our model deployment options.