ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ содСрТимому

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ подсчСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ подсчСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… с ΠΊΠ°ΠΌΠ΅Ρ€. YOLOv8 ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, обСспСчивая эффСктивный ΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ подсчСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариСв, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ· Ρ‚ΠΎΠ»ΠΏΡ‹ ΠΈ наблюдСниС, благодаря своим соврСмСнным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΈ возмоТностям Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обучСния.


Π‘ΠΌΠΎΡ‚Ρ€ΠΈ: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ классам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ рСсурсов: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² способствуСт эффСктивному ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ рСсурсами, обСспСчивая Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ подсчСт ΠΈ оптимизируя распрСдСлСниС рСсурсов Π² Ρ‚Π°ΠΊΠΈΡ… прилоТСниях, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ запасами.
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности ΠΈ наблюдСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ способствуСт ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΡƒΠ³Ρ€ΠΎΠ·.
  • ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ обоснованных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π΅Ρ‚ Ρ†Π΅Π½Π½Ρ‹Π΅ знания для принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ процСссов Π² Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… сфСрах.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅

Логистика ΠΠΊΠ²Π°ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π°
ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ Ρ€Ρ‹Π±Ρ‹ Π² ΠΌΠΎΡ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8
ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ Ρ€Ρ‹Π±Ρ‹ Π² ΠΌΠΎΡ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° YOLOv8

import cv2

from ultralytics import YOLO, solutions

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

# Define region points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    view_img=True,
    reg_pts=region_points,
    names=model.names,
    draw_tracks=True,
    line_thickness=2,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO, solutions

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

# Define region points as a polygon with 5 points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 400)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    view_img=True,
    reg_pts=region_points,
    names=model.names,
    draw_tracks=True,
    line_thickness=2,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO, solutions

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

# Define line points
line_points = [(20, 400), (1080, 400)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    view_img=True,
    reg_pts=line_points,
    names=model.names,
    draw_tracks=True,
    line_thickness=2,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO, solutions

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

line_points = [(20, 400), (1080, 400)]  # line or region points
classes_to_count = [0, 2]  # person and car classes for count

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    view_img=True,
    reg_pts=line_points,
    names=model.names,
    draw_tracks=True,
    line_thickness=2,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False, classes=classes_to_count)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
Π Π΅Π³ΠΈΠΎΠ½ ΠΏΠΎΠ΄Π²ΠΈΠΆΠ΅Π½

Π’Ρ‹ моТСшь ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π³ΠΈΠΎΠ½ Π² Π»ΡŽΠ±ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊΠ°Π΄Ρ€Π°, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΏΠΎ Π΅Π³ΠΎ краям

АргумСнт ObjectCounter

Π’ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π° с ObjectCounter Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

Имя Π’ΠΈΠΏ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
names dict None Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠΉ классов.
reg_pts list [(20, 400), (1260, 400)] Бписок Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠ±Π»Π°ΡΡ‚ΡŒ подсчСта.
count_reg_color tuple (255, 0, 255) RGB-Ρ†Π²Π΅Ρ‚ области подсчСта.
count_txt_color tuple (0, 0, 0) RGB-Ρ†Π²Π΅Ρ‚ тСкста подсчСта.
count_bg_color tuple (255, 255, 255) RGB-Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° тСкста подсчСта.
line_thickness int 2 Π’ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΉ для ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°ΠΌΠΎΠΊ.
track_thickness int 2 Π’ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΉ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ.
view_img bool False Π€Π»Π°Π³, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊ.
view_in_counts bool True Π€Π»Π°Π³, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΌ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ΅ счСтчики in.
view_out_counts bool True Π€Π»Π°Π³, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΌ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ΅ счСтчики Π°ΡƒΡ‚ΠΎΠ².
draw_tracks bool False Π€Π»Π°Π³, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ Ρ‚Ρ€Π΅ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
track_color tuple None RGB-Ρ†Π²Π΅Ρ‚ Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ.
region_thickness int 5 Π’ΠΎΠ»Ρ‰ΠΈΠ½Π° области подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
line_dist_thresh int 15 ΠŸΠΎΡ€ΠΎΠ³ Π΅Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²Π° расстояния для счСтчика Π»ΠΈΠ½ΠΈΠΉ.
cls_txtdisplay_gap int 50 ПокаТи ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ классом.

АргумСнты model.track

Имя Π’ΠΈΠΏ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
source im0 None исходный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ
persist bool False Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅ΠΊΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ
tracker str botsort.yaml ΠœΠ΅Ρ‚ΠΎΠ΄ отслСТивания 'bytetrack' ΠΈΠ»ΠΈ 'botsort'
conf float 0.3 ΠŸΠΎΡ€ΠΎΠ³ довСрия
iou float 0.5 ΠŸΠΎΡ€ΠΎΠ³ IOU
classes list None Π€ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ классам, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ classes=0, ΠΈΠ»ΠΈ classes=[0,2,3]
verbose bool True ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² отслСТивания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ΠžΠŸΠ ΠžΠ‘Π« И ΠžΠ’Π’Π•Π’Π«

