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

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 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)] Бписок Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠ±Π»Π°ΡΡ‚ΡŒ подсчСта.
line_thickness int 2 Π’ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΉ для ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°ΠΌΠΎΠΊ.
view_img bool False Π€Π»Π°Π³, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊ.
view_in_counts bool True Π€Π»Π°Π³, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΌ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ΅ счСтчики in.
view_out_counts bool True Π€Π»Π°Π³, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΌ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ΅ счСтчики Π°ΡƒΡ‚ΠΎΠ².
draw_tracks bool False Π€Π»Π°Π³, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ Ρ‚Ρ€Π΅ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

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

АргумСнт Π’ΠΈΠΏ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
source str None Specifies the source directory for images or videos. Supports file paths and URLs.
persist bool False Enables persistent tracking of objects between frames, maintaining IDs across video sequences.
tracker str botsort.yaml Specifies the tracking algorithm to use, e.g., bytetrack.yaml ΠΈΠ»ΠΈ botsort.yaml.
conf float 0.3 Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives.
iou float 0.5 Sets the Intersection over Union (IoU) threshold for filtering overlapping detections.
classes list None Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes.
verbose bool True Controls the display of tracking results, providing a visual output of tracked objects.

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

Как ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 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.


πŸ“… Π‘ΠΎΠ·Π΄Π°Π½ΠΎ 9 мСсяцСв Π½Π°Π·Π°Π΄ ✏️ ОбновлСно 4 дня Π½Π°Π·Π°Π΄

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