İçeriğe geç

A Step-by-Step Guide to Training YOLO11 Models with IBM Watsonx

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.

You can train Ultralytics YOLO11 models using IBM Watsonx. It's a good option for enterprises interested in efficient model training, fine-tuning for specific tasks, and improving model performance with robust tools and a user-friendly setup. In this guide, we'll walk you through the process of training YOLO11 with IBM Watsonx, covering everything from setting up your environment to evaluating your trained models. Let's get started!

IBM Watsonx nedir?

Watsonx is IBM's cloud-based platform designed for commercial generative AI and scientific data. IBM Watsonx's three components - watsonx.ai, watsonx.data, and watsonx.governance - come together to create an end-to-end, trustworthy AI platform that can accelerate AI projects aimed at solving business problems. It provides powerful tools for building, training, and deploying machine learning models and makes it easy to connect with various data sources.

IBM Watsonx'a Genel Bakış

Its user-friendly interface and collaborative capabilities streamline the development process and help with efficient model management and deployment. Whether for computer vision, predictive analytics, natural language processing, or other AI applications, IBM Watsonx provides the tools and support needed to drive innovation.

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.

How to Train YOLO11 Using IBM Watsonx

You can use IBM Watsonx to accelerate your YOLO11 model training workflow.

Ö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

For detailed instructions and best practices related to the installation process, check our Ultralytics Installation guide. While installing the required packages for YOLO11, if you encounter any difficulties, consult our Common Issues guide for solutions and tips.

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

For this tutorial, we will use a marine litter dataset available on Kaggle. With this dataset, we will custom-train a YOLO11 model to detect and classify litter and biological objects in underwater images.

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.

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.

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

Step 5: Train the YOLO11 model

Run the following command-line code to fine tune a pretrained default YOLO11 model.

Train the YOLO11 model

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

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

  • task: It specifies the computer vision task for which you are using the specified YOLO model and data set.
  • 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: This delimits the number of times YOLO11 will pass through our entire data set.
  • batch: The numerical value stipulates the training batch sizes. Batches are the number of images a model processes before it updates its parameters.
  • lr0: Specifies the model's initial learning rate.
  • Plots: Modelimizin eğitim ve değerlendirme metriklerinin grafiklerini oluşturmak ve kaydetmek için YOLO adresini yönlendirir.

For a detailed understanding of the model training process and best practices, refer to the YOLO11 Model Training guide. This guide will help you get the most out of your experiments and ensure you're using YOLO11 effectively.

Adım 6: Modeli Test Edin

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

Test the YOLO11 model

!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

This brief script generates predicted labels for each image in our test set, as well as new output image files that overlay the predicted bounding box atop the original image.

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

We can produce visualizations of the model's precision and recall for each class. These visualizations are saved in the home directory, under the train folder. The precision score is displayed in the P_curve.png:

Hassasiyet Güven Eğrisi

The graph shows an exponential increase in precision as the model's confidence level for predictions increases. However, the model precision has not yet leveled out at a certain confidence level after two epochs.

The recall graph (R_curve.png) displays an inverse trend:

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.

Step 8: Calculating Intersection Over Union

You can measure the prediction accuracy by calculating the IoU between a predicted bounding box and a ground truth bounding box for the same object. Check out IBM's tutorial on training YOLO11 for more details.

Özet

We explored IBM Watsonx key features, and how to train a YOLO11 model using IBM Watsonx. We also saw how IBM Watsonx can enhance your AI workflows with advanced tools for model building, data management, and compliance.

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

How do I train a YOLO11 model using IBM Watsonx?

To train a YOLO11 model using IBM Watsonx, follow these steps:

  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.

For detailed instructions, refer to our YOLO11 Model Training guide.

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.

Why should I use IBM Watsonx for training Ultralytics YOLO11 models?

IBM Watsonx is an excellent choice for training Ultralytics YOLO11 models due to its comprehensive suite of tools that streamline the AI lifecycle. Key benefits include:

  • Ö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.

Learn more about Ultralytics YOLO11 and how to train models using IBM Watsonx in our integration guide.

How can I preprocess my dataset for YOLO11 training on IBM Watsonx?

To preprocess your dataset for YOLO11 training on IBM Watsonx:

  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.

What are the prerequisites for training a YOLO11 model on IBM Watsonx?

Before you start training a YOLO11 model on IBM Watsonx, ensure you have the following prerequisites:

  • 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 3 months ago ✏️ Updated 1 month ago

Yorumlar