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

Π‘Π»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° нСсколькими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLO

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ отслСТивания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² сфСрС Π²ΠΈΠ΄Π΅ΠΎΠ°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ - ваТнСйшая Π·Π°Π΄Π°Ρ‡Π°, которая позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ мСстополоТСниС ΠΈ класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΊΠ°Π΄Ρ€Π΅, Π½ΠΎ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ продвиТСния Π²ΠΈΠ΄Π΅ΠΎ. Π‘Ρ„Π΅Ρ€Ρ‹ примСнСния этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±Π΅Π·Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ - ΠΎΡ‚ видСонаблюдСния ΠΈ бСзопасности Π΄ΠΎ спортивной Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ultralytics YOLO для отслСТивания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ΠΎΠ² Ultralytics ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ стандартному ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ultralytics YOLO для своих Π½ΡƒΠΆΠ΄ ΠΏΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡƒΡ‰Π΅Ρ€Π±Π° для точности.
  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ отслСТивания.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования: простой API Python ΠΈ ΠΎΠΏΡ†ΠΈΠΈ CLI для быстрой ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ развСртывания.
  • ΠΠ°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ: ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ YOLO позволяСт ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² прилоТСния, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.



Π‘ΠΌΠΎΡ‚Ρ€ΠΈ: ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ отслСТиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 .

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

Вранспорт Розничная торговля ΠΠΊΠ²Π°ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π°
Π‘Π»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ людСй ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Ρ€Ρ‹Π±Ρ‹
Π‘Π»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ людСй ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Ρ€Ρ‹Π±Ρ‹

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда

Ultralytics YOLO Π Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ отслСТиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: БСспрСпятствСнно отслСТивай ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ΠΎ с высокой частотой ΠΊΠ°Π΄Ρ€ΠΎΠ².
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ΠΎΠ²: Π’Ρ‹Π±ΠΈΡ€Π°ΠΉ ΠΈΠ· мноТСства установлСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² отслСТивания.
  • НастраиваСмыС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π°: ΠŸΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π° ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ трСбования, рСгулируя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

ДоступныС Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Ρ‹

Ultralytics YOLO ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ отслСТивания. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» YAML, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ tracker=tracker_type.yaml:

  • BoT-SORT - Польза botsort.yaml Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€.
  • ByteTrack - Польза bytetrack.yaml Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€.

Π’Ρ€Π΅ΠΊΠ΅Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - BoT-SORT.

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π΅ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π°

Если ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ довСрия ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΈΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ track_high_threshΠ’ΠΎΠ³Π΄Π° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ‚Ρ€Π΅ΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ модСль Detect, Segment ΠΈΠ»ΠΈ Pose, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ YOLOv8n, YOLOv8n-seg ΠΈ YOLOv8n-pose.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

from ultralytics import YOLO

# Load an official or custom model
model = YOLO('yolov8n.pt')  # Load an official Detect model
model = YOLO('yolov8n-seg.pt')  # Load an official Segment model
model = YOLO('yolov8n-pose.pt')  # Load an official Pose model
model = YOLO('path/to/best.pt')  # Load a custom trained model

# Perform tracking with the model
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)  # Tracking with default tracker
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")  # Tracking with ByteTrack tracker
# Perform tracking with various models using the command line interface
yolo track model=yolov8n.pt source="https://youtu.be/LNwODJXcvt4"  # Official Detect model
yolo track model=yolov8n-seg.pt source="https://youtu.be/LNwODJXcvt4"  # Official Segment model
yolo track model=yolov8n-pose.pt source="https://youtu.be/LNwODJXcvt4"  # Official Pose model
yolo track model=path/to/best.pt source="https://youtu.be/LNwODJXcvt4"  # Custom trained model

# Track using ByteTrack tracker
yolo track model=path/to/best.pt tracker="bytetrack.yaml"

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ использования, отслСТиваниС доступно для всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Detect, Segment ΠΈ Pose, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… источниках.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π΅ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π°

Если ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ довСрия ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΈΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ track_high_threshΠ’ΠΎΠ³Π΄Π° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ‚Ρ€Π΅ΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½.

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ отслСТивания ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ свойства с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ Predict, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ conf, iou, ΠΈ show. О Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… конфигурациях Ρ‡ΠΈΡ‚Π°ΠΉ Π² ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΠΉ Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

