İçeriğe geç

IBM Watsonx ile YOLOv8 Modellerini Eğitmek için Adım Adım Kılavuz

Günümüzde, ölçeklenebilir bilgisayarla görme çözümleri giderek yaygınlaşıyor ve görsel verileri işleme şeklimizi dönüştürüyor. Yapay zeka modellerinin geliştirilmesini, dağıtımını ve yönetimini basitleştiren gelişmiş bir yapay zeka ve veri platformu olan IBM Watsonx buna harika bir örnektir. Tüm yapay zeka yaşam döngüsü için eksiksiz bir paket ve IBM Bulut hizmetleriyle sorunsuz entegrasyon sunar.

IBM Watsonx kullanarak Ultralytics YOLOv8 modellerini eğitebilirsiniz. Verimli model eğitimi, belirli görevler için ince ayar yapmak ve sağlam araçlar ve kullanıcı dostu bir kurulumla model performansını artırmak isteyen kuruluşlar için iyi bir seçenektir. Bu kılavuzda, ortamınızı kurmaktan eğitilmiş modellerinizi değerlendirmeye kadar her şeyi kapsayan IBM Watsonx ile YOLOv8 'u eğitme sürecinde size yol göstereceğiz. Haydi başlayalım!

IBM Watsonx nedir?

Watsonx, IBM'in ticari üretken yapay zeka ve bilimsel veriler için tasarlanmış bulut tabanlı platformudur. IBM Watsonx'ın üç bileşeni - watsonx.ai, watsonx.data ve watsonx.governance - bir araya gelerek iş sorunlarını çözmeyi amaçlayan yapay zeka projelerini hızlandırabilecek uçtan uca, güvenilir bir yapay zeka platformu oluşturur. 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'a Genel Bakış

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

IBM Watsonx'ın Temel Özellikleri

IBM Watsonx üç ana bileşenden oluşmaktadır: watsonx.ai, watsonx.data ve watsonx.governance. Her bileşen, yapay zeka ve veri yönetiminin farklı yönlerine hitap eden özellikler sunar. Şimdi bunlara 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 istemlerini denemek için Prompt Lab, etiketli verilerle model performansını iyileştirmek için Tuning Studio ve üretken yapay zeka uygulama geliştirmeyi basitleştirmek için Flows Engine içerir. Ayrıca, AI 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 arasında verilere merkezi erişim sağlar ve ortak 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 bir semantik katmanla veri içgörülerini hızlandırır, yapay zeka alaka düzeyi için bir vektör veritabanı içerir ve analitik ve yapay zeka verilerinin kolay paylaşımı için açık veri formatlarını destekler.

Watsonx.governance

Watsonx.governance, mevzuat değişikliklerini otomatik olarak belirleyerek ve politikaları uygulayarak uyumluluğu kolaylaştırır. Gereksinimleri dahili risk verilerine bağlar ve güncel yapay zeka bilgi formları sağlar. Platform, önyargı ve sapma gibi sorunları tespit etmek için uyarılar ve araçlarla riski yönetmeye yardımcı olur. Ayrıca, YZ yaşam döngüsünün izlenmesini ve belgelenmesini otomatikleştirir, bir model envanteri ile YZ geliştirmeyi düzenler ve kullanıcı dostu gösterge tabloları ve raporlama araçlarıyla işbirliğini geliştirir.

IBM Watsonx Kullanarak YOLOv8 Nasıl Eğitilir?

YOLOv8 model eğitim iş akışınızı hızlandırmak için IBM Watsonx'ı kullanabilirsiniz.

Ön Koşullar

Bir watsonx.ai projesi oluşturmak için bir IBM Cloud hesab ına ihtiyacınız var ve ayrıca veri setini yüklemek için bir Kaggle hesabına ihtiyacınız olacak.

Adım 1: Ortamınızı Kurun

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

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

Bunu yaptığınızda, veri setinizi yüklemeniz için bir not defteri ortamı açılacaktır. Basit bir nesne algılama modeli eğitim görevinin üstesinden gelmek için bu eğitimdeki kodu kullanabilirsiniz.

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

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

