IBM 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önetilmesini basitleştiren gelişmiş bir yapay zeka ve veri platformu olan IBM Watsonx'tir. Platform, tüm yapay zeka yaşam döngüsü için eksiksiz bir paket ve IBM Cloud hizmetleriyle kusursuz entegrasyon sunar.

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

IBM Watsonx Nedir?

Watsonx, ticari üretken yapay zeka 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ş problemlerini çözmeyi amaçlayan yapay zeka projelerini hızlandırabilecek uçtan uca, güvenilir bir yapay zeka 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ına bağlanmayı 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 ile dağıtımına yardımcı olur. İster bilgisayarlı görü, tahmine dayalı analitik, doğal dil işleme veya diğer yapay zeka uygulamaları için olsun, IBM Watsonx inovasyonu desteklemek için gereken araçları ve desteği sağlar.

IBM Watsonx'in Temel Özellikleri

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

Watsonx.ai

Watsonx.ai, yapay zeka 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. Yapay zeka istemleriyle denemeler yapmak için Prompt Lab'i, etiketli verilerle model performansını iyileştirmek için Tuning Studio'yu ve üretken yapay zeka uygulaması geliştirmeyi basitleştirmek için Flows Engine'i içerir. Ayrıca, yapay zeka model 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.

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 genelindeki 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, yapay zeka destekli anlamsal bir katmanla veri içgörülerini hızlandırır, yapay zeka uygunluğu için bir vektör veritabanı içerir ve analitik ile yapay zeka verilerinin kolay paylaşımı için açık veri formatlarını destekler.

Watsonx.governance

Watsonx.governance, düzenleyici değişiklikleri otomatik olarak tanımlayarak ve politikaları uygulayarak uyumluluğu kolaylaştırır. Gereksinimleri dahili risk verileriyle ilişkilendirir ve güncel yapay zeka bilgi formları sağlar. Platform, önyargı ve kayma (bias and drift) gibi sorunları tespit etmek için uyarılar ve araçlarla riski yönetmeye yardımcı olur. Ayrıca yapay zeka yaşam döngüsünün izlenmesini ve belgelenmesini otomatikleştirir, model envanteri ile yapay zeka 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ğitimi iş akışını hızlandırmak için IBM Watsonx'i kullanabilirsin.

Ön koşullar

You need an IBM Cloud account to create a watsonx.ai project, and you'll also need a Kaggle account to load the data set.

Adım 1: Ortamını Hazırla

Öncelikle, bir Jupyter Notebook kullanmak için bir IBM hesabı oluşturman gerekecek. IBM Cloud hesabını kullanarak watsonx.ai adresine giriş yap.

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

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

Adım 2: İlgili Kütüphaneleri Kur ve İçe Aktar

Sırada, gerekli Python kütüphanelerini kurabilir ve 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ümler ve ipuçları için Yaygın Sorunlar kılavuzumuza danış.

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

Adım 3: Veriyi Yükle

Bu eğitim 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 tespit etmek ve sınıflandırmak için özel bir YOLO26 modeli eğiteceğiz.

Veri kümesini doğrudan Kaggle API'sini kullanarak notebook'a yükleyebiliriz. İlk olarak, ücretsiz bir Kaggle hesabı oluştur. Bir hesap oluşturduktan sonra bir API anahtarı oluşturman gerekecek. Anahtarını oluşturma talimatlarını Kaggle API belgelerinde "API credentials" başlığı altında bulabilirsin.

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

Kurulum
# Install kaggle
pip install kaggle

Kaggle'ı kurduktan 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 bir şekilde yüklendiğini doğrulamak için çalışma dizinimizin içeriğini yazdırdık.

Dizin içeriğinde "trash_ICRA19" klasörünü 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öz ardı edeceğiz, bu yüzden onu silebilirsin.

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

Adım 4: Veriyi Ön İşleme

Neyse ki, deniz çöpü veri kümesindeki tüm etiketler halihazırda YOLO .txt dosyaları olarak biçimlendirilmiş. 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 dizinimiz şu 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. Dizin yapısını aşağıdaki şekilde 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 şu şekildedir. Sınıf kimlik 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 yüzden çalıştırmadan önce veri kümeni işaret ettiğinden emin ol ve train, val, test alt dizin tanımlarını değiştirmeden 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.")

Adım 5: 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" olarak ayarlanmıştır. Daha sonra modelimizin performansını test ettiğimizde, bunu "predict" olarak ayarlayacağız.
  • epochs: YOLO26'nın tüm veri kümemiz üzerinden geçeceği tur sayısını sınırlandırır.
  • batch: Sayısal değer, eğitim parti boyutlarını (batch sizes) belirler. Partiler, bir modelin parametrelerini güncellemeden önce işlediği görüntü sayısıdır.
  • lr0: Modelin başlangıç öğrenme oranını (learning rate) belirtir.
  • plots: YOLO'yu modelimizin eğitim ve değerlendirme metriklerinin grafiklerini oluşturmaya ve kaydetmeye 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 şekilde yararlanmana ve YOLO26'yı etkili bir şekilde kullandığından emin olmana yardımcı olacaktır.

