IBM Watsonx ile YOLO26 Modellerini Eğitmek İçin Adım Adım Kılavuz#
Günümüzde ölçeklenebilir computer vision solutions giderek yaygınlaşıyor ve görsel verileri ele alma biçimimizi dönüştürüyor. Bunun harika bir örneği, yapay zeka modellerinin geliştirilmesini, dağıtılmasını ve yönetimini basitleştiren gelişmiş bir yapay zeka ve veri platformu olan IBM Watsonx'tir. Tüm yapay zeka yaşam döngüsü için eksiksiz bir paket ve IBM Cloud hizmetleriyle kesintisiz entegrasyon sunar.
IBM Watsonx kullanarak Ultralytics YOLO26 models eğitebilirsin. Bu, verimli model training, belirli görevler için ince ayar (fine-tuning) yapma ve güçlü araçlar ile kullanıcı dostu bir kurulumla model performance iyileştirme konularıyla ilgilenen işletmeler için iyi bir seçenektir. Bu kılavuzda, ortamını kurmaktan eğittiğin modelleri değerlendirmeye kadar her şeyi kapsayacak şekilde YOLO26'yı IBM Watsonx ile eğitme sürecinde sana rehberlik edeceğiz. Hadi başlayalım!
IBM Watsonx nedir?#
Watsonx, ticari generative AI ve bilimsel veriler için tasarlanmış IBM'in bulut tabanlı platformudur. IBM Watsonx'in üç bileşeni - watsonx.ai, watsonx.data ve watsonx.governance - iş sorunlarını çö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. deploying machine learning models 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.
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 computer vision, kestirimsel analitik, natural language processing ister diğer yapay zeka uygulamaları için olsun, IBM Watsonx inovasyonu yönlendirmek 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. Bunları daha yakından inceleyelim.
Watsonx.ai#
Watsonx.ai, yapay zeka geliştirme için güçlü araçlar sunar ve IBM destekli özel modellere, Llama 3 gibi üçüncü taraf modellere ve IBM'in kendi Granite modellerine erişim sağlar. Yapay zeka ipuçlarıyla (prompts) denemeler yapmak için Prompt Lab'i, etiketlenmiş 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 modeli yaşam döngüsünü otomatikleştirmek ve çeşitli API'ler ile 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 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.
Watsonx.governance#
Watsonx.governance, düzenleyici değişiklikleri otomatik olarak tespit ederek ve politikaları uygulayarak uyumluluğu daha kolay hale getirir. Gereksinimleri iç risk verilerine bağlar ve güncel yapay zeka bilgi föyleri sağlar. Platform, uyarılar ve bias and drift gibi sorunları tespit etmeye yönelik araçlarla riskin yönetilmesine yardımcı olur. Ayrıca yapay zeka yaşam döngüsünün izlenmesini ve belgelenmesini otomatikleştirir, yapay zeka geliştirmeyi bir model envanteri ile organize eder ve kullanıcı dostu panolar ile 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 kullanabilirsin.
Ön koşullar#
Bir watsonx.ai projesi oluşturmak için bir IBM Cloud account hesabına ihtiyacın var ve ayrıca veri setini yüklemek için bir Kaggle hesabına ihtiyacın olacak.
Adım: Ortamını Kur#
Öncelikle, bir Jupyter Notebook kullanmak için bir IBM hesabı kurman gerekecek. IBM Cloud hesabını kullanarak watsonx.ai adresine giriş yap.
Ardından, bir watsonx.ai project 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.
Adım: İlgili Kütüphaneleri Yükle ve İçe Aktar#
Ardından, gerekli Python kütüphanelerini yükleyebilir ve içe aktarabilirsin.
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headlessKurulum sürecine ilişkin 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 danış.
Daha sonra, ihtiyaç duyulan paketleri içe aktarabilirsin.
# Import ultralytics
import ultralytics
ultralytics.checks()
# Import packages to retrieve and display image filesAdım: Veriyi Yükle#
Bu eğitim için Kaggle'da bulunan bir marine litter dataset kullanacağız. Bu veri setiyle, su altı görüntü nesnelerindeki çöpleri ve biyolojik nesneleri tespit etmek ve sınıflandırmak için özel bir YOLO26 modeli eğiteceğiz.
Kaggle API'sini kullanarak veri setini doğrudan notebook'a yükleyebiliriz. İlk olarak, ücretsiz bir Kaggle hesabı oluştur. Bir hesap oluşturduktan sonra bir API anahtarı üretmen gerekecek. Anahtarını üretmeyle ilgili yönergeleri Kaggle API documentation sayfasındaki "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.
# Install kaggle
pip install kaggleKaggle'ı yükledikten sonra veri kümesini Watsonx'e yükleyebiliriz.
# 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.
Dizin içeriğinde "trash_ICRA19" ifadesini görürsen, 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 silebilirsin.
object detection modelimizi eğitmek için config.yaml dosyasını ve veri seti dizininin içeriğini kullanacağız. İşte deniz çöpü veri setimizden örnek bir görüntü.
Adı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:
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:
Veri kümesi dizinini yeniden düzenlemek için aşağıdaki betiği çalıştırabiliriz:
# 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ü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: rovconfig.yaml içeriğini silmek ve onu yeni veri seti 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 çalıştırmadan önce veri setine işaret ettiğinden emin ol ve train, val ile test alt dizin tanımlarını değiştirmeden bırak.
# 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.
!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=TrueModel eğitimi komutundaki parametrelere daha yakından bakalım:
- task: Belirtilen YOLO modelini ve veri setini hangi computer vision 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 sizes belirler. Batch'ler, bir modelin parametrelerini güncellemeden önce işlediği görüntü sayısıdır.
- lr0: Modelin başlangıç learning rate değerini 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 edinmek için YOLO26 Model Eğitimi kılavuzu sayfasına göz at. Bu kılavuz, deneylerinden en iyi şekilde yararlanmanı ve YOLO26'yı etkili bir şekilde kullandığından emin olmanı sağlayacaktır.
Adım: Modeli Test Et#
İnce ayar yapılmış modelimizin performansını test etmek için artık çıkarım (inference) çalıştırabiliriz:
!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=TrueBu kısa betik, test setimizdeki her görüntü için tahmin edilen etiketlerin yanı sıra, tahmin edilen bounding box orijinal görüntünün üzerine bindiren yeni çıktı görüntü dosyaları üretir.
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 kaplamalarına sahip çıktı görüntüleri save=True argümanı aracılığıyla oluşturulur.
conf=0.5 parametresi, modele güven düzeyi %50'den az olan tüm tahminleri yoksemesini söyler.
Son olarak, iou=.5 modele, %50 veya daha fazla örtüşmeye sahip aynı sınıftaki kutuları yoksemesini söyler. Bu, aynı nesne için üretilen olası yinelenen kutuların azaltılmasına yardımcı olur.
Modelimizin bir dizi görüntüde nasıl performans gösterdiğini görmek için tahmin edilen sınırlayıcı kutu kaplamalarına sahip görüntüleri yükleyebiliriz.
# 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.
Adım: Modeli Değerlendir#
Modelin precision ve her sınıf için duyarlılığının (recall) görselleştirmelerini üretebiliriz. Bu görselleştirmeler eğitim çalışması dizinine ({work_dir}/runs/detect/train/) kaydedilir. Kesinlik puanı BoxP_curve.png içinde görüntülenir:
Grafik, modelin tahminler için güven düzeyi arttıkça kesinlikte üstel bir artış olduğunu göstermektedir. Ancak model kesinliği, iki epochs sonrasında belirli bir güven düzeyinde henüz sabitlenmemiştir.
recall grafiği (BoxR_curve.png) ters bir trend göstermektedir:
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.
Adım 8: Intersection Over Union Hesaplama#
Aynı nesne için tahmin edilen bir sınırlayıcı kutu ile gerçek yerleşim (ground truth) sınırlayıcı kutusu arasındaki IoU'yu hesaplayarak tahmin accuracy ölçebilirsin. Daha fazla ayrıntı için IBM's tutorial on training YOLO26 göz at.
Ö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 official documentation ziyaret et.
Ayrıca, farklı heyecan verici entegrasyonlar hakkında daha fazla bilgi edinmek için Ultralytics integration guide page göz attığından emin ol.
SSS#
IBM Watsonx kullanarak bir YOLO26 modeli eğitmek için şu adımları izle:
- Ortamını Kur: Bir IBM Cloud hesabı oluştur ve bir Watsonx.ai projesi ayarla. Kodlama ortamın için bir Jupyter Notebook kullan.
- Install Libraries:
torch,opencvveultralyticsgibi gerekli kütüphaneleri yükle. - Veriyi Yükle: Veri kümeni Watsonx'e yüklemek için Kaggle API kullan.
- Preprocess Data: Veri setini gerekli dizin yapısına göre düzenle ve
.yamlyapılandırma dosyasını güncelle. - Train the Model: Modelini
epochs,batch sizevelearning rategibi belirli parametrelerle eğitmek için YOLO komut satırı arayüzünü kullan. - 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ı talimatlar için YOLO26 Model Training guide göz at.
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 official documentation ziyaret et.
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.
integration guide sayfamızda Ultralytics YOLO26 hakkında daha fazla bilgi edinebilir ve IBM Watsonx kullanarak modelleri nasıl eğiteceğini öğrenebilirsin.
IBM Watsonx üzerinde YOLO26 eğitimi için veri kümeni ön işlemek üzere:
- 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.
- Update .yaml File: Yeni dizin yapısını ve sınıf adlarını yansıtmak için
.yamlyapılandırma dosyasını değiştir. - Run Preprocessing Script: Veri setini yeniden düzenlemek ve
.yamldosyası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", ".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 data preprocessing guide göz at.
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 Installation guide ziyaret et.