Kurulum

# Install the required packages
pip install torch torchvision torchaudio
pip install opencv-contrib-python-headless
pip install ultralytics==8.0.196

Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz atın. YOLOv8 için gerekli paketleri yüklerken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Ortak Sorunlar kılavuz umuza başvurun.

Ardından, gerekli paketleri içe aktarabilirsiniz.

İlgili Kütüphaneleri İçe Aktarın

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Adım 3: Verileri Yükleyin

Bu eğitim için Kaggle'da bulunan bir deniz çöpü veri set ini kullanacağız. Bu veri setiyle, su altı görüntülerindeki çöpleri ve biyolojik nesneleri tespit etmek ve sınıflandırmak için bir YOLOv8 modelini özel olarak eğiteceğiz.

Kaggle API'sini kullanarak veri kümesini doğrudan not defterine yükleyebiliriz. İlk olarak, ücretsiz bir Kaggle hesabı oluşturun. Bir hesap oluşturduktan sonra, bir API anahtarı oluşturmanız gerekecektir. Anahtarınızı oluşturmak için talimatları Kaggle API belgelerinde "API kimlik bilgileri" bölümünde bulabilirsiniz.

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

Kurulum

# Install kaggle
pip install kaggle

Kaggle'ı kurduktan sonra veri setini Watsonx'a yükleyebiliriz.

Verileri Yükleyin

# 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 setini yükledikten sonra çalışma dizinimizi yazdırdık ve kaydettik. "trash_ICRA19" veri setinin düzgün bir ş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ürseniz, başarıyla yüklenmiş demektir. Üç dosya/klasör görmelisiniz: a config.yaml dosyası, bir videos_for_testing dizini ve bir dataset Dizin. Görmezden geleceğiz videos_for_testing dizinini silmekten çekinmeyin.

Nesne algılama modelimizi eğitmek için config.yaml dosyasını ve veri kümesi dizininin içeriğini kullanacağız. İşte deniz çöpü veri setimizden örnek bir görüntü.

Sınırlama Kutulu Deniz Çöpü

Adım 4: Verilerin Ön İşlemden Geçirilmesi

Neyse ki, deniz çöpü veri setindeki tüm etiketler zaten YOLO .txt dosyaları olarak biçimlendirilmiştir. Ancak, modelimizin görüntü 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 seti dizinimiz bu yapıyı takip etmektedir:

Yüklenen Veri Seti Dizini

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

Yolo Dizin Yapısı

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

Verileri Ön İşleme Tabi Tutun

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

Daha sonra, veri seti için .yaml dosyasını değiştirmemiz gerekiyor. .yaml dosyamızda kullanacağımız kurulum bu şekildedir. Sınıf ID 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 seti dizin yapımızı yansıtan yukarıdaki içerikle değiştirmek için aşağıdaki komut dosyasını çalıştırın. Satır 4'teki kök dizin yolunun work_dir kısmını daha önce aldığımız kendi çalışma dizini yolunuzla değiştirdiğinizden emin olun. Train, val ve test alt dizin tanımlarını bırakın. Ayrıca, kodun 23. satırındaki {work_dir} ifadesini değiştirmeyin.

.yaml Dosyasını Düzenleme

