Ultralytics YOLO27:

IBM Watsonx ile YOLO26 Modellerini Eğitmeye Yönelik 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 ele alma şeklimizi dönüştürüyor. Buna harika bir örnek, AI modellerinin geliştirilmesini, dağıtımını ve yönetimini kolaylaştıran gelişmiş bir AI ve veri platformu olan IBM Watsonx'tir. AI yaşam döngüsünün tamamı için kapsamlı bir paket ve IBM Cloud hizmetleriyle sorunsuz entegrasyon sunar.

IBM Watsonx kullanarak Ultralytics YOLO26 modellerini eğitebilirsin. Verimli model eğitimi, belirli görevler için ince ayar ve güçlü araçlarla ve kullanıcı dostu bir kurulumla model performansını iyileştirmek isteyen kuruluşlar için iyi bir seçenektir. Bu kılavuzda, ortamını kurmaktan eğittiğin modelleri değerlendirmeye kadar her şeyi ele alarak YOLO26'yı IBM Watsonx ile eğitme sürecinde sana yol göstereceğiz. Başlayalım!

IBM Watsonx nedir?#

Watsonx, ticari üretken AI ve bilimsel veriler için tasarlanmış IBM'in bulut tabanlı platformudur. IBM Watsonx'in üç bileşeni olan watsonx.ai, watsonx.data ve watsonx.governance, işletme sorunlarını çözmeye yönelik AI projelerini hızlandırabilen uçtan uca ve güvenilir bir AI platformu oluşturmak üzere bir araya gelir. Makine öğrenimi modelleri oluşturmaya, eğitmeye ve dağıtmaya yönelik güçlü araçlar sunar ve çeşitli veri kaynaklarına bağlanmayı kolaylaştırır.

IBM Watsonx AI platform architecture overview

Kullanıcı dostu arayüzü ve iş birliğine dayalı özellikleri geliştirme sürecini kolaylaştırır, verimli model yönetimi ve dağıtımına yardımcı olur. Bilgisayarlı görü, tahmine dayalı analiz, doğal dil işleme veya diğer AI uygulamaları için IBM Watsonx, yeniliği desteklemek üzere gereken araçları ve desteği sunar.

IBM 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 yönelik özellikler sunar. Şimdi bunlara daha yakından bakalım.

Watsonx.ai#

Watsonx.ai, AI geliştirme için güçlü araçlar sunar ve IBM tarafından desteklenen özel modellere, Llama 3 gibi üçüncü taraf modellere ve IBM'in kendi Granite modellerine erişim sağlar. AI istemlerini denemek için Prompt Lab'i, etiketli verilerle model performansını iyileştirmek için Tuning Studio'yu ve üretken AI uygulaması geliştirmeyi kolaylaştırmak için Flows Engine'i içerir. Ayrıca AI model yaşam döngüsünü otomatikleştirmek ve çeşitli API'lere ve kitaplıklara bağlanmak için kapsamlı araçlar sunar.

Watsonx.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ındaki 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 anlamsal katmanla veri içgörülerini hızlandırır, AI alaka düzeyi için bir vektör veritabanı içerir ve analitik ile AI verilerinin kolayca paylaşılması için açık veri biçimlerini destekler.

Watsonx.governance#

Watsonx.governance, düzenleyici değişiklikleri otomatik olarak belirleyip politikaları uygulayarak uyumluluğu kolaylaştırır. Gereksinimleri dahili risk verilerine bağlar ve güncel AI bilgi formları sunar. Platform, yanlılık ve kayma gibi sorunları tespit etmeye yönelik 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 düzenler ve kullanıcı dostu panolar ve raporlama araçlarıyla iş birliğini geliştirir.

IBM Watsonx Kullanarak YOLO26 Nasıl Eğitilir?#

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

Ön koşullar#

Bir IBM Cloud hesabına ihtiyacın var; bu hesapla bir watsonx.ai projesi oluşturabilirsin. Veri kümesini yüklemek için ayrıca bir Kaggle hesabına da ihtiyacın olacak.

Adım: Ortamını Kur#

Öncelikle Jupyter Notebook kullanmak için bir IBM hesabı oluşturman gerekir. watsonx.ai üzerinde IBM Cloud hesabını kullanarak oturum aç.

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

Bunu yaptığında veri kümeni yükleyebilmen için bir notebook ortamı açılır. Basit bir nesne algılama modeli eğitimi görevini gerçekleştirmek için bu öğreticideki kodu kullanabilirsin.

