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

Ultralytics Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹: ИспользованиС YOLOv8 вмСстС с SAHI для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌ

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ultralytics , Π³Π΄Π΅ описано, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ YOLOv8 с SAHI (Slicing Aided Hyper Inference). Π­Ρ‚ΠΎ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ руководство ΠΏΡ€ΠΈΠ·Π²Π°Π½ΠΎ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ тСбя всСми Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ знаниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понадобятся Ρ‚Π΅Π±Π΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SAHI наряду с YOLOv8. ΠœΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ расскаТСм ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SAHI, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π³ΠΈΠΏΠ΅Ρ€Π°Π½Π°Π»ΠΈΠ· с Π½Π°Ρ€Π΅Π·ΠΊΠΎΠΉ критичСски Π²Π°ΠΆΠ΅Π½ для ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с YOLOv8 для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠžΠ±Π·ΠΎΡ€ Π½Π°Ρ€Π΅Π·Π½ΠΎΠ³ΠΎ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ SAHI

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² SAHI

SAHI (Slicing Aided Hyper Inference) - это инновационная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, прСдназначСнная для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… снимках высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π•Π΅ основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° управляСмыС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ сшивании Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² вмСстС. SAHI совмСстим с Ρ†Π΅Π»Ρ‹ΠΌ рядом ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠ΅Ρ€ΠΈΡŽ YOLO, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ использовании Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов.



Π‘ΠΌΠΎΡ‚Ρ€ΠΈ: Π’Ρ‹Π²ΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SAHI (Slicing Aided Hyper Inference) с использованиСм Ultralytics YOLOv8

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности SAHI

  • Π‘Π΅ΡΡˆΠΎΠ²Π½Π°Ρ интСграция: SAHI Π±Π΅Π· особых усилий интСгрируСтся с модСлями YOLO , Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ моТСшь ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π½Π°Ρ€Π΅Π·ΠΊΠ΅ ΠΈ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±Π΅Π· особых ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΊΠΎΠ΄Π°.
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования рСсурсов: Разбивая большиС изобраТСния Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ части, SAHI ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ использованиС памяти, позволяя Ρ‚Π΅Π±Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ высококачСствСнноС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ рСсурсами.
  • Высокая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: SAHI ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ обнаруТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΌΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для слияния ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π±Π»ΠΎΠΊΠΎΠ² обнаруТСния Π² процСссС сшивки.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "срСзанноС ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅"?

Sliced Inference - это ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° разбиСния большого изобраТСния ΠΈΠ»ΠΈ изобраТСния высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ сСгмСнты (срСзы), обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° этих срСзах, Π° Π·Π°Ρ‚Π΅ΠΌ пСрСкомпиляции срСзов для восстановлСния мСстополоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° исходном ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ΠΎΡ†Π΅Π½ΠΈΠΌΠ° Π² сцСнариях, Π³Π΄Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с изобраТСниями ΠΎΡ‡Π΅Π½ΡŒ высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅

  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: МалСнькиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ изобраТСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ быстрСС ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС памяти, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ.

  • Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ качСства обнаруТСния: ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ срСз обрабатываСтся нСзависимо, качСство обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ сниТаСтся, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ срСзы достаточно Π²Π΅Π»ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ: ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° позволяСт Π»Π΅Π³Ρ‡Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° изобраТСниях Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ идСальной для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ - ΠΎΡ‚ спутниковых снимков Π΄ΠΎ мСдицинской диагностики.

YOLOv8 Π±Π΅Π· БАΠ₯И YOLOv8 с БАΠ₯И
YOLOv8 Π±Π΅Π· БАΠ₯И YOLOv8 с БАΠ₯И

Установка ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

Установка

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, установи послСдниС вСрсии SAHI ΠΈ Ultralytics:

pip install -U ultralytics sahi

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΠΉ рСсурсы

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ модСль YOLOv8 ΠΈ нСсколько тСстовых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с YOLOv8

Боздай модСль

Π’Ρ‹ моТСшь ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ модСль YOLOv8 для обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈ стандартноС прСдсказаниС

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈ стандартноС ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ numpy-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

from sahi.predict import get_prediction

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Экспортируй ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉ прСдсказанныС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°ΠΌΠΊΠΈ ΠΈ маски:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Π Π°Π·Ρ€Π΅Π·Π°Π½Π½ΠΎΠ΅ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с YOLOv8

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с использованиСм срСзов, ΡƒΠΊΠ°Π·Π°Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ срСзов ΠΈ коэффициСнты пСрСкрытия:

from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² прСдсказаний

SAHI прСдоставляСт PredictionResult ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‚ΠΈΠΈ

