Meet YOLO26: next-gen vision AI.

Link to this sectionIBM Watsonx ile YOLO26 Modellerini Eğitmek İçin Adım Adım Kılavuz#

Günümüzde ölçeklenebilir bilgisayarlı görü çözümleri giderek yaygınlaşıyor ve görsel verileri işleme biçimimizi dönüştürüyor. Bunun harika bir örneği, AI modellerinin geliştirilmesini, dağıtılmasını ve yönetimini basitleştiren gelişmiş bir AI ve veri platformu olan IBM Watsonx'tir. Tüm AI yaşam döngüsü için eksiksiz bir paket ve IBM Cloud hizmetleriyle kesintisiz entegrasyon sunar.

IBM Watsonx kullanarak Ultralytics YOLO26 modellerini eğitebilirsin. Verimli model eğitimi, belirli görevler için ince ayar yapma ve güçlü araçlar ile kullanıcı dostu bir kurulumla model performansını iyileştirme ile ilgilenen işletmeler için iyi bir seçenektir. Bu kılavuzda, ortamını hazırlamaktan eğitilmiş modellerini değerlendirmeye kadar her şeyi kapsayan, IBM Watsonx ile YOLO26 eğitme sürecinde sana rehberlik edeceğiz. Hadi başlayalım!

Link to this sectionIBM Watsonx nedir?#

Watsonx, IBM'in ticari üretken AI ve bilimsel veriler için tasarlanmış bulut tabanlı platformudur. IBM Watsonx'in üç bileşeni - watsonx.ai, watsonx.data ve watsonx.governance - iş problemlerini çözmeye yönelik AI projelerini hızlandırabilecek uçtan uca, güvenilir bir AI platformu oluşturmak için bir araya gelir. Makine öğrenimi modelleri oluşturmak, eğitmek ve dağıtmak için güçlü araçlar sağlar ve çeşitli veri kaynaklarıyla bağlantı kurmayı kolaylaştırır.

IBM Watsonx AI platform architecture overview

Kullanıcı dostu arayüzü ve iş birliği yetenekleri, geliştirme sürecini kolaylaştırır ve verimli model yönetimi ve dağıtımı sağlar. Bilgisayarlı görü, tahmine dayalı analitik, doğal dil işleme veya diğer AI uygulamaları için olsun, IBM Watsonx inovasyonu teşvik etmek için gereken araçları ve desteği sağlar.

Link to this sectionIBM Watsonx'in Temel Özellikleri#

IBM Watsonx üç ana bileşenden oluşur: watsonx.ai, watsonx.data ve watsonx.governance. Her bileşen, AI ve veri yönetiminin farklı yönlerine hitap eden özellikler sunar. Bunlara daha yakından bakalım.

Link to this sectionWatsonx.ai#

Watsonx.ai, AI geliştirme için güçlü araçlar sağlar ve IBM destekli özel modellere, Llama 3 gibi üçüncü taraf modellere ve IBM'in kendi Granite modellerine erişim sunar. AI istemleriyle denemeler yapmak için Prompt Lab'i, etiketli verilerle model performansını iyileştirmek için Tuning Studio'yu ve üretken AI uygulama geliştirmeyi basitleştirmek için Flows Engine'i içerir. Ayrıca, AI modeli yaşam döngüsünü otomatikleştirmek ve çeşitli API'lere ve kütüphanelere bağlanmak için kapsamlı araçlar sunar.

Link to this sectionWatsonx.data#

Watsonx.data, IBM Storage Fusion HCI entegrasyonu aracılığıyla hem bulut hem de şirket içi dağıtımları destekler. Kullanıcı dostu konsolu, ortamlar arasında verilere merkezi erişim sağlar ve yaygın SQL ile veri keşfini kolaylaştırır. Presto ve Spark gibi verimli sorgu motorlarıyla iş yüklerini optimize eder, AI destekli bir anlamsal katmanla veri içgörülerini hızlandırır, AI uygunluğu için bir vektör veritabanı içerir ve analitik ve AI verilerinin kolay paylaşımı için açık veri formatlarını destekler.

Link to this sectionWatsonx.governance#

Watsonx.governance, düzenleyici değişiklikleri otomatik olarak belirleyerek ve politikaları uygulayarak uyumluluğu kolaylaştırır. Gereksinimleri dahili risk verileriyle ilişkilendirir ve güncel AI bilgi formları sağlar. Platform, yanlılık ve sapma gibi sorunları tespit etmek için uyarılar ve araçlarla riski yönetmeye yardımcı olur. Ayrıca, AI yaşam döngüsünün izlenmesini ve belgelenmesini otomatikleştirir, model envanteriyle AI geliştirmeyi organize eder ve kullanıcı dostu gösterge tabloları ve raporlama araçlarıyla iş birliğini geliştirir.