Adım: İlgili Kitaplıkları Yükle ve İçe Aktar#

Sonraki adımda gerekli Python kitaplıklarını yükleyip içe aktarabilirsin.

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

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

Ardından gereken paketleri içe aktarabilirsin.

İlgili Kitaplıkları İçe Aktar
import ultralytics

ultralytics.checks()

Adım: Verileri Yükle#

Bu öğreticide 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ılayıp sınıflandırmak üzere özel bir YOLO26 modeli eğiteceğiz.

Veri kümesini Kaggle API'sini kullanarak doğrudan notebook'a yükleyebiliriz. Önce ücretsiz bir Kaggle hesabı oluştur. Hesabını oluşturduktan sonra bir API anahtarı oluşturman gerekir. Anahtarını oluşturmaya yönelik yönergeleri Kaggle API belgelerinde "API credentials" bölümünde bulabilirsin.

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.

Verileri 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ırıp kaydettik. Ayrıca "trash_ICRA19" veri kümesinin düzgün şekilde yüklendiğini doğrulamak için çalışma dizinimizin içeriğini de yazdırdık.

Dizinin içeriği arasında "trash_ICRA19" görüyorsan başarıyla yüklenmiştir. Üç dosya/klasör görmelisin: bir config.yaml dosyası, bir videos_for_testing dizini ve bir dataset dizini. videos_for_testing dizinini kullanmayacağız, bu nedenle istersen silebilirsin.

Nesne algılama modelimizi eğitmek için config.yaml dosyasını ve veri kümesi dizininin içeriğini kullanacağız. Aşağıda deniz çöpü veri kümemizden örnek bir görüntü yer alıyor.

Marine Litter with Bounding Box

Adım: Verileri Ön İşle#

Neyse ki deniz çöpü veri kümesindeki tüm etiketler zaten YOLO .txt dosyaları olarak biçimlendirilmiş durumda. Ancak modelimizin görüntüleri 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 dizinimizin yapısı şöyle:

Loaded Dataset Directory

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

YOLO Directory Structure

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

Verileri Ö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", ".png", ".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ümesinin .yaml dosyasını değiştirmemiz gerekiyor. .yaml dosyamızda kullanacağımız kurulum aşağıdadır. 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 silip yeni veri kümesi dizini yapımızı yansıtan yapılandırmayla değiştirmek için aşağıdaki betiği çalıştır. Betik, daha önce tanımladığımız work_dir değişkenini otomatik olarak kullanır. Bu nedenle çalıştırmadan önce değişkenin veri kümeni gösterdiğinden emin ol ve train, val ve test alt dizini tanımlarını değiştirme.

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

Adı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 detect train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=True

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

  • detect: Belirtilen YOLO modelini ve veri setini kullandığın görüntü işleme görevi.
  • train: Belirtilen modeli ve veriyi hangi amaçla yüklediğini belirten mod. Daha sonra modelinin performansını test ederken predict kullanacaksın.
  • epochs: YOLO26'nın veri kümesinin tamamı üzerinden kaç kez geçeceğini belirler.
  • batch: Sayısal değer eğitim batch boyutlarını belirtir. Batch'ler, 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'ya modelimizin eğitim ve değerlendirme metriklerinin grafiklerini oluşturup kaydetmesini söyler.

Model eğitim süreci ve en iyi uygulamalar hakkında ayrıntılı bilgi edinmek için YOLO26 Model Eğitim kılavuzuna başvur. Bu kılavuz, deneylerinden en iyi şekilde yararlanmana ve YOLO26'yı etkili biçimde kullandığından emin olmana yardımcı olur.

Adım: Modeli Test Et#

Artık ince ayar yapılmış modelimizin performansını test etmek için çıkarım çalıştırabiliriz:

YOLO26 Modelini Test Et
!yolo detect 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ümesindeki her görüntü için tahmin edilen etiketleri ve tahmin edilen sınırlayıcı kutuyu özgün görüntünün üzerine yerleştiren yeni çıktı görüntü dosyalarını oluşturur.

Her görüntü için tahmin edilen .txt etiketleri save_txt=True bağımsız değişkeni aracılığıyla kaydedilir ve sınırlayıcı kutu kaplamalarının bulunduğu çıktı görüntüleri save=True bağımsız değişkeniyle oluşturulur. conf=0.5 parametresi, modele güven düzeyi %50'den düşük olan tüm tahminleri yok saymasını bildirir.

