рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8 ЁЯЪА
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреНрдпрд╛ рд╣реИ?
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде Ultralytics YOLOv8 рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдХреЗ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдХреЗ рдХреБрд╢рд▓ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред YOLOv8 рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╡рд╛рд╣рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдерд▓ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкрд╛рд░реНрдХрд┐рдВрдЧ рдЕрдзрд┐рднреЛрдЧ рдореЗрдВ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ред
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд╛рдн?
- рджрдХреНрд╖рддрд╛: рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдерд▓ рдкреНрд░рдмрдВрдзрди рдкрд╛рд░реНрдХрд┐рдВрдЧ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рднреАрдбрд╝ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
- рдмрдЪрд╛рд╡ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛: рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ YOLOv8 рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдЧреЛрдВ рдФрд░ рд╡рд╛рд╣рдиреЛрдВ рджреЛрдиреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
- рдХрдо рдЙрддреНрд╕рд░реНрдЬрди: рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ YOLOv8 рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдерд▓ рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕рдордп рдФрд░ рдЙрддреНрд╕рд░реНрдЬрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рддрд╛рдпрд╛рдд рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА | рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА |
---|---|
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдПрд░рд┐рдпрд▓ рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8 | рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рд╢реАрд░реНрд╖ View рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8 |
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЛрдб рд╡рд░реНрдХрдлрд╝реНрд▓реЛ
рдЕрдВрдХреЛрдВ рдХрд╛ рдЪрдпрди
рдмрд┐рдВрджреБ рдЪрдпрди рдЕрдм рдЖрд╕рд╛рди рд╣реИ
рдкрд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рд░реНрдХрд┐рдВрдЧ рдмрд┐рдВрджреБ рдЪреБрдирдирд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рд╣реИред Ultralytics рдПрдХ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдерд▓ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдж рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдХреИрдорд░рд╛ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдПрдХ рдлреНрд░реЗрдо рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдерд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
- рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрднреБрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрдХрд┐рдВрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░
1920 * 1080 рд╕рдорд░реНрдерд┐рдд рдХреА рдЕрдзрд┐рдХрддрдо рдЫрд╡рд┐ рдЖрдХрд╛рд░
from ultralytics.solutions.parking_management import ParkingPtsSelection, tk
root = tk.Tk()
ParkingPtsSelection(root)
root.mainloop()
- рдкрд╛рд░реНрдХрд┐рдВрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдмрд╣реБрднреБрдЬреЛрдВ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
save
JSON рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдкрдХреА рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
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 |
рдЯреНрд░реИрдХрд┐рдВрдЧ рд╡рд┐рдзрд┐ 'рдмрд╛рдЗрдЯрдЯреНрд░реИрдХ' рдпрд╛ 'рдмреЙрдЯрд╕реЙрд░реНрдЯ' |
conf |
float |
0.3 |
рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдереНрд░реЗрд╢реЛрд▓реНрдб |
iou |
float |
0.5 |
IOU рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб |
classes |
list |
None |
рдХрдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░рд┐рдгрд╛рдо, рдпрд╛рдиреА рдХрдХреНрд╖рд╛рдПрдВ = 0, рдпрд╛ рдХрдХреНрд╖рд╛рдПрдВ = [0,2,3] |
verbose |
bool |
True |
рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ |
2024-04-29 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-05-01
рд▓реЗрдЦрдХ: рд░рд┐рдЬрд╝рд╡рд╛рдирдореБрдирд╡реНрд╡рд░ (2)