Link to this sectionIBM Watsonx Kullanarak YOLO26 Nasıl Eğitilir#

YOLO26 model eğitim iş akışını hızlandırmak için IBM Watsonx kullanabilirsin.

Link to this sectionÖn koşullar#

Bir IBM Cloud hesabı oluşturarak watsonx.ai projesi açman gerekir, ayrıca veri setini yüklemek için bir Kaggle hesabına da ihtiyacın olacak.

Link to this sectionAdım: Ortamını Kur#

Öncelikle, bir Jupyter Notebook kullanmak için bir IBM hesabı kurman gerekecek. IBM Cloud hesabını kullanarak watsonx.ai oturumu aç.

Ardından, bir watsonx.ai projesi ve bir Jupyter Notebook oluştur.

Bunu yaptığında, veri kümeni yüklemen için bir not defteri ortamı açılacak. Basit bir nesne algılama modeli eğitimi görevini ele almak için bu öğreticideki kodu kullanabilirsin.

Link to this sectionAdım: İlgili Kütüphaneleri Yükle ve İçe Aktar#

Ardından, gerekli Python kütüphanelerini yükleyebilir ve içe aktarabilirsin.

Kurulum
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headless

Kurulum süreci ile ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsan, çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.

Daha sonra, ihtiyaç duyulan paketleri içe aktarabilirsin.

İlgili Kütüphaneleri İçe Aktar
# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Link to this sectionAdım: Veriyi Yükle#

Bu öğretici için, Kaggle'da bulunan bir deniz çöpü veri kümesini kullanacağız. Bu veri kümesiyle, su altı görüntülerindeki çöpleri ve biyolojik nesneleri algılamak ve sınıflandırmak için özel bir YOLO26 modeli eğiteceğiz.

Veri kümesini doğrudan Kaggle API kullanarak not defterine yükleyebiliriz. Öncelikle ücretsiz bir Kaggle hesabı oluştur. Bir hesap oluşturduktan sonra bir API anahtarı oluşturman gerekecek. Anahtarını oluşturmaya yönelik yönergeler, Kaggle API belgelerinde "API credentials" (API kimlik bilgileri) bölümünde bulunabilir.

Kaggle kullanıcı adını ve API anahtarını aşağıdaki koda kopyalayıp yapıştır. Ardından API'yi yüklemek ve veri kümesini Watsonx'e yüklemek için kodu çalıştır.

Kurulum
# Install kaggle
pip install kaggle

Kaggle'ı yükledikten sonra veri kümesini Watsonx'e yükleyebiliriz.

Veriyi Yükle
# Replace "username" string with your username
os.environ["KAGGLE_USERNAME"] = "username"
# Replace "apiKey" string with your key
os.environ["KAGGLE_KEY"] = "apiKey"

# Load dataset
os.system("kaggle datasets download atiqishrak/trash-dataset-icra19 --unzip")

# Store working directory path as work_dir
work_dir = os.getcwd()

# Print work_dir path
print(os.getcwd())

# Print work_dir contents
print(os.listdir(f"{work_dir}"))

# Print trash_ICRA19 subdirectory contents
print(os.listdir(f"{work_dir}/trash_ICRA19"))

Veri kümesini yükledikten sonra, çalışma dizinimizi yazdırdık ve kaydettik. Ayrıca "trash_ICRA19" veri kümesinin düzgün yüklendiğini doğrulamak için çalışma dizinimizin içeriğini yazdırdık.

Dizinin içeriğinde "trash_ICRA19" görüyorsan, başarıyla yüklenmiş demektir. Üç dosya/klasör görmelisin: bir config.yaml dosyası, bir videos_for_testing dizini ve bir dataset dizini. videos_for_testing dizinini görmezden geleceğiz, bu yüzden onu silmekten çekinme.

We will use the config.yaml file and the contents of the dataset directory to train our object detection model. Here is a sample image from our marine litter data set.

Marine Litter with Bounding Box

Link to this sectionAdım: Veriyi Ön İşle#

Neyse ki, deniz çöpü veri kümesindeki tüm etiketler halihazırda YOLO .txt dosyaları olarak biçimlendirilmiştir. Ancak, modelimizin görüntüyü ve etiketleri işlemesine yardımcı olmak için görüntü ve etiket dizinlerinin yapısını yeniden düzenlememiz gerekiyor. Şu anda, yüklenen veri kümesi dizinimiz bu yapıyı takip ediyor:

