рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░реЙрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Ultralytics YOLOv8 ЁЯЪА

рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░реЙрдкрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?

рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдЯ-рдЫрд╛рдБрдЯ рдХрд░рдирд╛ Ultralytics YOLOv8 рдХрд┐рд╕реА рдЫрд╡рд┐ рдпрд╛ рд╡реАрдбрд┐рдпреЛ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреНрдЮрд╛рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд╣реА YOLOv8 рдореЙрдбрд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдлрд╕рд▓ рд╕рдХреНрд╖рдо рд╣реЛрддреА рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░реЙрдкрд┐рдВрдЧ рдХреЗ рд▓рд╛рдн?

  • рдХреЗрдВрджреНрд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг: YOLOv8 рд▓рдХреНрд╖рд┐рдд рд╡рд╕реНрддреБ рдлрд╕рд▓ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рджреГрд╢реНрдп рдХреЗ рднреАрддрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд╕реНрддреБрдУрдВ рдХреА рдЧрд╣рди рдкрд░реАрдХреНрд╖рд╛ рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
  • рдХрдо рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо: рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рд╕реЗ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░реЙрдкрд┐рдВрдЧ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рднрдВрдбрд╛рд░рдг, рд╕рдВрдЪрд░рдг рдпрд╛ рдмрд╛рдж рдХреЗ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдмрдврд╝реА рд╣реБрдИ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛: YOLOv8рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рд╕рдЯреАрдХрддрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрд░реЙрдк рдХреА рдЧрдИ рд╡рд╕реНрддреБрдПрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдирд┐рдХ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВ, рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВред

рджреГрд╢реНрдпреЛрдВ

рд╣рд╡рд╛рдИ рдЕрдбреНрдбреЗ рдХрд╛ рд╕рд╛рдорд╛рди
рд╣рд╡рд╛рдИ рдЕрдбреНрдбреЗ рдкрд░ рдХрдиреНрд╡реЗрдпрд░ рдмреЗрд▓реНрдЯ рд╕реВрдЯрдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░реЙрдкрд┐рдВрдЧ Ultralytics YOLOv8
рд╕реВрдЯрдХреЗрд╕ рд╣рд╡рд╛рдИ рдЕрдбреНрдбреЗ рдХрдиреНрд╡реЗрдпрд░ рдмреЗрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдлрд╕рд▓ Ultralytics YOLOv8

рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░реЙрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ YOLOv8 рдЙрджрд╛рд╣рд░рдг

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
import cv2
import os

model = YOLO("yolov8n.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()

рддрд░реНрдХ model.predict

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдЪреВрдХ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
source str 'ultralytics/assets' рдЫрд╡рд┐рдпреЛрдВ рдпрд╛ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
conf float 0.25 рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдереНрд░реЗрд╢реЛрд▓реНрдб
iou float 0.7 рдПрдирдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрдШ (рдЖрдИрдУрдпреВ) рд╕реАрдорд╛ рдкрд░ рдЪреМрд░рд╛рд╣рд╛
imgsz int or tuple 640 рд╕реНрдХреЗрд▓рд░ рдпрд╛ (рдПрдЪ, рдбрдмреНрд▓реНрдпреВ) рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░, рдпрд╛рдиреА (640, 480)
half bool False рдЖрдзреА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ (FP16) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
device None or str None рдЪрд╛рд▓реВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕, рдпрд╛рдиреА рдХреНрдпреВрдбрд╛ рдбрд┐рд╡рд╛рдЗрд╕ = 0/1/2/3 рдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ = рд╕реАрдкреАрдпреВ
max_det int 300 рдкреНрд░рддрд┐ рдЫрд╡рд┐ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛
vid_stride bool False рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо-рджрд░ рд╕реНрдЯреНрд░рд╛рдЗрдб
stream_buffer bool False рд╕рднреА рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдлрд╝реНрд░реЗрдо (рд╕рд╣реА) рдХреЛ рдмрдлрд╝рд░ рдХрд░реЗрдВ рдпрд╛ рдирд╡реАрдирддрдо рдлрд╝реНрд░реЗрдо (рдЧрд▓рдд) рд▓реМрдЯрд╛рдПрдВ
visualize bool False рдореЙрдбрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ
augment bool False рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╕реНрд░реЛрддреЛрдВ рдкрд░ рдЫрд╡рд┐ рд╡реГрджреНрдзрд┐ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
agnostic_nms bool False рд╡рд░реНрдЧ-рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рдПрдирдПрдордПрд╕
classes list[int] None рдХрдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░рд┐рдгрд╛рдо, рдпрд╛рдиреА рдХрдХреНрд╖рд╛рдПрдВ = 0, рдпрд╛ рдХрдХреНрд╖рд╛рдПрдВ = [0,2,3]
retina_masks bool False рдЙрдЪреНрдЪ-рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗрдЧрдореЗрдВрдЯреЗрд╢рди рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
embed list[int] None рджреА рдЧрдИ рдкрд░рддреЛрдВ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рд╡реИрдХреНрдЯрд░/рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдВ


2024-01-09 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-03-03
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (2), рд░рд┐рдЬрд╡рд╛рдирдореБрдирд╡реНрд╡рд░ (2), рдЖрдпреБрд╖рдПрдХреНрд╕реЗрд▓ (1)

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