from ultralytics import YOLO

# Configure the tracking parameters and run the tracker
model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.3, iou=0.5, show=True)
# Configure tracking parameters and run the tracker using the command line interface
yolo track model=yolov8n.pt source="https://youtu.be/LNwODJXcvt4" conf=0.3, iou=0.5 show

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

Ultralytics Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π°. Для этого просто создай копию ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, custom_tracker.yaml) ΠΎΡ‚ ultralytics/cfg/trackers ΠΈ измСняй Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (ΠΊΡ€ΠΎΠΌΠ΅ tracker_type) Π² соотвСтствии с Ρ‚Π²ΠΎΠΈΠΌΠΈ потрСбностями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

from ultralytics import YOLO

# Load the model and run the tracker with a custom configuration file
model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/LNwODJXcvt4", tracker='custom_tracker.yaml')
# Load the model and run the tracker with a custom configuration file using the command line interface
yolo track model=yolov8n.pt source="https://youtu.be/LNwODJXcvt4" tracker='custom_tracker.yaml'

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π° Ρ‚Ρ‹ найдСшь Π½Π° страницС ultralytics/cfg/trackers.

Python ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΠ΅Ρ‚Π»Ρ с постоянными Ρ‚Ρ€Π΅ΠΊΠ°ΠΌΠΈ

Π’ΠΎΡ‚ скрипт Python , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ OpenCV (cv2) ΠΈ YOLOv8 для запуска отслСТивания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π΄Ρ€Π°Ρ…. Π­Ρ‚ΠΎΡ‚ скрипт ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΡƒΠΆΠ΅ установил Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (opencv-python ΠΈ ultralytics). На сайтС persist=True АргумСнт сообщаСт Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°Π΄Ρ€ являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠΈ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ изобраТСния.

ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€-Π»ΡƒΠΏ с Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ΠΎΠΌ

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Open the video file
video_path = "path/to/video.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 tracking on the frame, persisting tracks between frames
        results = model.track(frame, persist=True)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 Tracking", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ model(frame) Π½Π° model.track(frame), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ вмСсто простого обнаруТСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ скрипт Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ Π²ΠΈΠ΄Π΅ΠΎ, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠΊΠ½Π΅. Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΆΠ°Π² 'q'.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅ΠΊΠΎΠ² Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Визуализация Ρ‚Ρ€Π΅ΠΊΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Ρ†Π΅Π½Π½Ρ‹Π΅ свСдСния ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅ двиТСния ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π²ΠΈΠ΄Π΅ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 построСниС Ρ‚Π°ΠΊΠΈΡ… Ρ‚Ρ€Π΅ΠΊΠΎΠ² станСт простым ΠΈ эффСктивным процСссом.

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

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅ΠΊΠΎΠ² ΠΏΠΎ нСскольким Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π΄Ρ€Π°ΠΌ

from collections import defaultdict

import cv2
import numpy as np

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Open the video file
video_path = "path/to/video.mp4"
cap = cv2.VideoCapture(video_path)