Loaded Dataset Directory

Ancak, YOLO modelleri varsayılan olarak train/val/test ayrımı içinde ayrı alt dizinlerde görüntüler ve etiketler gerektirir. Dizini aşağıdaki yapıya göre yeniden düzenlememiz gerekiyor:

YOLO Directory Structure

Veri kümesi dizinini yeniden düzenlemek için aşağıdaki betiği çalıştırabiliriz:

Veriyi Ön İşle
# Function to reorganize dir
def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        # Create image and label subdirs if non-existent
        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        # Move images and labels to respective subdirs
        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
            # Delete .xml files
            elif filename.endswith(".xml"):
                os.remove(os.path.join(subdir_path, filename))

if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Ardından, veri kümesi için .yaml dosyasını değiştirmemiz gerekiyor. .yaml dosyamızda kullanacağımız kurulum budur. Sınıf kimliği numaraları 0'dan başlar:

path: /path/to/dataset/directory # root directory for dataset
train: train/images # train images subdirectory
val: train/images # validation images subdirectory
test: test/images # test images subdirectory

# Classes
names:
    0: plastic
    1: bio
    2: rov

config.yaml dosyasının mevcut içeriğini silmek ve yeni veri kümesi dizin yapımızı yansıtan yapılandırmayla değiştirmek için aşağıdaki betiği çalıştır. Betik otomatik olarak daha önce tanımladığımız work_dir değişkenini kullanır, bu nedenle yürütmeden önce veri kümeni işaret ettiğinden emin ol ve train, val ve test alt dizin tanımlarını değiştirilmeden bırak.

.yaml Dosyasını Düzenle
# Contents of new config.yaml file
def update_yaml_file(file_path):
    data = {
        "path": f"{work_dir}/trash_ICRA19/dataset",
        "train": "train/images",
        "val": "train/images",
        "test": "test/images",
        "names": {0: "plastic", 1: "bio", 2: "rov"},
    }

    # Ensures the "names" list appears after the sub/directories
    names_data = data.pop("names")
    with open(file_path, "w") as yaml_file:
        yaml.dump(data, yaml_file)
        yaml_file.write("\n")
        yaml.dump({"names": names_data}, yaml_file)

if __name__ == "__main__":
    file_path = f"{work_dir}/trash_ICRA19/config.yaml"  # .yaml file path
    update_yaml_file(file_path)
    print(f"{file_path} updated successfully.")

Link to this sectionAdım: YOLO26 modelini eğit#

Önceden eğitilmiş varsayılan bir YOLO26 modeline ince ayar yapmak için aşağıdaki komut satırı kodunu çalıştır.

YOLO26 modelini eğit
!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=True

Model eğitimi komutundaki parametrelere daha yakından bakalım:

  • task: Belirtilen YOLO modelini ve veri kümesini hangi bilgisayarlı görü görevi için kullandığını belirtir.
  • mode: Belirtilen modeli ve veriyi hangi amaçla yüklediğini belirtir. Bir model eğittiğimiz için "train" (eğit) olarak ayarlanmıştır. Daha sonra, modelimizin performansını test ettiğimizde, onu "predict" (tahmin et) olarak ayarlayacağız.
  • epochs: YOLO26'nın tüm veri kümemizden kaç kez geçeceğini sınırlandırır.
  • batch: Sayısal değer, eğitim batch size (yığın boyutlarını) belirler. Yığınlar, bir modelin parametrelerini güncellemeden önce işlediği görüntü sayısıdır.
  • lr0: Modelin başlangıç öğrenme oranını belirtir.
  • plots: YOLO'yu modelimizin eğitim ve değerlendirme metriklerinin grafiklerini oluşturması ve kaydetmesi için yönlendirir.

Model eğitimi süreci ve en iyi uygulamalar hakkında ayrıntılı bilgi için YOLO26 Model Eğitimi kılavuzuna başvur. Bu kılavuz, deneylerinden en iyi verimi almana ve YOLO26'yı etkili bir şekilde kullandığından emin olmana yardımcı olacaktır.

Link to this sectionAdım: Modeli Test Et#

İnce ayar yapılmış modelimizin performansını test etmek için artık çıkarım (inference) çalıştırabiliriz:

YOLO26 modelini test et
!yolo task=detect mode=predict source={work_dir}/trash_ICRA19/dataset/test/images model={work_dir}/runs/detect/train/weights/best.pt conf=0.5 iou=.5 save=True save_txt=True

