Model Eğitimi için Makine Öğrenimi En İyi Uygulamaları ve İpuçları
Giriş
Bir bilgisayarlı görü projesi üzerinde çalışırken en önemli adımlardan biri model eğitimidir. Bu adıma ulaşmadan önce, hedeflerinizi tanımlamanız ve verilerinizi toplamanız ve etiketlemeniz gerekir. Verilerin temiz ve tutarlı olduğundan emin olmak için verileri ön işledikten sonra, modelinizi eğitmeye geçebilirsiniz.
İzle: Model Eğitim İpuçları | Büyük Veri Kümeleri Nasıl Yönetilir | Batch Boyutu, GPU Kullanımı ve Karma Hassasiyet
Peki, model eğitimi nedir? Model eğitimi, modelinize görsel desenleri tanımasını ve verilerinize dayanarak tahminler yapmasını öğretme sürecidir. Uygulamanızın performansını ve doğruluğunu doğrudan etkiler. Bu kılavuzda, bilgisayarlı görü modellerinizi etkili bir şekilde eğitmenize yardımcı olacak en iyi uygulamaları, optimizasyon tekniklerini ve sorun giderme ipuçlarını ele alacağız.
Makine Öğrenimi Modeli Nasıl Eğitilir
Bir bilgisayar görüşü modeli, hataları en aza indirmek için iç parametreleri ayarlanarak eğitilir. Başlangıçta, modele büyük bir etiketli görüntü kümesi verilir. Bu görüntülerde ne olduğuna dair tahminlerde bulunur ve tahminler, hataları hesaplamak için gerçek etiketler veya içeriklerle karşılaştırılır. Bu hatalar, modelin tahminlerinin gerçek değerlerden ne kadar uzak olduğunu gösterir.
Eğitim sırasında model, yinelemeli olarak tahminler yapar, hataları hesaplar ve geri yayılım adı verilen bir süreçle parametrelerini günceller. Bu süreçte model, hataları azaltmak için iç parametrelerini (ağırlıklar ve sapmalar) ayarlar. Bu döngüyü birçok kez tekrarlayarak model, doğruluğunu kademeli olarak artırır. Zamanla şekiller, renkler ve dokular gibi karmaşık desenleri tanımayı öğrenir.
Bu öğrenme süreci, bilgisayar görüşü modelinin nesne tespiti, örnek segmentasyonu ve görüntü sınıflandırması dahil olmak üzere çeşitli görevleri gerçekleştirmesini mümkün kılar. Nihai amaç, öğrenmesini yeni, görülmemiş görüntülere genelleyebilen ve böylece gerçek dünya uygulamalarındaki görsel verileri doğru bir şekilde anlayabilen bir model oluşturmaktır.
Bir modeli eğitirken arka planda neler olup bittiğini bildiğimize göre, bir modeli eğitirken dikkate alınması gereken noktalara bakalım.
Büyük Veri Kümeleri Üzerinde Eğitim
Bir modeli eğitmek için büyük bir veri kümesi kullanmayı planladığınızda düşünmeniz gereken birkaç farklı husus vardır. Örneğin, toplu iş boyutunu ayarlayabilir, GPU kullanımını kontrol edebilir, çok ölçekli eğitimi kullanmayı seçebilirsiniz, vb. Şimdi bu seçeneklerin her birini ayrıntılı olarak inceleyelim.
Yığın Boyutu ve GPU Kullanımı
Büyük veri kümelerinde modelleri eğitirken, GPU'nuzu verimli bir şekilde kullanmak çok önemlidir. Batch boyutu önemli bir faktördür. Bir makine öğrenimi modelinin tek bir eğitim yinelemesinde işlediği veri örneklerinin sayısıdır. GPU'nuz tarafından desteklenen maksimum batch boyutunu kullanarak, yeteneklerinden tam olarak yararlanabilir ve model eğitiminin aldığı süreyi azaltabilirsiniz. Ancak, GPU belleğinin bitmesini önlemek istersiniz. Bellek hatalarıyla karşılaşırsanız, model sorunsuz bir şekilde eğitilene kadar batch boyutunu kademeli olarak azaltın.
İzle: Ultralytics YOLO11 ile Toplu Çıkarım Nasıl Kullanılır | Python'da Nesne Algılamayı Hızlandırın 🎉
YOLO11 ile ilgili olarak, şunu ayarlayabilirsiniz: batch_size
parametresi içinde eğitim yapılandırması GPU kapasitenize uyacak şekilde. Ayrıca, ayar batch=-1
eğitim betiğinizde otomatik olarak belirleyecektir. yığın boyutu cihazınızın özelliklerine göre verimli bir şekilde işlenebilen. Batch boyutunu ince ayar yaparak, GPU kaynaklarınızdan en iyi şekilde yararlanabilir ve genel eğitim sürecini iyileştirebilirsiniz.
Alt Küme Eğitimi
Alt küme eğitimi, modelinizi daha büyük veri kümesini temsil eden daha küçük bir veri kümesi üzerinde eğitmeyi içeren akıllı bir stratejidir. Özellikle model geliştirme ve testinin ilk aşamalarında zamandan ve kaynaklardan tasarruf sağlayabilir. Zamanınız kısıtlıysa veya farklı model yapılandırmaları deniyorsanız, alt küme eğitimi iyi bir seçenektir.
YOLO11 söz konusu olduğunda, kullanarak alt küme eğitimini kolayca uygulayabilirsiniz. fraction
parametresi. Bu parametre, veri kümenizin ne kadarının eğitim için kullanılacağını belirtmenizi sağlar. Örneğin, şunu ayarlamak: fraction=0.1
modelinizi verilerin %10'u üzerinde eğitecektir. Tam bir veri kümesi kullanarak bir modeli eğitmeye başlamadan önce, hızlı yinelemeler için bu tekniği kullanabilir ve modelinizi ayarlayabilirsiniz. Alt küme eğitimi, hızlı ilerleme kaydetmenize ve potansiyel sorunları erken belirlemenize yardımcı olur.
Çok Ölçekli Eğitim
Çok ölçekli eğitim, modelinizi farklı boyutlardaki görüntüler üzerinde eğiterek genelleme yeteneğini geliştiren bir tekniktir. Modeliniz, nesneleri farklı ölçeklerde ve mesafelerde algılamayı öğrenebilir ve daha sağlam hale gelebilir.
Örneğin, YOLO11'i eğitirken, şunu ayarlayarak çok ölçekli eğitimi etkinleştirebilirsiniz: scale
parametresi. Bu parametre, eğitim görüntülerinin boyutunu belirli bir faktörle ayarlayarak farklı mesafelerdeki nesneleri simüle eder. Örneğin, şunu ayarlamak: scale=0.5
eğitim sırasında eğitim görüntülerine 0,5 ile 1,5 arasında bir faktörle rastgele yakınlaştırma uygular. Bu parametreyi yapılandırmak, modelinizin çeşitli görüntü ölçeklerini deneyimlemesini ve farklı nesne boyutları ve senaryolarda algılama yeteneklerini geliştirmesini sağlar.
Önbelleğe alma
Önbelleğe alma, makine öğrenimi modellerini eğitme verimliliğini artırmak için önemli bir tekniktir. Önceden işlenmiş görüntüleri bellekte depolayarak, önbelleğe alma, GPU'nun diskten veri yüklenmesini beklediği süreyi azaltır. Model, disk G/Ç işlemlerinden kaynaklanan gecikmeler olmadan sürekli olarak veri alabilir.
Önbelleğe alma, YOLO11 eğitilirken şu kullanılarak kontrol edilebilir: cache
parametresi:
cache=True
: Veri kümesi görüntülerini RAM'de saklar, en hızlı erişim hızını sağlar ancak bellek kullanımını artırır.cache='disk'
: Görüntüleri diskte saklar, RAM'den daha yavaş ancak her seferinde yeni veri yüklemekten daha hızlıdır.cache=False
: Önbelleğe almayı devre dışı bırakır, tamamen disk G/Ç'ye güvenir, bu da en yavaş seçenektir.
Karma Hassasiyet Eğitimi
Karma hassasiyet eğitimi, hem 16-bit (FP16) hem de 32-bit (FP32) kayan nokta türlerini kullanır. Daha hızlı hesaplama için FP16'yı ve gerektiğinde hassasiyeti korumak için FP32'yi kullanarak hem FP16'nın hem de FP32'nin güçlü yönlerinden yararlanılır. Sinir ağının işlemlerinin çoğu, daha hızlı hesaplamadan ve daha düşük bellek kullanımından yararlanmak için FP16'da yapılır. Bununla birlikte, modelin ağırlıklarının ana bir kopyası, ağırlık güncelleme adımları sırasında doğruluğu sağlamak için FP32'de tutulur. Aynı donanım kısıtlamaları içinde daha büyük modelleri veya daha büyük yığın boyutlarını işleyebilirsiniz.
Karışık duyarlıklı eğitimi uygulamak için, eğitim komut dosyalarınızı değiştirmeniz ve donanımınızın (GPU'lar gibi) bunu desteklediğinden emin olmanız gerekir. PyTorch ve TensorFlow gibi birçok modern derin öğrenme çerçevesi, karışık duyarlılık için yerleşik destek sunar.
YOLO11 ile çalışırken karma hassasiyet eğitimi basittir. Şunu kullanabilirsiniz: amp
işaretini eğitim yapılandırmanızda ayarlayın. amp=True
Otomatik Karışık Duyarlıklı (AMP) eğitimi etkinleştirir. Karışık duyarlıklı eğitim, model eğitim sürecinizi optimize etmenin basit ama etkili bir yoludur.
Önceden Eğitilmiş Ağırlıklar
Önceden eğitilmiş ağırlıkları kullanmak, modelinizin eğitim sürecini hızlandırmanın akıllıca bir yoludur. Önceden eğitilmiş ağırlıklar, büyük veri kümeleri üzerinde zaten eğitilmiş modellerden gelir ve modelinize bir başlangıç avantajı sağlar. Transfer öğrenimi, önceden eğitilmiş modelleri yeni, ilgili görevlere uyarlar. Önceden eğitilmiş bir modele ince ayar yapmak, bu ağırlıklarla başlamayı ve ardından belirli veri kümeniz üzerinde eğitime devam etmeyi içerir. Bu eğitim yöntemi, daha hızlı eğitim süreleri ve genellikle daha iyi performansla sonuçlanır, çünkü model temel özellikler hakkında sağlam bir anlayışla başlar.
pretrained
parametresi, YOLO11 ile transfer öğrenimini kolaylaştırır. Ayarlama pretrained=True
varsayılan önceden eğitilmiş ağırlıkları kullanacak veya özel bir önceden eğitilmiş modelin yolunu belirleyebilirsiniz. Önceden eğitilmiş ağırlıkları ve transfer öğrenimini kullanmak, modelinizin yeteneklerini etkili bir şekilde artırır ve eğitim maliyetlerini azaltır.
Büyük Bir Veri Kümesiyle Başa Çıkarken Göz Önünde Bulundurulması Gereken Diğer Teknikler
Büyük bir veri kümesini işlerken dikkate alınması gereken birkaç teknik daha vardır:
- Öğrenme Oranı Zamanlayıcıları: Öğrenme oranı planlayıcılarını uygulamak, eğitim sırasında öğrenme oranını dinamik olarak ayarlar. İyi ayarlanmış bir öğrenme oranı, modelin minimum değerleri aşmasını engelleyebilir ve kararlılığı artırabilir. YOLO11 eğitilirken,
lrf
parametresi, son öğrenme oranını başlangıç oranının bir kesri olarak ayarlayarak öğrenme oranı çizelgelemesini yönetmeye yardımcı olur. - Dağıtılmış Eğitim: Büyük veri kümelerini işlemek için dağıtılmış eğitim, oyunun kurallarını değiştirebilir. Eğitim iş yükünü birden fazla GPU veya makineye yayarak eğitim süresini kısaltabilirsiniz. Bu yaklaşım, özellikle önemli miktarda işlem kaynağına sahip kurumsal ölçekli projeler için değerlidir.
Eğitilecek Epok Sayısı
Bir model eğitilirken, bir epok, tüm eğitim veri kümesinde yapılan bir tam geçişi ifade eder. Bir epok sırasında, model eğitim setindeki her örneği bir kez işler ve öğrenme algoritmasına göre parametrelerini günceller. Modelin zaman içinde parametrelerini öğrenmesi ve iyileştirmesi için genellikle birden fazla epok gereklidir.
Sıkça sorulan bir soru, modeli kaç epoch için eğiteceğinizi nasıl belirleyeceğinizdir. İyi bir başlangıç noktası 300 epoch'tur. Model erken aşırı uyum sağlarsa, epoch sayısını azaltabilirsiniz. 300 epoch'tan sonra aşırı uyum oluşmazsa, eğitimi 600, 1200 veya daha fazla epoch'a uzatabilirsiniz.
Ancak, ideal epoch sayısı, veri kümenizin boyutuna ve proje hedeflerinize göre değişebilir. Daha büyük veri kümeleri, modelin etkili bir şekilde öğrenmesi için daha fazla epoch gerektirebilirken, daha küçük veri kümeleri, aşırı öğrenmeyi önlemek için daha az epoch gerektirebilir. YOLO11 ile ilgili olarak, epochs
eğitim komut dosyanızdaki parametre.
Erken Durdurma
Erken durdurma, model eğitimini optimize etmek için değerli bir tekniktir. Doğrulama performansını izleyerek, model iyileşmeyi durdurduğunda eğitimi durdurabilirsiniz. Hesaplama kaynaklarından tasarruf edebilir ve aşırı öğrenmeyi önleyebilirsiniz.
Süreç, eğitime son vermeden önce doğrulama metriklerinde bir iyileşme için kaç epoch bekleneceğini belirleyen bir sabır parametresi ayarlamayı içerir. Modelin performansı bu epochlar içinde iyileşmezse, zaman ve kaynak israfını önlemek için eğitim durdurulur.
YOLO11 için, eğitim yapılandırmanızda sabır parametresini ayarlayarak erken durdurmayı etkinleştirebilirsiniz. Örneğin, patience=5
bu, doğrulama metriklerinde 5 ardışık epoch boyunca herhangi bir iyileşme olmazsa eğitimin duracağı anlamına gelir. Bu yöntemi kullanmak, eğitim sürecinin verimli kalmasını ve aşırı hesaplama olmadan optimum performansa ulaşmasını sağlar.
Bulut ve Yerel Eğitim Arasında Seçim Yapmak
Modelinizi eğitmek için iki seçeneğiniz vardır: bulut eğitimi ve yerel eğitim.
Bulut eğitimi, ölçeklenebilirlik ve güçlü donanım sunar ve büyük veri kümelerini ve karmaşık modelleri işlemek için idealdir. Google Cloud, AWS ve Azure gibi platformlar, yüksek performanslı GPU'lara ve TPU'lara isteğe bağlı erişim sağlayarak eğitim sürelerini hızlandırır ve daha büyük modellerle deneyler yapılmasını sağlar. Ancak, bulut eğitimi, özellikle uzun süreler için maliyetli olabilir ve veri aktarımı maliyetleri ve gecikmeyi artırabilir.
Yerel eğitim, ortamınızı belirli ihtiyaçlara göre uyarlamanıza ve devam eden bulut maliyetlerinden kaçınmanıza olanak tanıyarak daha fazla kontrol ve özelleştirme sağlar. Uzun vadeli projeler için daha ekonomik olabilir ve verileriniz şirket içinde kaldığı için daha güvenlidir. Ancak, yerel donanımın kaynak sınırlamaları olabilir ve bakım gerektirebilir, bu da büyük modeller için daha uzun eğitim sürelerine yol açabilir.
Bir Optimize Edici Seçme
Bir optimize edici, modelin ne kadar iyi performans gösterdiğini ölçen kayıp fonksiyonunu en aza indirmek için sinir ağınızın ağırlıklarını ayarlayan bir algoritmadır. Daha basit bir ifadeyle, optimize edici, hataları azaltmak için parametrelerini ince ayar yaparak modelin öğrenmesine yardımcı olur. Doğru optimize ediciyi seçmek, modelin ne kadar hızlı ve doğru öğrendiğini doğrudan etkiler.
Model performansını artırmak için optimize edici parametrelerini de ince ayarlayabilirsiniz. Öğrenme oranını ayarlamak, parametreleri güncellerken adımların boyutunu belirler. Kararlılık için, orta düzeyde bir öğrenme oranıyla başlayabilir ve uzun vadeli öğrenmeyi iyileştirmek için zamanla kademeli olarak azaltabilirsiniz. Ek olarak, momentumu ayarlamak, geçmiş güncellemelerin mevcut güncellemeler üzerindeki etkisini belirler. Momentum için yaygın bir değer 0,9 civarındadır. Genellikle iyi bir denge sağlar.
Yaygın Optimizasyon Algoritmaları
Farklı optimize edicilerin çeşitli güçlü ve zayıf yönleri vardır. Birkaç yaygın optimize ediciye bir göz atalım.
-
SGD (Stokastik Gradyan İnişi):
- Model parametrelerini, kayıp fonksiyonunun parametrelere göre gradyanını kullanarak günceller.
- Basit ve verimli ancak yakınsaması yavaş olabilir ve yerel minimumlarda takılabilir.
-
Adam (Uyarlanabilir Moment Tahmini):
- Momentum ile SGD ve RMSProp'un faydalarını birleştirir.
- Gradyanların birinci ve ikinci momentlerinin tahminlerine dayanarak her bir parametre için öğrenme oranını ayarlar.
- Gürültülü veriler ve seyrek gradyanlar için çok uygundur.
- Verimlidir ve genellikle daha az ayarlama gerektirir, bu da onu YOLO11 için önerilen bir optimize edici yapar.
-
RMSProp (Kök Ortalama Kare Yayılımı):
- Gradyanı, son gradyanların büyüklüklerinin hareketli ortalamasına bölerek her bir parametre için öğrenme oranını ayarlar.
- Kaybolan gradyan sorununu çözmeye yardımcı olur ve yinelenen sinir ağları için etkilidir.
YOLO11 için, optimizer
parametresi, SGD, Adam, AdamW, NAdam, RAdam ve RMSProp dahil olmak üzere çeşitli optimize ediciler arasından seçim yapmanızı sağlar veya bunu şu şekilde ayarlayabilirsiniz: auto
model yapılandırmasına göre otomatik seçim için.
Toplulukla Bağlantı Kurma
Bilgisayar görüşü meraklılarından oluşan bir topluluğun parçası olmak, sorunları çözmenize ve daha hızlı öğrenmenize yardımcı olabilir. İşte bağlantı kurmanın, yardım almanın ve fikir paylaşmanın bazı yolları.
Topluluk Kaynakları
- GitHub Sorunları: YOLO11 GitHub deposunu ziyaret edin ve soru sormak, hataları bildirmek ve yeni özellikler önermek için Sorunlar sekmesini kullanın. Topluluk ve yöneticiler çok aktif ve yardım etmeye hazırlar.
- Ultralytics Discord Sunucusu: Diğer kullanıcılar ve geliştiricilerle sohbet etmek, destek almak ve deneyimlerinizi paylaşmak için Ultralytics Discord sunucusuna katılın.
Resmi Belgelendirme
- Ultralytics YOLO11 Dökümantasyonu: Çeşitli bilgisayar görüşü projeleri hakkında ayrıntılı kılavuzlar ve faydalı ipuçları için resmi YOLO11 dökümantasyonuna göz atın.
Bu kaynakları kullanmak, zorlukları çözmenize ve bilgisayar görüşü topluluğundaki en son trendler ve uygulamalarla güncel kalmanıza yardımcı olacaktır.
Temel Çıkarımlar
Bilgisayarlı görü modellerini eğitmek, iyi uygulamaları takip etmeyi, stratejilerinizi optimize etmeyi ve ortaya çıktıkça sorunları çözmeyi içerir. Batch boyutlarını ayarlamak, karma duyarlıklı eğitim ve önceden eğitilmiş ağırlıklarla başlamak gibi teknikler, modellerinizin daha iyi çalışmasını ve daha hızlı eğitilmesini sağlayabilir. Alt küme eğitimi ve erken durdurma gibi yöntemler zamandan ve kaynaklardan tasarruf etmenize yardımcı olur. Toplulukla bağlantıda kalmak ve yeni trendleri takip etmek, model eğitimi becerilerinizi geliştirmeye devam etmenize yardımcı olacaktır.
SSS
Ultralytics YOLO ile büyük bir veri kümesini eğitirken GPU kullanımını nasıl iyileştirebilirim?
GPU kullanımını iyileştirmek için şunu ayarlayın: batch_size
parametresini, eğitim yapılandırmanızda GPU'nuzun desteklediği maksimum boyuta ayarlayın. Bu, GPU'nun yeteneklerinden tam olarak yararlanmanızı sağlayarak eğitim süresini kısaltır. Bellek hatalarıyla karşılaşırsanız, eğitim sorunsuz çalışana kadar toplu iş boyutunu kademeli olarak azaltın. YOLO11 için, ayarlandığında batch=-1
eğitim betiğinizde verimli işleme için en uygun toplu iş boyutunu otomatik olarak belirleyecektir. Daha fazla bilgi için bkz. eğitim yapılandırması.
Karışık duyarlıklı eğitim (mixed precision training) nedir ve YOLO11'de nasıl etkinleştirebilirim?
Karma hassasiyet eğitimi, hesaplama hızı ve hassasiyeti dengelemek için hem 16-bit (FP16) hem de 32-bit (FP32) kayan nokta türlerini kullanır. Bu yaklaşım, eğitimi hızlandırır ve modelden ödün vermeden bellek kullanımını azaltır. doğruluğu. YOLO11'de karma duyarlıklı eğitimi etkinleştirmek için şunu ayarlayın: amp
parametresini True
eğitim yapılandırmanızda. Bu, Otomatik Karışık Duyarlıklı (AMP) eğitimini etkinleştirir. Bu optimizasyon tekniği hakkında daha fazla bilgi için bkz. eğitim yapılandırması.
Çok ölçekli eğitim, YOLO11 model performansını nasıl artırır?
Çok ölçekli eğitim, farklı boyutlardaki görüntüler üzerinde eğitim yaparak model performansını artırır ve modelin farklı ölçeklerde ve mesafelerde daha iyi genelleme yapmasını sağlar. YOLO11'de, ayarını yaparak çok ölçekli eğitimi etkinleştirebilirsiniz scale
parametresini eğitim yapılandırmasında ayarlayın. Örneğin, scale=0.5
görüntü boyutunu yarıya indirirken, scale=2.0
iki katına çıkarır. Bu teknik, farklı mesafelerdeki nesneleri simüle ederek modelin çeşitli senaryolarda daha sağlam olmasını sağlar. Ayarlar ve daha fazla ayrıntı için şuraya göz atın: eğitim yapılandırması.
YOLO11'de eğitimi hızlandırmak için önceden eğitilmiş ağırlıkları nasıl kullanabilirim?
Önceden eğitilmiş ağırlıkları kullanmak, temel görsel özelliklere zaten aşina olan bir modelden yararlanarak eğitimi büyük ölçüde hızlandırabilir ve model doğruluğunu artırabilir. YOLO11'de, sadece şunu ayarlayın: pretrained
parametresini True
veya eğitim yapılandırmasında özel önceden eğitilmiş ağırlıklarınıza bir yol sağlayın. Transfer öğrenimi olarak adlandırılan bu yöntem, büyük veri kümeleri üzerinde eğitilmiş modellerin özel uygulamanıza etkili bir şekilde uyarlanmasını sağlar. Önceden eğitilmiş ağırlıkları ve bunların faydalarını nasıl kullanacağınız hakkında daha fazla bilgiyi şurada bulabilirsiniz: eğitim yapılandırma kılavuzu.
Bir modeli eğitmek için önerilen epok sayısı nedir ve bunu YOLO11'de nasıl ayarlayabilirim?
Epok sayısı, model eğitimi sırasında eğitim veri kümesindeki tam geçişleri ifade eder. Tipik bir başlangıç noktası 300 epoktur. Modeliniz erken aşırı öğrenirse, sayıyı azaltabilirsiniz. Alternatif olarak, aşırı öğrenme gözlemlenmezse, eğitimi 600, 1200 veya daha fazla epoka uzatabilirsiniz. Bunu YOLO11'de ayarlamak için, epochs
eğitim komut dosyanızdaki parametre. İdeal epoch sayısını belirleme konusunda ek tavsiye için, şu bölümü inceleyin: epok sayısı.