# Store the track history
track_history = defaultdict(lambda: [])

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 tracking on the frame, persisting tracks between frames
        results = model.track(frame, persist=True)

        # Get the boxes and track IDs
        boxes = results[0].boxes.xywh.cpu()
        track_ids = results[0].boxes.id.int().cpu().tolist()

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Plot the tracks
        for box, track_id in zip(boxes, track_ids):
            x, y, w, h = box
            track = track_history[track_id]
            track.append((float(x), float(y)))  # x, y center point
            if len(track) > 30:  # retain 90 tracks for 90 frames
                track.pop(0)

            # Draw the tracking lines
            points = np.hstack(track).astype(np.int32).reshape((-1, 1, 2))
            cv2.polylines(annotated_frame, [points], isClosed=False, color=(230, 230, 230), thickness=10)

        # Display the annotated frame
        cv2.imshow("YOLOv8 Tracking", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ отслСТиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с нСсколькими Π²ΠΈΠ΄Π΅ΠΎΠ²Ρ…ΠΎΠ΄Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ°ΠΌΠ΅Ρ€ наблюдСния, ΠΊΠΎΠ³Π΄Π° одноврСмСнная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π’ прСдоставлСнном скриптС Python ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Python's threading ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ запуска Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… экзСмпляров Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° запуск Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»Π΅, ΠΈ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ модСль ΠΈ индСкс Ρ„Π°ΠΉΠ»Π°), ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ run_tracker_in_thread которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ содСрТит основной Ρ†ΠΈΠΊΠ» отслСТивания. Π­Ρ‚Π° функция считываСт Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠ°Π΄Ρ€ Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ, запускаСт Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° экран.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ: yolov8n.pt ΠΈ yolov8n-seg.ptΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… отслСТиваСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»Π°Ρ…. Π’ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² video_file1 ΠΈ video_file2.

The daemon=True ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² threading.Thread ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ эти ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ запускаСм ΠΏΠΎΡ‚ΠΎΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ start() ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ join() Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° ΠΎΠ±Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

НаконСц, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ свою Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΎΠΊΠ½Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cv2.destroyAllWindows().

ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€-Π»ΡƒΠΏ с Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ΠΎΠΌ

import threading
import cv2
from ultralytics import YOLO


def run_tracker_in_thread(filename, model, file_index):
    """
    Runs a video file or webcam stream concurrently with the YOLOv8 model using threading.

    This function captures video frames from a given file or camera source and utilizes the YOLOv8 model for object
    tracking. The function runs in its own thread for concurrent processing.

    Args:
        filename (str): The path to the video file or the identifier for the webcam/external camera source.
        model (obj): The YOLOv8 model object.
        file_index (int): An index to uniquely identify the file being processed, used for display purposes.

    Note:
        Press 'q' to quit the video display window.
    """
    video = cv2.VideoCapture(filename)  # Read the video file

    while True:
        ret, frame = video.read()  # Read the video frames

        # Exit the loop if no more frames in either video
        if not ret:
            break

        # Track objects in frames if available
        results = model.track(frame, persist=True)
        res_plotted = results[0].plot()
        cv2.imshow(f"Tracking_Stream_{file_index}", res_plotted)

        key = cv2.waitKey(1)
        if key == ord('q'):
            break

    # Release video sources
    video.release()


# Load the models
model1 = YOLO('yolov8n.pt')
model2 = YOLO('yolov8n-seg.pt')

# Define the video files for the trackers
video_file1 = "path/to/video1.mp4"  # Path to video file, 0 for webcam
video_file2 = 0  # Path to video file, 0 for webcam, 1 for external camera

# Create the tracker threads
tracker_thread1 = threading.Thread(target=run_tracker_in_thread, args=(video_file1, model1, 1), daemon=True)
tracker_thread2 = threading.Thread(target=run_tracker_in_thread, args=(video_file2, model2, 2), daemon=True)

# Start the tracker threads
tracker_thread1.start()
tracker_thread2.start()

# Wait for the tracker threads to finish
tracker_thread1.join()
tracker_thread2.join()

# Clean up and close windows
cv2.destroyAllWindows()

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большим количСством Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, создав большС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² Ρ‚Ρƒ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ.

ВноситС Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Ρ‹

Π’Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΡˆΡŒΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π΅ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLO ? ΠœΡ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ тСбя внСсти свой Π²ΠΊΠ»Π°Π΄ Π² наш Ρ€Π°Π·Π΄Π΅Π» "Π’Ρ€Π΅ΠΊΠ΅Ρ€Ρ‹" Π² ultralytics/cfg/trackers! Π’Π²ΠΎΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ прилоТСния ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ бСсцСнными для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π°Π΄ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π°.

Внося свой Π²ΠΊΠ»Π°Π΄ Π² этот Ρ€Π°Π·Π΄Π΅Π», Ρ‚Ρ‹ помогаСшь Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ спСктр Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для отслСТивания, доступных Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ultralytics YOLO , добавляя Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ полСзности для сообщСства.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой Π²ΠΊΠ»Π°Π΄, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ руководству ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΈΠ½Π³Ρƒ, Π³Π΄Π΅ Π΄Π°Π½Ρ‹ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ инструкции ΠΏΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Pull Request (PR) πŸ› οΈ. Нам Π½Π΅ тСрпится ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ²Π½Π΅ΡΡ‘ΡˆΡŒ Π² ΠΈΠ³Ρ€Ρƒ!

ВмСстС Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ возмоТности отслСТивания экосистСмы Ultralytics YOLO πŸ™!



Боздано 2023-11-12, ОбновлСно 2024-04-26
Авторы: glenn-jocher (11)

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