Bu kısa betik, test kümemizdeki her görüntü için tahmini etiketler ve orijinal görüntünün üzerine tahmini sınırlayıcı kutuyu bindiren yeni çıktı görüntü dosyaları oluşturur.

Her görüntü için tahmin edilen .txt etiketleri save_txt=True argümanı aracılığıyla kaydedilir ve sınırlayıcı kutu bindirmeleri olan çıktı görüntüleri save=True argümanı aracılığıyla oluşturulur. conf=0.5 parametresi, modele %50'den daha düşük güven düzeyine sahip tüm tahminleri yoksaymasını bildirir.

Son olarak, iou=.5 modeli, aynı sınıftaki %50 veya daha fazla örtüşmeye sahip kutuları yoksayması için yönlendirir. Aynı nesne için oluşturulan potansiyel yinelenen kutuları azaltmaya yardımcı olur. Modelimizin bir avuç görüntüde nasıl performans gösterdiğini görmek için tahmini sınırlayıcı kutu bindirmelerine sahip görüntüleri yükleyebiliriz.

Tahminleri Görüntüle
# Show the first ten images from the preceding prediction task
for pred_dir in glob.glob(f"{work_dir}/runs/detect/predict/*.jpg")[:10]:
    img = Image.open(pred_dir)
    display(img)

Yukarıdaki kod, test kümesinden on görüntüyü, sınıf adı etiketleri ve güven düzeyleri eşliğinde, tahmin edilen sınırlayıcı kutularıyla birlikte görüntüler.

Link to this sectionAdım: Modeli Değerlendir#

Her sınıf için modelin kesinlik ve duyarlılık görselleştirmelerini oluşturabiliriz. Bu görselleştirmeler eğitim çalıştırması dizinine ({work_dir}/runs/detect/train/) kaydedilir. Kesinlik puanı BoxP_curve.png içinde görüntülenir:

Model precision-confidence evaluation curve

Grafik, modelin tahminler için güven düzeyi arttıkça hassasiyette üstel bir artış olduğunu gösterir. Ancak, model hassasiyeti iki dönemden sonra belirli bir güven düzeyinde henüz dengelenmemiştir.

Duyarlılık grafiği (BoxR_curve.png) ters bir eğilim gösterir:

Model recall-confidence evaluation curve

Hassasiyetin aksine, geri çağırma ters yönde hareket eder, daha düşük güvenli durumlarda daha yüksek geri çağırma ve daha yüksek güvenli durumlarda daha düşük geri çağırma gösterir. Bu, sınıflandırma modelleri için hassasiyet ve geri çağırma arasındaki ödünleşimin uygun bir örneğidir.

Link to this sectionAdım: Örtüşme Üzerinden Kesişim Hesaplama#

Tahmin edilen bir sınırlayıcı kutu ile aynı nesne için bir gerçek doğruluk sınırlayıcı kutusu arasındaki IoU'yu hesaplayarak tahmin doğruluğunu ölçebilirsin. Daha fazla ayrıntı için IBM'in YOLO26 eğitimi hakkındaki öğreticisine göz at.

Link to this sectionÖzet#

IBM Watsonx'in temel özelliklerini ve IBM Watsonx kullanarak bir YOLO26 modelini nasıl eğiteceğimizi keşfettik. Ayrıca, IBM Watsonx'in model oluşturma, veri yönetimi ve uyumluluk için gelişmiş araçlarla AI iş akışlarını nasıl geliştirebileceğini de gördük.

Kullanım hakkında daha fazla ayrıntı için IBM Watsonx resmi belgelerini ziyaret et.

Ayrıca, farklı heyecan verici entegrasyonlar hakkında daha fazla bilgi edinmek için Ultralytics entegrasyon kılavuzu sayfasını kontrol etmeyi unutma.

Link to this sectionSSS#

Link to this sectionIBM Watsonx kullanarak nasıl YOLO26 modeli eğitebilirim?#

IBM Watsonx kullanarak bir YOLO26 modeli eğitmek için şu adımları izle:

  1. Ortamını Kur: Bir IBM Cloud hesabı oluştur ve bir Watsonx.ai projesi ayarla. Kodlama ortamın için bir Jupyter Notebook kullan.
  2. Kütüphaneleri Yükle: torch, opencv ve ultralytics gibi gerekli kütüphaneleri yükle.
  3. Veriyi Yükle: Veri kümeni Watsonx'e yüklemek için Kaggle API kullan.
  4. Veriyi Ön İşle: Veri kümeni gerekli dizin yapısına göre düzenle ve .yaml yapılandırma dosyasını güncelle.
  5. Modeli Eğit: Modelini epochs, batch size ve learning rate gibi belirli parametrelerle eğitmek için YOLO komut satırı arayüzünü kullan.
  6. Test Et ve Değerlendir: Modeli test etmek için çıkarım çalıştır ve hassasiyet ve geri çağırma gibi metrikleri kullanarak performansını değerlendir.

