─░├žeri─če ge├ž

Ultralytics Dok├╝manlar: Dilimlenmi┼č ├ç─▒kar─▒m i├žin YOLOv8 adresini SAHI ile kullanma

YOLOv8 'un SAHI (Slicing Aided Hyper Inference) ile nas─▒l kullan─▒laca─č─▒na ili┼čkin Ultralytics belgelerine ho┼č geldiniz. Bu kapsaml─▒ k─▒lavuz, YOLOv8 ile birlikte SAHI'yi uygulamak i├žin ihtiya├ž duyaca─č─▒n─▒z t├╝m temel bilgileri size sa─člamay─▒ ama├žlamaktad─▒r. SAHI'nin ne oldu─ču, dilimli ├ž─▒kar─▒m─▒n b├╝y├╝k ├Âl├žekli uygulamalar i├žin neden kritik oldu─ču ve geli┼čmi┼č nesne alg─▒lama performans─▒ i├žin bu i┼člevlerin YOLOv8 ile nas─▒l entegre edilece─či konular─▒n─▒ derinlemesine inceleyece─čiz.

SAHI Dilimli ├ç─▒karsamaya Genel Bak─▒┼č

SAHI'ye Giri┼č

SAHI (Slicing Aided Hyper Inference), b├╝y├╝k ├Âl├žekli ve y├╝ksek ├ž├Âz├╝n├╝rl├╝kl├╝ g├Âr├╝nt├╝ler i├žin nesne alg─▒lama algoritmalar─▒n─▒ optimize etmek ├╝zere tasarlanm─▒┼č yenilik├ži bir k├╝t├╝phanedir. Temel i┼člevi, g├Âr├╝nt├╝leri y├Ânetilebilir dilimlere ay─▒rmak, her dilimde nesne alg─▒lama ├žal─▒┼čt─▒rmak ve ard─▒ndan sonu├žlar─▒ bir araya getirmektir. SAHI, YOLO serisi de dahil olmak ├╝zere bir dizi nesne alg─▒lama modeliyle uyumludur, b├Âylece hesaplama kaynaklar─▒n─▒n optimize edilmi┼č kullan─▒m─▒n─▒ sa─člarken esneklik sunar.



─░zle: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLOv8

SAHI'nin Temel ├ľzellikleri

  • Sorunsuz Entegrasyon: SAHI, YOLO modelleriyle zahmetsizce entegre olur, yani ├žok fazla kod de─či┼čikli─či yapmadan dilimlemeye ve alg─▒lamaya ba┼člayabilirsiniz.
  • Kaynak Verimlili─či: SAHI, b├╝y├╝k g├Âr├╝nt├╝leri daha k├╝├ž├╝k par├žalara ay─▒rarak bellek kullan─▒m─▒n─▒ optimize eder ve s─▒n─▒rl─▒ kaynaklara sahip donan─▒mlarda y├╝ksek kaliteli alg─▒lama yapman─▒z─▒ sa─člar.
  • Y├╝ksek Do─čruluk: SAHI, birle┼čtirme i┼člemi s─▒ras─▒nda ├žak─▒┼čan alg─▒lama kutular─▒n─▒ birle┼čtirmek i├žin ak─▒ll─▒ algoritmalar kullanarak alg─▒lama do─črulu─čunu korur.

Dilimlenmi┼č ├ç─▒kar─▒m Nedir?

Dilim ├ç─▒kar─▒m, b├╝y├╝k veya y├╝ksek ├ž├Âz├╝n├╝rl├╝kl├╝ bir g├Âr├╝nt├╝n├╝n daha k├╝├ž├╝k par├žalara (dilimlere) b├Âl├╝nmesi, bu dilimler ├╝zerinde nesne tespiti yap─▒lmas─▒ ve ard─▒ndan orijinal g├Âr├╝nt├╝ ├╝zerindeki nesne konumlar─▒n─▒n yeniden yap─▒land─▒r─▒lmas─▒ i├žin dilimlerin yeniden derlenmesi uygulamas─▒n─▒ ifade eder. Bu teknik, hesaplama kaynaklar─▒n─▒n s─▒n─▒rl─▒ oldu─ču senaryolarda veya aksi takdirde bellek sorunlar─▒na yol a├žabilecek a┼č─▒r─▒ y├╝ksek ├ž├Âz├╝n├╝rl├╝kl├╝ g├Âr├╝nt├╝lerle ├žal─▒┼č─▒rken ├žok de─čerlidir.