# Contents of new confg.yaml file
def update_yaml_file(file_path):
    data = {
        "path": "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: YOLOv8 modelini eğitin

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

YOLOv8 modelini eğitin

!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolov8s.pt epochs=2 batch=32 lr0=.04 plots=True

İşte model eğitimi komutundaki parametrelere daha yakından bir bakış:

  • görev: Belirtilen YOLO modelini ve veri setini kullandığınız bilgisayarla görme görevini belirtir.
  • Mod: Belirtilen modeli ve verileri hangi amaçla yüklediğinizi belirtir. Bir modeli eğittiğimiz için "train" olarak ayarlanmıştır. Daha sonra, modelimizin performansını test ettiğimizde, bunu "tahmin" olarak ayarlayacağız.
  • epochs: Bu, YOLOv8 adresinin tüm veri setimizden kaç kez geçeceğini sınırlar.
  • batch: Sayısal değer, eğitim toplu iş boyutlarını belirtir. 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: Modelimizin eğitim ve değerlendirme metriklerinin grafiklerini oluşturmak ve kaydetmek için YOLO adresini yönlendirir.

Model eğitimi süreci ve en iyi uygulamalar hakkında ayrıntılı bilgi için YOLOv8 Model Eğitimi kılavuzuna bakın. Bu kılavuz, deneylerinizden en iyi şekilde yararlanmanıza ve YOLOv8 adresini etkili bir şekilde kullandığınızdan emin olmanıza yardımcı olacaktır.

Adım 6: Modeli Test Edin

Artık ince ayarlı modelimizin performansını test etmek için çıkarım yapabiliriz:

YOLOv8 modelini test edin

!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 komut dosyası, test setimizdeki her görüntü için tahmin edilen etiketlerin yanı sıra tahmin edilen sınırlayıcı kutuyu orijinal görüntünün üzerine yerleştiren yeni çıktı görüntü dosyaları oluşturur.

Her görüntü için tahmin edilen .txt etiketleri save_txt=True argümanı ve sınırlayıcı kutu kaplamaları ile çıktı görüntüleri save=True Tartışma.
Parametre conf=0.5 modele güven düzeyi %50'nin altında olan tüm tahminleri göz ardı etmesini bildirir.

Son olarak, iou=.5 modeli aynı sınıftaki %50 veya daha fazla örtüşen kutuları yok saymaya yönlendirir. Aynı nesne için oluşturulan potansiyel yinelenen kutuları azaltmaya yardımcı olur.
modelimizin bir avuç görüntü üzerinde nasıl performans gösterdiğini görmek için görüntüleri tahmin edilen sınırlayıcı kutu kaplamalarıyla yükleyebiliriz.

Ekran Tahminleri

# 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, sınıf adı etiketleri ve güven düzeyleri ile birlikte tahmin edilen sınırlayıcı kutularıyla birlikte test setinden on görüntü görüntüler.

Adım 7: Modeli Değerlendirin

Her sınıf için modelin kesinlik ve geri çağırma değerlerinin görselleştirmelerini üretebiliriz. Bu görselleştirmeler ana dizinde, train klasörünün altına kaydedilir. Kesinlik puanı P_curve.png dosyasında görüntülenir:

Hassasiyet Güven Eğrisi

Grafik, modelin tahminler için güven seviyesi arttıkça hassasiyette üstel bir artış olduğunu göstermektedir. Ancak, model hassasiyeti iki epoktan sonra belirli bir güven seviyesinde henüz dengelenmemiştir.

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

Hatırlama Güven Eğrisi

Kesinlikten farklı olarak, geri çağırma ters yönde hareket eder, daha düşük güven örneklerinde daha fazla geri çağırma ve daha yüksek güven örneklerinde daha düşük geri çağırma gösterir. Bu, sınıflandırma modelleri için hassasiyet ve geri çağırma arasındaki değiş tokuşun uygun bir örneğidir.

Adım 8: Birlik Üzerinden Kesişimin Hesaplanması

Tahmin doğruluğunu, tahmin edilen sınırlayıcı kutu ile aynı nesne için temel gerçek sınırlayıcı kutu arasındaki IoU'yu hesaplayarak ölçebilirsiniz. Daha fazla ayrıntı için IBM' in YOLOv8 adresindeki eğitim eğitimine göz atın.

Özet

IBM Watsonx'ın temel özelliklerini ve IBM Watsonx kullanarak bir YOLOv8 modelinin nasıl eğitileceğini keşfettik. Ayrıca IBM Watsonx'ın model oluşturma, veri yönetimi ve uyumluluk için gelişmiş araçlarla yapay zeka iş akışlarınızı nasıl geliştirebileceğini gördük.

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

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

SSS

IBM Watsonx kullanarak bir YOLOv8 modelini nasıl eğitebilirim?

IBM Watsonx kullanarak bir YOLOv8 modelini eğitmek için aşağıdaki adımları izleyin:

  1. Ortamınızı Kurun: Bir IBM Cloud hesabı oluşturun ve bir Watsonx.ai projesi kurun. Kodlama ortamınız için bir Jupyter Notebook kullanın.
  2. Kütüphaneleri Kurun: Aşağıdaki gibi gerekli kütüphaneleri yükleyin torch, opencvve ultralytics.
  3. Veri Yükleyin: Veri setinizi Watsonx'a yüklemek için Kaggle API'sini kullanın.
  4. Veri Önişleme: Veri setinizi gerekli dizin yapısına göre düzenleyin ve .yaml yapılandırma dosyası.
  5. Modeli Eğitin: Modelinizi aşağıdaki gibi belirli parametrelerle eğitmek için YOLO komut satırı arayüzünü kullanın epochs, batch sizeve learning rate.
  6. Test Et ve Değerlendir: Modeli test etmek için çıkarımı çalıştırın ve hassasiyet ve geri çağırma gibi metrikleri kullanarak performansını değerlendirin.

Ayrıntılı talimatlar için YOLOv8 Model Eğitim kılavuzumuza bakın.

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

IBM Watsonx, yapay zeka model 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 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: Bulut ve şirket içi dağıtımları destekler, merkezi veri erişimi, Presto ve Spark gibi verimli sorgu motorları ve yapay zeka destekli bir semantik katman sunar.
  • Watsonx.governance: Uyumluluğu otomatikleştirir, uyarılarla riski yönetir ve önyargı ve sapma gibi sorunları tespit etmek için araçlar sağlar. Ayrıca işbirliği için gösterge panoları ve raporlama araçları da içerir.

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

Ultralytics YOLOv8 modellerini eğitmek için neden IBM Watsonx kullanmalıyım?

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

  • Ölçeklenebilirlik: IBM Cloud hizmetleri ile model eğitiminizi kolayca ölçeklendirin.
  • Entegrasyon: Çeşitli veri kaynakları ve API'ler ile sorunsuz entegrasyon.
  • Kullanıcı Dostu Arayüz: İşbirliğine dayalı ve sezgisel bir arayüz ile 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.

Hakkında daha fazla bilgi edinin Ultralytics YOLOv8 ve IBM Watsonx kullanarak modellerin nasıl eğitileceğini entegrasyon kılavuzumuzda bulabilirsiniz.

IBM Watsonx üzerinde YOLOv8 eğitimi için veri kümemi nasıl önceden işleyebilirim?

IBM Watsonx üzerinde YOLOv8 eğitimi için veri kümenizi önceden işlemek için:

  1. Dizinleri Düzenleyin: Veri setinizin YOLO dizin yapısını takip ettiğinden ve train/val/test ayrımı içinde görüntüler ve etiketler için ayrı alt dizinler bulunduğundan emin olun.
  2. .yaml Dosyasını Güncelle: Değiştirmek .yaml yapılandırma dosyasını yeni dizin yapısını ve sınıf adlarını yansıtacak şekilde değiştirin.
  3. Ön İşleme Komut Dosyasını Çalıştır: Veri kümenizi yeniden düzenlemek ve güncellemek için bir Python betiği kullanın. .yaml dosyayı buna göre hazırlayın.

İşte veri kümenizi düzenlemek için örnek bir komut dosyası:

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 bakın.

IBM Watsonx üzerinde bir YOLOv8 modelini eğitmek için ön koşullar nelerdir?

IBM Watsonx üzerinde bir YOLOv8 modelini eğitmeye başlamadan önce aşağıdaki ön koşullara sahip olduğunuzdan emin olun:

  • IBM Bulut Hesabı: Watsonx.ai'ye erişmek için IBM Cloud'da bir hesap oluşturun.
  • Kaggle Hesabı: Veri kümelerini yüklemek için bir Kaggle hesabına ve bir API anahtarına ihtiyacınız olacaktır.
  • Jupyter Notebook: Kodlama ve model eğitimi için Watsonx.ai içinde bir Jupyter Notebook ortamı kurun.

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


📅 Created 1 month ago ✏️ Updated 5 days ago

Yorumlar