Ayrıntılı yönergeler için YOLO26 Model Eğitimi kılavuzumuza başvur.

Link to this sectionAI modeli eğitimi için IBM Watsonx'in temel özellikleri nelerdir?#

IBM Watsonx, AI modeli eğitimi için çeşitli temel özellikler sunar:

  • Watsonx.ai: IBM destekli özel modellere ve Llama 3 gibi üçüncü taraf modellere erişim dahil olmak üzere AI geliştirme için araçlar sağlar. Kapsamlı AI yaşam döngüsü yönetimi için Prompt Lab, Tuning Studio ve Flows Engine'i içerir.
  • Watsonx.data: Merkezi veri erişimi, Presto ve Spark gibi verimli sorgu motorları ve AI destekli bir anlamsal katman sunarak bulut ve şirket içi dağıtımları destekler.
  • Watsonx.governance: Uyumluluğu otomatikleştirir, uyarılarla riski yönetir ve yanlılık ve sapma gibi sorunları tespit etmek için araçlar sağlar. Ayrıca iş birliği için gösterge tabloları ve raporlama araçları içerir.

Daha fazla bilgi için IBM Watsonx resmi belgelerini ziyaret et.

Link to this sectionNeden Ultralytics YOLO26 modellerini eğitmek için IBM Watsonx kullanmalıyım?#

IBM Watsonx, AI yaşam döngüsünü kolaylaştıran kapsamlı araç paketi nedeniyle Ultralytics YOLO26 modellerini eğitmek için mükemmel bir seçimdir. Temel avantajlar şunlardır:

  • Ölçeklenebilirlik: Model eğitimini IBM Cloud hizmetleriyle kolayca ölçeklendir.
  • Entegrasyon: Çeşitli veri kaynakları ve API'lerle sorunsuz bir şekilde entegre ol.
  • Kullanıcı Dostu Arayüz: İş birlikçi ve sezgisel bir arayüzle geliştirme sürecini basitleştirir.
  • Gelişmiş Araçlar: Model performansını artırmak için Prompt Lab, Tuning Studio ve Flows Engine gibi güçlü araçlara erişim.

Ultralytics YOLO26 hakkında daha fazla bilgi edinin ve entegrasyon kılavuzumuzda IBM Watsonx kullanarak modelleri nasıl eğiteceğinizi öğrenin.

Link to this sectionIBM Watsonx üzerinde YOLO26 eğitimi için veri kümemi nasıl ön işleyebilirim?#

IBM Watsonx üzerinde YOLO26 eğitimi için veri kümeni ön işlemek üzere:

  1. Dizinleri Düzenle: Veri kümenin, train/val/test ayrımı içinde görüntüler ve etiketler için ayrı alt dizinlerle YOLO dizin yapısını takip ettiğinden emin ol.
  2. ** .yaml Dosyasını Güncelle**: Yeni dizin yapısını ve sınıf adlarını yansıtmak için .yaml yapılandırma dosyasını değiştir.
  3. Ön İşleme Betiğini Çalıştır: Veri kümeni yeniden düzenlemek ve .yaml dosyasını buna göre güncellemek için bir Python betiği kullan.

İşte veri kümeni düzenlemek için örnek bir betik:

import os
import shutil

def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))

if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Daha fazla ayrıntı için veri ön işleme kılavuzumuza başvur.

Link to this sectionIBM Watsonx üzerinde bir YOLO26 modeli eğitmek için ön koşullar nelerdir?#

IBM Watsonx üzerinde bir YOLO26 modeli eğitmeye başlamadan önce, aşağıdaki ön koşullara sahip olduğundan emin ol:

  • IBM Cloud Hesabı: Watsonx.ai'ye erişmek için IBM Cloud'da bir hesap oluştur.
  • Kaggle Hesabı: Veri setlerini yüklemek için bir Kaggle hesabına ve bir API anahtarına ihtiyacın olacak.
  • Jupyter Notebook: Kodlama ve model eğitimi için Watsonx.ai içerisinde bir Jupyter Notebook ortamı kur.

Ortamını kurma hakkında daha fazla bilgi için Ultralytics Kurulum kılavuzumuzu ziyaret et.

Yorumlar