Dilimlenmi┼č ├ç─▒kar─▒m─▒n Faydalar─▒

  • Azalt─▒lm─▒┼č Hesaplama Y├╝k├╝: Daha k├╝├ž├╝k g├Âr├╝nt├╝ dilimlerinin i┼členmesi daha h─▒zl─▒d─▒r ve daha az bellek t├╝keterek d├╝┼č├╝k kaliteli donan─▒mlarda daha sorunsuz ├žal─▒┼čmay─▒ sa─člar.

  • Korunmu┼č Alg─▒lama Kalitesi: Her dilim ba─č─▒ms─▒z olarak ele al─▒nd─▒─č─▒ndan, dilimlerin ilgilenilen nesneleri yakalayacak kadar b├╝y├╝k olmas─▒ ko┼čuluyla nesne alg─▒lama kalitesinde herhangi bir azalma olmaz.

  • Geli┼čtirilmi┼č ├ľl├žeklenebilirlik: Bu teknik, nesne tespitinin farkl─▒ boyut ve ├ž├Âz├╝n├╝rl├╝kteki g├Âr├╝nt├╝lerde daha kolay ├Âl├žeklendirilmesini sa─člayarak uydu g├Âr├╝nt├╝lerinden t─▒bbi te┼čhislere kadar geni┼č bir uygulama yelpazesi i├žin idealdir.

YOLOv8 SAHI olmadan YOLOv8 SAHI ile
YOLOv8 SAHI olmadan YOLOv8 SAHI ile

Kurulum ve Haz─▒rl─▒k

Kurulum

Ba┼člamak i├žin SAHI ve Ultralytics adreslerinin en son s├╝r├╝mlerini y├╝kleyin:

pip install -U ultralytics sahi

Mod├╝lleri ─░├že Aktar─▒n ve Kaynaklar─▒ ─░ndirin

Gerekli mod├╝llerin nas─▒l i├že aktar─▒laca─č─▒ ve bir YOLOv8 modelinin ve baz─▒ test g├Âr├╝nt├╝lerinin nas─▒l indirilece─či a┼ča─č─▒da a├ž─▒klanm─▒┼čt─▒r:

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",
)

Standart Çıkarım ile YOLOv8

Modeli Instantiate Etme

Nesne alg─▒lama i├žin bir YOLOv8 modelini ┼ču ┼čekilde ├Ârnekleyebilirsiniz:

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'
)

Standart Tahmin Ger├žekle┼čtirin

Bir g├Âr├╝nt├╝ yolu veya bir numpy g├Âr├╝nt├╝s├╝ kullanarak standart ├ž─▒kar─▒m ger├žekle┼čtirin.

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)

Sonu├žlar─▒ G├Ârselle┼čtirin

Tahmin edilen s─▒n─▒rlay─▒c─▒ kutular─▒ ve maskeleri d─▒┼ča aktar─▒n ve g├Ârselle┼čtirin:

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

Dilimlenmi┼č ├ç─▒kar─▒m ile YOLOv8

Dilim boyutlar─▒n─▒ ve ├Ârt├╝┼čme oranlar─▒n─▒ belirterek dilimli ├ž─▒kar─▒m ger├žekle┼čtirin:

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,
)

Tahmin Sonu├žlar─▒n─▒n ─░┼členmesi

SAHI ┼čunlar─▒ sa─člar PredictionResult nesnesine d├Ân├╝┼čt├╝r├╝lebilir ve bu nesne ├že┼čitli a├ž─▒klama bi├žimlerine d├Ân├╝┼čt├╝r├╝lebilir:

# 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]

Toplu Tahmin

Bir g├Âr├╝nt├╝ dizini ├╝zerinde toplu tahmin i├žin:

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,
)

─░┼čte bu kadar! Art─▒k hem standart hem de dilimli ├ž─▒kar─▒m i├žin YOLOv8 adresini SAHI ile birlikte kullanabilecek donan─▒ma sahipsiniz.

At─▒flar ve Te┼čekk├╝r

Ara┼čt─▒rma veya geli┼čtirme ├žal─▒┼čmalar─▒n─▒zda SAHI'yi kullan─▒rsan─▒z, l├╝tfen orijinal SAHI makalesine at─▒fta bulunun ve yazarlara te┼čekk├╝r edin:

@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}
}

Bilgisayarla g├Ârme toplulu─ču i├žin bu paha bi├žilmez kayna─č─▒ yaratan ve s├╝rd├╝ren SAHI ara┼čt─▒rma grubuna te┼čekk├╝rlerimizi sunar─▒z. SAHI ve yarat─▒c─▒lar─▒ hakk─▒nda daha fazla bilgi i├žin SAHI GitHub deposunu ziyaret edin.



Created 2023-11-12, Updated 2024-06-22
Authors: RizwanMunawar (1), glenn-jocher (6)

Yorumlar