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

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 πŸš€.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ?

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 обСспСчиваСт ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΡƒ, организуя мСста ΠΈ контролируя ΠΈΡ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅. YOLOv8 ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ благодаря ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ пониманию загруТСнности ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΈ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° систСмы управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ?

  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ использованиС ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… мСст ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π·Π°Ρ‚ΠΎΡ€Ρ‹.
  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ…Ρ€Π°Π½Π°: Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ YOLOv8 ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ людСй, Ρ‚Π°ΠΊ ΠΈ транспортных срСдств Π·Π° счСт видСонаблюдСния ΠΈ ΠΌΠ΅Ρ€ бСзопасности.
  • Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ выбросов: Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ YOLOv8 управляСт транспортным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя простоя ΠΈ Π²Ρ€Π΅Π΄Π½Ρ‹Π΅ выбросы Π½Π° стоянках.

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

БистСма управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ БистСма управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ
ΠŸΠ°Ρ€ΠΊΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ мСста Аналитика ИспользованиС Ultralytics YOLOv8 Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ Π²ΠΈΠ΄ свСрху с использованиСм Ultralytics YOLOv8
Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ Aeriel View с использованиСм Ultralytics YOLOv8 Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ Π’ΠΈΠ΄ свСрху с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8

Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ΠΊΠΎΠ΄Π° систСмы управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ

Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΎΡ‡Π΅ΠΊ

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π»Π΅Π³ΠΊΠΎ

Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΈ - ваТная ΠΈ слоТная Π·Π°Π΄Π°Ρ‡Π° Π² систСмах управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠ°ΠΌΠΈ. Ultralytics ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ этот процСсс, прСдоставляя Ρ‚Π΅Π±Π΅ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π·ΠΎΠ½Ρ‹ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ впослСдствии ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

  • Π—Π°Ρ…Π²Π°Ρ‚ΠΈ ΠΊΠ°Π΄Ρ€ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π³Π΄Π΅ Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ прСдоставлСнный ΠΊΠΎΠ΄ для запуска графичСского интСрфСйса, Π³Π΄Π΅ Ρ‚Ρ‹ смоТСшь Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ области ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΈ ΠΊΠ»ΠΈΠΊΠΎΠΌ ΠΌΡ‹ΡˆΠΈ, создавая ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹.

Π Π°Π·ΠΌΠ΅Ρ€ изобраТСния

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния 1920*1080

from ultralytics.solutions.parking_management import ParkingPtsSelection, tk
root = tk.Tk()
ParkingPtsSelection(root)
root.mainloop()
  • ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Π·ΠΎΠ½Ρ‹ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ², Π½Π°ΠΆΠΌΠΈ save Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ JSON-Ρ„Π°ΠΉΠ» с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π²ΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Ultralytics YOLOv8 ДСмонстрация Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΡ‡ΠΊΠΎΠ²

Python Код для управлСния ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΊΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ YOLOv8 ΠŸΡ€ΠΈΠΌΠ΅Ρ€

import cv2
from ultralytics.solutions.parking_management import ParkingManagement

# Path to json file, that created with above point selection app
polygon_json_path = "bounding_boxes.json"

# Video capture
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))

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

# Initialize parking management object
management = ParkingManagement(model_path="yolov8n.pt")

while cap.isOpened():
    ret, im0 = cap.read()
    if not ret:
        break

    json_data = management.parking_regions_extraction(polygon_json_path)
    results = management.model.track(im0, persist=True, show=False)

    if results[0].boxes.id is not None:
        boxes = results[0].boxes.xyxy.cpu().tolist()
        clss = results[0].boxes.cls.cpu().tolist()
        management.process_data(json_data, im0, boxes, clss)

    management.display_frames(im0)
    video_writer.write(im0)

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

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ParkingManagement()

Имя Π’ΠΈΠΏ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
occupied_region_color RGB Color (0, 255, 0) Π¦Π²Π΅Ρ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ мСстом
available_region_color RGB Color (0, 0, 255) ΠŸΠ°Ρ€ΠΊΠΎΠ²ΠΎΡ‡Π½ΠΎΠ΅ мСсто Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π¦Π²Π΅Ρ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π°
margin int 10 Π Π°Π·Ρ€Ρ‹Π² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ тСкста для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов
txt_color RGB Color (255, 255, 255) Π¦Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π° для тСкста подсчСта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
bg_color RGB Color (255, 255, 255) Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π·Π° тСкстом

АргумСнты 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 ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² отслСТивания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²


Боздано 2024-04-29, ОбновлСно 2024-05-01
Авторы: RizwanMunawar (2)

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