Для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ прСдсказания Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с изобраТСниями:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Π’ΠΎΡ‚ ΠΈ всС! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ Π³ΠΎΡ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ YOLOv8 с SAHI ΠΊΠ°ΠΊ для стандартных, Ρ‚Π°ΠΊ ΠΈ для Π½Π°Ρ€Π΅Π·Π½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ².

Π¦ΠΈΡ‚Π°Ρ‚Ρ‹ ΠΈ благодарности

Если Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ SAHI Π² своих исслСдованиях ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…, поТалуйста, ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈ ссылку Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ SAHI ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²:

@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

ΠœΡ‹ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ SAHI Π·Π° созданиС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ этого бСсцСнного рСсурса для сообщСства ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ SAHI ΠΈ Π΅Π³ΠΎ создатСлях, посСти Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ SAHI Π½Π° GitHub.

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

Как ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ YOLOv8 с SAHI для Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Ultralytics YOLOv8 с систСмой SAHI (Slicing Aided Hyper Inference) для Π½Π°Ρ€Π΅Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π²ΠΎΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° изобраТСниях высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° счСт разбиСния ΠΈΡ… Π½Π° управляСмыС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ использованиС памяти ΠΈ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ обнаруТСния. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ultralytics ΠΈ sahi:

pip install -U ultralytics sahi

Π—Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈ модСль YOLOv8 ΠΈ тСстовыС изобраТСния:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции Ρ‚Ρ‹ найдСшь Π² нашСм руководствС ΠΏΠΎ Sliced Inference.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ½Π΅ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SAHI с YOLOv8 для обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… изобраТСниях?

ИспользованиС SAHI с Ultralytics YOLOv8 для обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… изобраТСниях Π΄Π°Π΅Ρ‚ нСсколько прСимущСств:

  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: МалСнькиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ быстрСС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ мСньшС памяти, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ высококачСствСнных Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ рСсурсами.
  • Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ обнаруТСния сохраняСтся: SAHI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для слияния ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ, сохраняя качСство обнаруТСния.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ: Благодаря ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° изобраТСниях Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, SAHI становится ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ· спутниковых снимков ΠΈ мСдицинская диагностика.

Π£Π·Π½Π°ΠΉ большС ΠΎ прСимущСствах Π½Π°Ρ€Π΅Π·Π½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² Π² нашСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

МоТно Π»ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдсказаний ΠΏΡ€ΠΈ использовании YOLOv8 с SAHI?

Π”Π°, Ρ‚Ρ‹ моТСшь Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдсказаний ΠΏΡ€ΠΈ использовании YOLOv8 с SAHI. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ‚Ρ‹ моТСшь ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

result.export_visuals(export_dir="demo_data/")
from IPython.display import Image

Image("demo_data/prediction_visual.png")

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° сохранит Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдсказания Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, послС Ρ‡Π΅Π³ΠΎ Ρ‚Ρ‹ смоТСшь Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π³ΠΎ Π² своСм Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство Ρ‚Ρ‹ найдСшь Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅".

КакиС возмоТности ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ SAHI для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² YOLOv8 ?

SAHI (Slicing Aided Hyper Inference) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ultralytics YOLOv8 для обнаруТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • Π‘Π΅ΡΡˆΠΎΠ²Π½Π°Ρ интСграция: SAHI Π»Π΅Π³ΠΊΠΎ интСгрируСтся с модСлями YOLO , трСбуя минимальной ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ΄Π°.
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования рСсурсов: Он Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ большиС изобраТСния Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ использованиС памяти ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • Высокая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: благодаря эффСктивному объСдинСнию ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π±Π»ΠΎΠΊΠΎΠ² обнаруТСния Π² процСссС сшивки, SAHI ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ обнаруТСния.

Для Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Ρ‡ΠΈΡ‚Π°ΠΉ ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… особСнностях SAHI.

Как ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠΎ созданию Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ YOLOv8 ΠΈ SAHI?

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠΎ созданию Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ YOLOv8 ΠΈ SAHI, слСдуй этим Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ:

  1. Установи Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: УбСдись, Ρ‡Ρ‚ΠΎ Ρƒ тСбя Π΅ΡΡ‚ΡŒ послСдниС вСрсии ultralytics ΠΈ sahi.
  2. Настрой Sliced Inference: ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ срСзов ΠΈ коэффициСнты пСрСкрытия для Ρ‚Π²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  3. Выполняй ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ прСдсказания: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ возмоТности SAHI для выполнСния ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… прСдсказаний Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ прСдсказания:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ шаги Ρ‚Ρ‹ найдСшь Π² нашСм Ρ€Π°Π·Π΄Π΅Π»Π΅, посвящСнном ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡŽ.



Боздано 2023-11-12, ОбновлСно 2024-07-05
Авторы: glenn-jocher (7), RizwanMunawar (1)

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