Adım 6: Modeli Test Et

İnce ayar yapılmış modelimizin performansını test etmek için çı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 tahmin edilen etiketleri ve ayrıca tahmin edilen sınırlayıcı kutuyu (bounding box) orijinal görüntünün üzerine bindiren yeni çıktı görüntü dosyalarını 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 bindirmelerine sahip çı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 göz ardı etmesini bildirir.

Son olarak, iou=.5 modeli aynı sınıftaki %50 veya daha fazla örtüşmeye sahip kutuları göz ardı etmeye yönlendirir. Aynı nesne için oluşturulan olası kopya kutuları azaltmaya yardımcı olur. Modelimizin bir grup görüntüde nasıl performans gösterdiğini görmek için tahmin edilen 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ü tahmin edilen sınırlayıcı kutuları, sınıf adı etiketleri ve güven düzeyleri ile birlikte görüntüler.

Adım 7: Modeli Değerlendir

Modelin her sınıf için kesinlik (precision) ve duyarlılığının (recall) görselleştirmelerini üretebiliriz. Bu görselleştirmeler, ana dizinde, train klasörünün altında kaydedilir. Kesinlik puanı P_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 kesinlikte üstel bir artış olduğunu gösterir. Ancak, model kesinliği iki epoktan (epoch) sonra belirli bir güven düzeyinde henüz dengelenmemiştir.

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

Model recall-confidence evaluation curve

Kesinlikten farklı olarak, duyarlılık zıt yönde hareket eder; düşük güvenli durumlarda daha yüksek duyarlılık, yüksek güvenli durumlarda ise daha düşük duyarlılık gösterir. Bu, sınıflandırma modelleri için kesinlik ve duyarlılık arasındaki ödünleşim (trade-off) için yerinde bir örnektir.

Adım 8: Örtüşme Üzerinden Kesişimin (IoU) Hesaplanması

Tahmin doğruluğunu (accuracy), tahmin edilen bir sınırlayıcı kutu ile aynı nesne için gerçek değer sınırlayıcı kutusu arasındaki IoU'yu hesaplayarak ölçebilirsin. Daha fazla ayrıntı için IBM'in YOLO26 eğitme eğitimine göz at.

Özet

IBM Watsonx'in temel özelliklerini ve IBM Watsonx kullanarak bir YOLO26 modelini nasıl eğitebileceğimizi inceledik. Ayrıca IBM Watsonx'in model oluşturma, veri yönetimi ve uyumluluk için gelişmiş araçlarla yapay zeka iş akışlarını nasıl geliştirebileceğini 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ına göz atmayı unutma.

SSS

IBM Watsonx kullanarak nasıl YOLO26 modeli eğitirim?

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

  1. Ortamını Hazırla: Bir IBM Cloud hesabı oluştur ve bir Watsonx.ai projesi hazırla. Kodlama ortamın için bir Jupyter Notebook kullan.
  2. Kütüphaneleri Kur: torch, opencv ve ultralytics gibi gerekli kütüphaneleri kur.
  3. Veriyi Yükle: Veri kümeni Watsonx'e yüklemek için Kaggle API'sini 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 kesinlik ile duyarlılık gibi metrikleri kullanarak performansını değerlendir.

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

Yapay zeka modeli eğitimi için IBM Watsonx'in temel özellikleri nelerdir?

IBM Watsonx, yapay zeka 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 yapay zeka geliştirme için araçlar sağlar. Kapsamlı yapay zeka 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 yapay zeka 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 önyargı ve kayma gibi sorunları tespit etmek için araçlar sağlar. 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.

Neden Ultralytics YOLO26 modellerini eğitmek için IBM Watsonx kullanmalıyım?

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

  • Ölçeklenebilirlik: IBM Cloud hizmetleri ile model eğitimini kolayca ölçeklendir.
  • Entegrasyon: Çeşitli veri kaynakları ve API'lerle kusursuz bir şekilde entegre ol.
  • Kullanıcı Dostu Arayüz: İş birliğine dayalı 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 edin ve entegrasyon kılavuzumuzda IBM Watsonx kullanarak modelleri nasıl eğiteceğini öğren.

IBM Watsonx'te YOLO26 eğitimi için veri kümemi nasıl ön işlerim?

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

  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.

IBM 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 bir IBM Cloud hesabı oluştur.
  • Kaggle Hesabı: Veri kümelerini 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çinde bir Jupyter Notebook ortamı kur.

Ortamını kurma hakkında daha fazla bilgi için Ultralytics Kurulum kılavuzumuza göz at.

Yorumlar