IBM Watsonx ile YOLO11 Modellerini Eğitmek İçin Adım Adım Kılavuz
Günümüzde, ölçeklenebilir bilgisayar görüşü çözümleri daha yaygın hale geliyor ve görsel verileri ele alma şeklimizi dönüştürüyor. Harika bir örnek, 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'tir. Tüm yapay zeka yaşam döngüsü için eksiksiz bir paket ve IBM Cloud hizmetleriyle sorunsuz entegrasyon sunar.
IBM Watsonx'i kullanarak Ultralytics YOLO11 modellerini eğitebilirsiniz. Verimli model eğitimi, belirli görevler için ince ayar ve sağlam araçlar ve kullanıcı dostu bir kurulum ile model performansını iyileştirmekle ilgilenen işletmeler için iyi bir seçenektir. Bu kılavuzda, ortamınızı ayarlamaktan eğitilmiş modellerinizi değerlendirmeye kadar her şeyi kapsayan IBM Watsonx ile YOLO11 eğitme sürecinde size yol göstereceğiz. Başlayalım!
IBM Watsonx nedir?
Watsonx IBM'in ticari amaçlı tasarlanmış bulut tabanlı platformudur üretken yapay zeka ve bilimsel veriler. 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 geliyor. Oluşturma, eğitme ve makine öğrenimi modellerini dağıtma 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 ve dağıtımına yardımcı olur. İster bilgisayar görüşü, ister tahmine dayalı analiz, doğal dil işleme veya 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. Şimdi onlara daha yakından bakalım.
Watsonx.ai
Watsonx.ai, yapay zeka geliştirme için güçlü araçlar sağlar ve IBM tarafından desteklenen ö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'ı, etiketli verilerle model performansını iyileştirmek için Tuning Studio'yu ve üretken yapay zeka uygulama 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'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 genelinde verilere merkezi erişim sağlar ve genel 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 uygunluğu için bir vektör veritabanı içerir ve analiz ve 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 sapma 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, bir 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 YOLO11 Nasıl Eğitilir
YOLO11 model eğitim iş akışınızı hızlandırmak için IBM Watsonx'i kullanabilirsiniz.
Ön koşullar
Bir watsonx.ai projesi oluşturmak için bir IBM Cloud hesabına ve veri kümesini yüklemek için bir Kaggle hesabına ihtiyacınız olacak.
Adım 1: Ortamınızı Ayarlayın
Öncelikle, bir Jupyter Notebook kullanmak için bir IBM hesabı oluşturmanız gerekecektir. IBM Cloud hesabınızı kullanarak watsonx.ai adresine giriş yapın.
Ardından, bir watsonx.ai projesi ve bir Jupyter Notebook oluşturun.
Bunu yaptıktan sonra, veri kümenizi yüklemek için bir not defteri ortamı açılacaktır. Basit bir nesne algılama modeli eğitim görevini ele almak 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 kurabilir 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
Yükleme süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza bakın. YOLO11 için gerekli paketleri yüklerken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Sık Karşılaşılan Sorunlar kılavuzumuza başvurun.
Ardından, gerekli paketleri içe aktarabilirsiniz.
İlgili Kütüphaneleri İçe Aktar
# 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 kümesi 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 YOLO11 modeli eğiteceğiz.
Veri kümesini doğrudan Kaggle API'sini kullanarak not defterine yükleyebiliriz. Öncelikle, ücretsiz bir Kaggle hesabı oluşturun. Bir hesap oluşturduktan sonra, bir API anahtarı oluşturmanız gerekecektir. Anahtarınızı oluşturma talimatları, Kaggle API belgelerinde "API kimlik bilgileri" bölümünde bulunabilir.
Kaggle kullanıcı adınızı ve API anahtarınızı aşağıdaki koda kopyalayıp yapıştırın. Ardından API'yi kurmak ve veri kümesini Watsonx'e yüklemek için kodu çalıştırın.
Kurulum
# Install kaggle
pip install kaggle
Kaggle'ı kurduktan 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ı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 de yazdırdık.
Dizin içeriğinde "trash_ICRA19" ifadesini görürseniz, başarıyla yüklenmiş demektir. Şunları görmelisiniz: a config.yaml
dosyası, bir videos_for_testing
dizini ve bir dataset
dizini. Şunu yok sayacağız: videos_for_testing
dizini, bu yüzden silmekten çekinmeyin.
Şunu kullanacağız: config.yaml
dosyası ve veri kümesi dizininin içeriğini eğitmek için nesne tespiti modeli. İşte deniz çöpü veri setimizden örnek bir görüntü.
Adım 4: Verileri Ön İşleme
Neyse ki, deniz çöpü veri kümesindeki tüm etiketler zaten 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 şu yapıyı izliyor:
Ancak, YOLO modelleri varsayılan olarak train/val/test ayrımı içindeki alt dizinlerde ayrı resimler 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 komut dosyasını ç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 seti için .yaml dosyasını değiştirmemiz gerekiyor. Bu, .yaml dosyamızda kullanacağımız kurulumdur. 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
'nin mevcut içeriğini silmek için aşağıdaki komutu çalıştırın config.yaml
ve yukarıdaki içerikle değiştirin; bu, yeni veri kümesi dizin yapımızı yansıtır. 4. satırdaki 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ında {work_dir} öğesini değiştirmeyin.
.yaml Dosyasını Düzenle
# Contents of new config.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: YOLO11 modelini eğitin
Önceden eğitilmiş bir varsayılan YOLO11 modelini ince ayar yapmak için aşağıdaki komut satırı kodunu çalıştırın.
YOLO11 modelini eğitin
!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ış:
- görev: Belirtilen YOLO modelini ve veri kümesini hangi bilgisayar görüşü görevi için kullandığınızı belirtir.
- mod: Belirtilen model ve verileri hangi amaçla yüklediğinizi gösterir. Bir model eğittiğimiz için "train" olarak ayarlanmıştır. Daha sonra modelimizin performansını test ettiğimizde, "predict" olarak ayarlayacağız.
- epoch sayısı: Bu, YOLO11'in tüm veri kümemizden geçeceği sayıyı sınırlar.
- batch (küme): Sayısal değer, eğitim küme boyutlarını belirtir. Kümeler, bir modelin parametrelerini güncellemeden önce işlediği görüntü sayısıdır.
- lr0: Modelin başlangıç öğrenme oranını belirtir.
- çizimler: YOLO'yu modelimizin eğitim ve değerlendirme metriklerinin çizimlerini oluşturmaya ve kaydetmeye yönlendirir.
Model eğitim süreci ve en iyi uygulamalar hakkında ayrıntılı bilgi için YOLO11 Model Eğitimi kılavuzuna bakın. Bu kılavuz, deneylerinizden en iyi şekilde yararlanmanıza ve YOLO11'i etkili bir şekilde kullandığınızdan emin olmanıza yardımcı olacaktır.
Adım 6: Modeli Test Edin
İnce ayarlı modelimizin performansını test etmek için şimdi çıkarım çalıştırabiliriz:
YOLO11 modelini test etme
!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 etiketleri ve ayrıca tahmin edilen sınırlayıcı kutuyu orijinal 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, aracılığıyla kaydedilir save_txt=True
argümanı ve sınırlayıcı kutu katmanlarına sahip çıktı görüntüleri aracılığıyla oluşturulur. save=True
argüman.
Parametre conf=0.5
modele, %50'den düşük güven düzeyine sahip tüm tahminleri yok saymasını söyler.
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üde nasıl performans gösterdiğini görmek için tahmin edilen sınırlayıcı kutu katmanlarıyla 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 setinden on görüntüyü, sınıf adı etiketleri ve güvenilirlik düzeyleriyle birlikte tahmin edilen sınırlayıcı kutularıyla birlikte görüntüler.
Adım 7: Modeli Değerlendirin
Modelin her sınıf için kesinlik ve hatırlamasının görselleştirmelerini oluşturabiliriz. Bu görselleştirmeler, ana dizinde, eğitim klasöründe kaydedilir. Kesinlik puanı P_curve.png'de görüntülenir:
Grafik, modelin tahminler için güven düzeyinin artmasıyla birlikte hassasiyette üstel bir artış olduğunu göstermektedir. Bununla birlikte, model hassasiyeti iki epoch'tan sonra belirli bir güven düzeyinde henüz dengelenmemiştir.
Geri çağırma grafiği (R_curve.png) ters bir eğilim gösterir:
Kesinliğin aksine, hatırlama zıt yönde hareket eder ve daha düşük güvenilirlikli örneklerde daha yüksek hatırlama ve daha yüksek güvenilirlikli örneklerde daha düşük hatırlama gösterir. Bu, sınıflandırma modelleri için kesinlik ve hatırlama arasındaki ödünleşimin uygun bir örneğidir.
Adım 8: Kesişim Üzerinden Birleşim Hesaplama
Tahmin edilen bir sınırlayıcı kutu ile aynı nesne için gerçek bir sınırlayıcı kutu arasındaki IoU'yu hesaplayarak tahmin doğruluğunu ölçebilirsiniz. Daha fazla ayrıntı için IBM'in YOLO11 eğitimi hakkındaki eğitimine göz atın.
Özet
IBM Watsonx'in temel özelliklerini ve IBM Watsonx kullanarak bir YOLO11 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 yapay zeka iş akışlarınızı nasıl geliştirebileceğini de gördük.
Kullanım hakkında daha fazla bilgi için IBM Watsonx resmi dokümantasyonunu ziyaret edin.
Ayrıca, farklı heyecan verici entegrasyonlar hakkında daha fazla bilgi edinmek için Ultralytics entegrasyon kılavuzu sayfasını mutlaka inceleyin.
SSS
IBM Watsonx kullanarak bir YOLO11 modeli nasıl eğitirim?
IBM Watsonx kullanarak bir YOLO11 modeli eğitmek için şu adımları izleyin:
- 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.
- Kütüphaneleri Yükle: Gibi gerekli kütüphaneleri yükleyin
torch
,opencv
veultralytics
. - Veri Yükleme: Veri kümenizi Watsonx'e yüklemek için Kaggle API'sini kullanın.
- Veriyi Ön İşleme: Veri kümenizi gerekli dizin yapısına göre düzenleyin ve güncelleyin.
.yaml
yapılandırma dosyası. - Modeli Eğitme: Modelinizi gibi belirli parametrelerle eğitmek için YOLO komut satırı arayüzünü kullanın:
epochs
,batch size
velearning rate
. - Test Et ve Değerlendir: Modeli test etmek ve performansını kesinlik ve geri çağırma gibi metrikleri kullanarak değerlendirmek için çıkarım çalıştırın.
Ayrıntılı talimatlar için YOLO11 Model Eğitimi kılavuzumuza bakın.
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 tarafından desteklenen özel modeller ve Llama 3 gibi üçüncü taraf modellerine erişim de 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 panolar ve raporlama araçları da içerir.
Daha fazla bilgi için IBM Watsonx resmi belgelerini ziyaret edin.
Ultralytics YOLO11 modellerini eğitmek için neden IBM Watsonx'i kullanmalıyım?
IBM Watsonx, yapay zeka yaşam döngüsünü kolaylaştıran kapsamlı araç paketi sayesinde Ultralytics YOLO11 modellerini eğitmek için mükemmel bir seçimdir. Temel avantajları şunlardır:
- Ölçeklenebilirlik: IBM Cloud hizmetleriyle model eğitiminizi kolayca ölçeklendirin.
- Entegrasyon: Çeşitli veri kaynakları ve API'lerle sorunsuz bir şekilde entegre olur.
- Kullanıcı Dostu Arayüz: İşbirlikçi 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.
Ultralytics YOLO11 hakkında ve entegrasyon kılavuzumuzda IBM Watsonx kullanarak modellerin nasıl eğitileceği hakkında daha fazla bilgi edinin.
IBM Watsonx üzerinde YOLO11 eğitimi için veri setimi nasıl ön işleyebilirim?
IBM Watsonx üzerinde YOLO11 eğitimi için veri kümenizi ön işlemek için:
- Dizinleri Düzenleme: Veri setinizin, train/val/test bölümü içinde görüntüler ve etiketler için ayrı alt dizinlerle YOLO dizin yapısını izlediğinden emin olun.
- .yaml Dosyasını Güncelle: Şunu değiştirin:
.yaml
yeni dizin yapısını ve sınıf adlarını yansıtacak şekilde yapılandırma dosyasını ayarlayın. - Ön İşleme Komut Dosyasını Çalıştır: Veri kümenizi yeniden düzenlemek ve şunu güncellemek için bir python betiği kullanın:
.yaml
dosyasını buna göre düzenleyin.
İşte veri kümenizi 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 bakın.
IBM Watsonx üzerinde bir YOLO11 modeli eğitmek için ön koşullar nelerdir?
IBM Watsonx üzerinde bir YOLO11 modeli eğitmeye başlamadan önce, aşağıdaki ön koşullara sahip olduğunuzdan emin olun:
- IBM Cloud 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 olacak.
- 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.