Son olarak iou=.5, modele aynı sınıftaki %50 veya daha fazla örtüşmeye sahip kutuları yok saymasını bildirir. Bu, aynı nesne için oluşturulan olası yinelenen kutuları azaltmaya yardımcı olur. Modelimizin birkaç görüntüde nasıl performans gösterdiğini görmek için tahmin edilen sınırlayıcı kutu kaplamalarının bulunduğu 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 tahmin edilen sınırlayıcı kutularla birlikte sınıf adı etiketleri ve güven düzeyleri eklenmiş on görüntü görüntüler.

Adım: Modeli Değerlendir#

Her sınıf için modelin kesinlik ve geri çağırma değerlerinin görselleştirmelerini oluşturabiliriz. Bu görselleştirmeler eğitim çalıştırma dizinine ({work_dir}/runs/detect/train/) kaydedilir. Kesinlik puanı BoxP_curve.png dosyasında görüntülenir:

Model precision-confidence evaluation curve

Grafik, modelin tahminlere yönelik güven düzeyi arttıkça kesinlikte üstel bir artış olduğunu gösterir. Ancak iki epoch sonrasında model kesinliği henüz belirli bir güven düzeyinde dengelenmemiştir.

Geri çağırma grafiği (BoxR_curve.png) ters bir eğilim gösterir:

Model recall-confidence evaluation curve

Kesinliğin aksine geri çağırma ters yönde ilerler; düşük güvenli örneklerde daha yüksek, yüksek güvenli örneklerde ise daha düşük geri çağırma gösterir. Bu, sınıflandırma modellerinde kesinlik ve geri çağırma arasındaki ödünleşime uygun bir örnektir.

Adım: Kesişim-Birleşim Oranını Hesaplama#

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

Özet#

IBM Watsonx'in temel özelliklerini ve IBM Watsonx kullanarak YOLO26 modelinin nasıl eğitileceğini inceledik. 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 gördük.

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

Ayrıca farklı ve heyecan verici entegrasyonlar hakkında daha fazla bilgi edinmek için Ultralytics entegrasyon kılavuzu sayfasına göz atmayı unutma.

SSS#

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

    1. Ortamını Kur: Bir IBM Cloud hesabı oluştur ve bir Watsonx.ai projesi kur. Kodlama ortamın olarak bir Jupyter Notebook kullan.
    2. Kitaplıkları Yükle: torch, opencv ve ultralytics gibi gerekli kitaplıkları yükle.
    3. Verileri Yükle: Veri kümeni Watsonx'e yüklemek için Kaggle API'sini kullan.
    4. Verileri Ön İşle: Veri kümeni gerekli dizin yapısında 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 kesinlik ile geri çağırma gibi metrikleri kullanarak performansını değerlendir.

    Ayrıntılı talimatlar için YOLO26 Model Eğitim kılavuzumuza başvur.

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

    • Watsonx.ai: IBM tarafından desteklenen özel modellere ve Llama 3 gibi üçüncü taraf modellere erişim de dahil olmak üzere AI geliştirme araçları sunar. 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 kayma gibi sorunları tespit etmeye yönelik araçlar sunar. Ayrıca iş birliği için panolar ve raporlama araçları içerir.

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

  • IBM Watsonx, AI yaşam döngüsünü kolaylaştıran kapsamlı araç paketi sayesinde Ultralytics YOLO26 modellerini eğitmek için mükemmel bir seçenektir. 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: İş birliğine dayalı ve sezgisel arayüzüyle geliştirme sürecini kolaylaştırır.
    • Gelişmiş Araçlar: Model performansını geliştirmek için Prompt Lab, Tuning Studio ve Flows Engine gibi güçlü araçlara erişim sağlar.

    Ultralytics YOLO26 ve IBM Watsonx kullanarak modellerin nasıl eğitileceği hakkında entegrasyon kılavuzumuzdan daha fazla bilgi edin.

  • 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 bölümü içinde görüntüler ve etiketler için ayrı alt dizinler bulunan YOLO dizin yapısını izlediğinden emin ol.
    2. .yaml Dosyasını Güncelle: Yeni dizin yapısını ve sınıf adlarını yansıtacak şekilde .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.

    Veri kümeni düzenlemek için örnek bir betik aşağıda verilmiştir:

    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", ".png", ".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.

  • YOLO26 modeli eğitmeye başlamadan önce aşağıdaki ön koşullara sahip olduğundan emin ol:

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

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

Yorumlar