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

рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди рдХреЗ рд╕рд╛рде YOLO рдореЙрдбрд▓

рднрд╛рдЧрдирд╛ YOLO рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред PythonрдХреЗ рдПрд╕ threading рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдХрдИ рдзрд╛рдЧреЗ рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ YOLO рдЗрди рдзрд╛рдЧреЛрдВ рдореЗрдВ рдореЙрдбрд▓, рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреГрд╖реНрда рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдореЗрдВ рдЖрдкрдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ YOLO рдореЙрдбрд▓ рдЕрдиреБрдорд╛рдиред

рд╕рдордЭ Python рд╕реВрддреНрд░рдг

Python рдереНрд░реЗрдбреНрд╕ рд╕рдорд╛рдВрддрд░рддрд╛ рдХрд╛ рдПрдХ рд░реВрдк рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдСрдкрд░реЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рднреА PythonрдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (GIL) рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ Python рдПрдХ рдмрд╛рд░ рдореЗрдВ рдмрд╛рдЗрдЯрдХреЛрдбред

рд╕рд┐рдВрдЧрд▓ рдмрдирд╛рдо рдорд▓реНрдЯреА-рдереНрд░реЗрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реАрдорд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдзрд╛рдЧреЗ рдЕрднреА рднреА рд╕рдорд╡рд░реНрддреА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ I/O-рдмрд╛рдЙрдВрдб рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдпрд╛ GIL рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЬреИрд╕реЗ рдХрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП YOLOрдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рд╕рд╛рдЭрд╛ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЦрддрд░рд╛

рддрддреНрдХрд╛рд▓ рдПрдХ YOLO рдЕрдкрдиреЗ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдореЙрдбрд▓ рдФрд░ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╕реЗ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдХреЗ рдХрд╛рд░рдг рдореЙрдбрд▓ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдЕрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдЬрдм рдореЙрдбрд▓ рдпрд╛ рдЙрд╕рдХреЗ рдШрдЯрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЧреИрд░-рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрджрд╛рд╣рд░рдг: рдПрдХрд▓ рдореЙрдбрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕

рдореЗрдВ рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп Python, рдЙрди рдкреИрдЯрд░реНрдиреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреЛ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдореБрджреНрджреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП: рдПрдХрд▓ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ YOLO рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдореЙрдбрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ред

# Unsafe: Sharing a single model instance across threads
from threading import Thread

from ultralytics import YOLO

# Instantiate the model outside the thread
shared_model = YOLO("yolov8n.pt")


def predict(image_path):
    """Predicts objects in an image using a preloaded YOLO model, take path string to image as argument."""
    results = shared_model.predict(image_path)
    # Process results


# Starting threads that share the same model instance
Thread(target=predict, args=("image1.jpg",)).start()
Thread(target=predict, args=("image2.jpg",)).start()

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, shared_model рдХрдИ рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ predict рдХрдИ рдзрд╛рдЧреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЧреИрд░-рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрджрд╛рд╣рд░рдг: рдПрдХрд╛рдзрд┐рдХ рдореЙрдбрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕

рдЗрд╕реА рддрд░рд╣, рдпрд╣рд╛рдВ рдХрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреИрдЯрд░реНрди рд╣реИ YOLO рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг:

# Unsafe: Sharing multiple model instances across threads can still lead to issues
from threading import Thread

from ultralytics import YOLO

# Instantiate multiple models outside the thread
shared_model_1 = YOLO("yolov8n_1.pt")
shared_model_2 = YOLO("yolov8n_2.pt")


def predict(model, image_path):
    """Runs prediction on an image using a specified YOLO model, returning the results."""
    results = model.predict(image_path)
    # Process results


# Starting threads with individual model instances
Thread(target=predict, args=(shared_model_1, "image1.jpg")).start()
Thread(target=predict, args=(shared_model_2, "image2.jpg")).start()

рднрд▓реЗ рд╣реА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдлрд┐рд░ рднреА рд╕рдорд╡рд░реНрддреА рдореБрджреНрджреЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред рдпрджрд┐ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди YOLO рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрди рдпрд╛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдереНрд░реЗрдб-рд╕реНрдерд╛рдиреАрдп рдирд╣реАрдВ рд╣реИрдВред

рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди

рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП YOLO рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХреЗ рднреАрддрд░ рдореЙрдбрд▓ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдкрдирд╛ рдкреГрдердХ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрджрд╛рд╣рд░рдг

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП YOLO рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХреЗ рдЕрдВрджрд░ рдореЙрдбрд▓:

# Safe: Instantiating a single model inside each thread
from threading import Thread

from ultralytics import YOLO


def thread_safe_predict(image_path):
    """Predict on an image using a new YOLO model instance in a thread-safe manner; takes image path as input."""
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ YOLO рдЙрджрд╛рд╣рд░рдгред рдпрд╣ рдХрд┐рд╕реА рднреА рдереНрд░реЗрдб рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдореЙрдбрд▓ рд░рд╛рдЬреНрдп рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИред

рд╕рдорд╛рдкреНрддрд┐

рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп YOLO рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ PythonрдХреЗ рдПрд╕ threading, рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдереНрд░реЗрдб рдХреЗ рднреАрддрд░ рддрддреНрдХрд╛рд▓ рдХрд░реЗрдВ рдЬреЛ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЕрднреНрдпрд╛рд╕ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЕрдиреБрдорд╛рди рдХрд╛рд░реНрдп рдордЬрд╝рдмреВрддреА рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдкрдиреЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдВрддрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ multiprocessing рдпрд╛ рд╕рдорд░реНрдкрд┐рдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдп рдХрддрд╛рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ред

рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди

рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреИрд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдВ YOLO рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдореЗрдВ рдореЙрдбрд▓ Python рдкрд░реНрдпрд╛рд╡рд░рдг?

рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП Ultralytics YOLO рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдореЗрдВ рдореЙрдбрд▓ Python рдкрд░реНрдпрд╛рд╡рд░рдг, рдПрдХ рдЕрд▓рдЧ рддрддреНрдХрд╛рд▓ YOLO рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХреЗ рднреАрддрд░ рдореЙрдбрд▓ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХрд╛ рдЕрдкрдирд╛ рдкреГрдердХ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдореЙрдбрд▓ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдорд╡рд░реНрддреА рд╕рдВрд╢реЛрдзрди рд╕реЗ рдмрдЪрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:

from threading import Thread

from ultralytics import YOLO


def thread_safe_predict(image_path):
    """Predict on an image in a thread-safe manner."""
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдкрд░ рдЬрд╛рдПрдБ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди рдХреЗ рд╕рд╛рде YOLO рдореЙрдбрд▓ред

рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреНрдпрд╛ рд╣реИрдВ YOLO рдореЙрдбрд▓ рдЕрдиреБрдорд╛рди рдореЗрдВ Python?

рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП YOLO рдореЙрдбрд▓ рдЕрдиреБрдорд╛рди рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ Python, рдЗрди рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:

  1. рдЗрдиреНрд╕реНрддрд╛рдВрдд YOLO рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдПрдХрд▓ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рднреАрддрд░ рдореЙрдбрд▓ред
  2. рдкреНрд░рдпреЛрдЧ PythonрдХрд╛ multiprocessing рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (рдЬреАрдЖрдИрдПрд▓) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ред
  3. рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GIL рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдВ YOLOрдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╣реИред

рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдЗрдВрд╕реНрдЯреЗрдВрдЯрд┐рдПрд╢рди рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг:

from threading import Thread

from ultralytics import YOLO


def thread_safe_predict(image_path):
    """Runs inference in a thread-safe manner with a new YOLO model instance."""
    model = YOLO("yolov8n.pt")
    results = model.predict(image_path)
    # Process results


# Initiate multiple threads
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди рдкрд░ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред

рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдкрдирд╛ рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП YOLO рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг?

рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдкрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП YOLO рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдгред рдЬрдм рдПрдХ рдПрдХрд▓ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдореЙрдбрд▓ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддреА рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдереНрд░реЗрдб рдЕрд▓рдЧрд╛рд╡ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХрд╛рд░реНрдп рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдЧреИрд░-рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрджрд╛рд╣рд░рдг: рдПрдХрд▓ рдореЙрдбрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдФрд░ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ.

рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ PythonрдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (GIL) рдХрд╛ рдкреНрд░рднрд╛рд╡ YOLO рдореЙрдбрд▓ рдЕрдиреБрдорд╛рди?

PythonрдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (GIL) рдХреЗрд╡рд▓ рдПрдХ рдереНрд░реЗрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ Python рдПрдХ рд╕рдордп рдореЗрдВ рдмрд╛рдЗрдЯрдХреЛрдб, рдЬреЛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ CPU-рдмрд╛рдЙрдВрдб рдорд▓реНрдЯреА-рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпред рд╣рд╛рд▓рд╛рдВрдХрд┐, I/O-рдмрд╛рдЙрдВрдб рдСрдкрд░реЗрд╢рди рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ GIL рдЬрд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ YOLOрд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ, рдЖрдк рдЕрднреА рднреА рд╕рдорд╡рд░реНрддреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдВрддрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ PythonрдХрд╛ multiprocessing рдореЙрдбреНрдпреВрд▓ред

рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Python, рджреЗрдЦреЗрдВ рд╕рдордЭ Python рдереНрд░реЗрдбрд┐рдВрдЧ рд╕реЗрдХреНрд╢рдиред

рдХреНрдпрд╛ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдВрддрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ YOLO рдореЙрдбрд▓ рдЕрдиреБрдорд╛рди?

рд╣рд╛рдБ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ PythonрдХрд╛ multiprocessing рдореЙрдбреНрдпреВрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ YOLO рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдореЙрдбрд▓ рдЕрдиреБрдорд╛рдиред рдкреНрд░рдХреНрд░рд┐рдпрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдВрддрд░рддрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдмрдирд╛рддреА рд╣реИ, рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (GIL) рд╕реЗ рдмрдЪрддреА рд╣реИ рдФрд░ рд╕рдорд╡рд░реНрддреА рдореБрджреНрджреЛрдВ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА YOLO рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдгред

рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП YOLO рдореЙрдбрд▓, рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди рдкрд░ рдкреГрд╖реНрда рджреЗрдЦреЗрдВред



рдмрдирд╛рдпрд╛ рдЧрдпрд╛ 2023-11-12, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-07-05
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (5)

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