Как ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 ?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 , Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  1. Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (cv2, ultralytics).
  2. Π—Π°Π³Ρ€ΡƒΠ·ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ модСль YOLOv8 .
  3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ подсчСта (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, линия ΠΈ Ρ‚.Π΄.).
  4. Настрой Π²ΠΈΠ΄Π΅ΠΎΠ·Π°Ρ…Π²Π°Ρ‚ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉ счСтчик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  5. ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΡΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠΉ области.

Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для подсчСта Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅:

import cv2

from ultralytics import YOLO, solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    model = YOLO(model_path)
    cap = cv2.VideoCapture(video_path)
    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))
    region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    counter = solutions.ObjectCounter(
        view_img=True, reg_pts=region_points, names=model.names, draw_tracks=True, line_thickness=2
    )

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or video processing has been successfully completed.")
            break
        tracks = model.track(im0, persist=True, show=False)
        im0 = counter.start_counting(im0, tracks)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolov8n.pt")

Π˜Π·ΡƒΡ‡ΠΈ большС настроСк ΠΈ ΠΎΠΏΡ†ΠΈΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ " ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ".

Π’ Ρ‡Π΅ΠΌ прСимущСства использования Ultralytics YOLOv8 для подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

ИспользованиС Ultralytics YOLOv8 для подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π΅Ρ‚ нСсколько прСимущСств:

  1. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ рСсурсов: Он способствуСт эффСктивному ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ рСсурсами, обСспСчивая Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ подсчСты, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ распрСдСлСниС рСсурсов Π² Ρ‚Π°ΠΊΠΈΡ… отраслях, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ запасами.
  2. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Он ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности ΠΈ наблюдСния, Ρ‚ΠΎΡ‡Π½ΠΎ отслСТивая ΠΈ подсчитывая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΡƒΠ³Ρ€ΠΎΠ·.
  3. ОсознанноС принятиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ†Π΅Π½Π½Ρ‹Π΅ свСдСния для принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, оптимизируя процСссы Π² Ρ‚Π°ΠΊΠΈΡ… областях, ΠΊΠ°ΠΊ розничная торговля, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

О Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ΄Π° Ρ‡ΠΈΡ‚Π°ΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ " ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ".

Как ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ классы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 ?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ классы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 , Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ тСбя классы Π½Π° этапС отслСТивания. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Python :

import cv2

from ultralytics import YOLO, solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    model = YOLO(model_path)
    cap = cv2.VideoCapture(video_path)
    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))
    line_points = [(20, 400), (1080, 400)]
    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    counter = solutions.ObjectCounter(
        view_img=True, reg_pts=line_points, names=model.names, draw_tracks=True, line_thickness=2
    )

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or video processing has been successfully completed.")
            break
        tracks = model.track(im0, persist=True, show=False, classes=classes_to_count)
        im0 = counter.start_counting(im0, tracks)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolov8n.pt", [0, 2])

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, classes_to_count=[0, 2]Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ считаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса 0 ΠΈ 2 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈ машина).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ YOLOv8 вмСсто Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?

Ultralytics YOLOv8 обСспСчиваСт нСсколько прСимущСств ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модСлями обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Faster R-CNN, SSD ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями YOLO :

  1. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: YOLOv8 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ возмоТности ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… высокоскоростных Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ наблюдСниС ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ΅ Π²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅.
  2. Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: Она обСспСчиваСт ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², сниТая количСство Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ ΠΎΠ±Ρ‰ΡƒΡŽ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы.
  3. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ: YOLOv8 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±Π΅ΡΡˆΠΎΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠΈ устройствами, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ edge-устройства, Ρ‡Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ для соврСмСнных AI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  4. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, сСгмСнтация ΠΈ отслСТиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ настраиваСмых ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ для удовлСтворСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ использованию.

Загляни Π½Π° Ultralytics YOLOv8 Documentation, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Π΅Π³ΠΎ возмоТности ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ YOLOv8 для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚ΠΎΠ»ΠΏΡ‹ ΠΈ управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ?

Π”Π°, Ultralytics YOLOv8 ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ· Ρ‚ΠΎΠ»ΠΏΡ‹ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ, благодаря возмоТностям обнаруТСния Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ гибкости ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. Π•Π³ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ с высокой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Ρ… срСдах. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Анализ Ρ‚ΠΎΠ»ΠΏΡ‹: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠΉ ΠΈ управляй большими скоплСниями людСй, обСспСчивая Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ оптимизируя ΠΏΠΎΡ‚ΠΎΠΊ Ρ‚ΠΎΠ»ΠΏΡ‹.
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ: ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΠΉ ΠΈ считай Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉ схСмы двиТСния ΠΈ управляй Π·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ обращайся ΠΊ руководству ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ YOLOv8.



Боздано 2023-12-02, ОбновлСно 2024-07-14
Авторы: RizwanMunawar (6), glenn-jocher (15), IvorZhu331 (1), AyushExel (1)

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