Model eğitimi için makine öğrenimi en iyi yöntemleri ve ipuçları
Giriş
Bir bilgisayarla görme projesi üzerinde çalışırken en önemli adımlardan biri model eğitimidir. Bu adıma geçmeden önce hedeflerinizi belirlemeniz ve verilerinizi toplayıp açıklama eklemeniz gerekir. Temiz ve tutarlı olduğundan emin olmak için verileri ön işlemden geçirdikten sonra modelinizi eğitmeye geçebilirsiniz.
İzle: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and [Mixed Precision](https://www.ultralytics.com/glossary/mixed-precision)
Peki, model eğitimi nedir? Model eğitimi, modelinize görsel desenleri tanımayı ve verilerinize dayanarak tahminler yapmayı öğretme sürecidir. Uygulamanızın performansını ve doğruluğunu doğrudan etkiler. Bu kılavuzda, bilgisayarla görme modellerinizi etkili bir şekilde eğitmenize yardımcı olacak en iyi uygulamaları, optimizasyon tekniklerini ve sorun giderme ipuçlarını ele alacağız.
How to Train a Machine Learning Model
Bir görüntü işleme modeli, hataları en aza indirmek için dahili parametreleri ayarlanarak eğitilir. Başlangıçta, model çok sayıda etiketli görüntü ile beslenir. Bu görüntülerde ne olduğu hakkında tahminlerde bulunur ve tahminleri 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 uzakta olduğunu gösterir.
During training, the model iteratively makes predictions, calculates errors, and updates its parameters through a process called backpropagation. In this process, the model adjusts its internal parameters (weights and biases) to reduce the errors. By repeating this cycle many times, the model gradually improves its accuracy. Over time, it learns to recognize complex patterns such as shapes, colors, and textures.
This learning process makes it possible for the computer vision model to perform various tasks, including object detection, instance segmentation, and image classification. The ultimate goal is to create a model that can generalize its learning to new, unseen images so that it can accurately understand visual data in real-world applications.
Artık bir modeli eğitirken perde arkasında neler olduğunu bildiğimize göre, modeli eğitirken göz önünde bulundurulması 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, yığın boyutunu ayarlayabilir, GPU kullanımını kontrol edebilir, çok ölçekli eğitim kullanmayı seçebilirsiniz, vb. Bu seçeneklerin her birini ayrıntılı olarak inceleyelim.
Parti Büyüklüğü ve GPU Kullanımı
Modelleri büyük veri kümeleri üzerinde eğitirken GPU adresinizi verimli bir şekilde kullanmak çok önemlidir. Yığın boyutu önemli bir faktördür. Bir makine öğrenimi modelinin tek bir eğitim iterasyonunda işlediği veri örneği sayısıdır. GPU tarafından desteklenen maksimum parti boyutunu kullanarak, yeteneklerinden tam olarak yararlanabilir ve model eğitiminin aldığı süreyi azaltabilirsiniz. Ancak GPU belleğinin tükenmesini önlemek istersiniz. Bellek hatalarıyla karşılaşırsanız, model sorunsuz bir şekilde eğitilene kadar yığın boyutunu kademeli olarak azaltın.
With respect to YOLO11, you can set the batch_size
parametresinde eğitim yapılandırması GPU kapasitenize uyacak şekilde ayarlayın. Ayrıca, ayar batch=-1
in your training script will automatically determine the batch size that can be efficiently processed based on your device's capabilities. By fine-tuning the batch size, you can make the most of your GPU resources and improve the overall training process.
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 ilk model geliştirme ve test sırasında zamandan ve kaynaklardan tasarruf sağlayabilir. Zamanınız kısıtlıysa veya farklı model yapılandırmalarıyla denemeler yapıyorsanız, alt küme eğitimi iyi bir seçenektir.
When it comes to YOLO11, you can easily implement subset training by using the fraction
parametre. Bu parametre, eğitim için veri kümenizin hangi bölümünün kullanılacağını belirtmenize olanak tanır. Örneğin, ayar fraction=0.1
modelinizi verilerin %10'u üzerinde eğitir. Tam bir veri kümesi kullanarak bir modeli eğitmeyi taahhüt etmeden önce hızlı yinelemeler ve modelinizi ayarlamak için bu tekniği kullanabilirsiniz. Alt küme eğitimi, hızlı ilerleme kaydetmenize ve olası sorunları erkenden 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 farklı ölçek ve mesafelerdeki nesneleri tespit etmeyi öğrenebilir ve daha sağlam hale gelebilir.
For example, when you train YOLO11, you can enable multiscale training by setting the scale
parametre. Bu parametre, eğitim görüntülerinin boyutunu belirli bir faktöre göre ayarlayarak farklı mesafelerdeki nesnelerin benzetimini yapar. Örneğin, ayar scale=0.5
görüntü boyutunu yarı yarıya küçültürken, scale=2.0
ikiye katlayacak. Bu parametrenin yapılandırılması, modelinizin çeşitli görüntü ölçeklerini deneyimlemesine ve farklı nesne boyutları ve senaryolarında algılama yeteneklerini geliştirmesine olanak tanır.
Önbelleğe alma
Önbellekleme, makine öğrenimi modellerinin eğitim verimliliğini artırmak için önemli bir tekniktir. Önbelleğe alma, önceden işlenmiş görüntüleri bellekte depolayarak GPU 'un verilerin diskten yüklenmesini beklemek için harcadığı süreyi azaltır. Model, disk I/O işlemlerinin neden olduğu gecikmeler olmadan sürekli olarak veri alabilir.
Caching can be controlled when training YOLO11 using the cache
parametre:
cache=True
: Veri kümesi görüntülerini RAM'de depolayarak en yüksek erişim hızını sağlar, ancak artan bellek kullanımı pahasına.cache='disk'
: Görüntüleri diskte saklar, RAM'den daha yavaştır, ancak her seferinde yeni veri yüklemekten daha hızlıdır.cache=False
: En yavaş seçenek olan disk G/Ç'sine tamamen güvenerek önbelleğe almayı devre dışı bırakır.
Karışık Hassasiyet Eğitimi
Mixed precision training uses both 16-bit (FP16) and 32-bit (FP32) floating-point types. The strengths of both FP16 and FP32 are leveraged by using FP16 for faster computation and FP32 to maintain precision where needed. Most of the neural network's operations are done in FP16 to benefit from faster computation and lower memory usage. However, a master copy of the model's weights is kept in FP32 to ensure accuracy during the weight update steps. You can handle larger models or larger batch sizes within the same hardware constraints.
To implement mixed precision training, you'll need to modify your training scripts and ensure your hardware (like GPUs) supports it. Many modern deep learning frameworks, such as Tensorflow, offer built-in support for mixed precision.
Mixed precision training is straightforward when working with YOLO11. You can use the amp
Bayrağını kullanarak eğitim yapılandırmanıza ekleyin. Ayar amp=True
Otomatik Karışık Duyarlık (AMP) eğitimini etkinleştirir. Karma duyarlık eğitimi, model eğitim sürecinizi optimize etmenin basit ama etkili bir yoludur.
Önceden Eğitilmiş Ağırlıklar
Using pretrained weights is a smart way to speed up your model's training process. Pretrained weights come from models already trained on large datasets, giving your model a head start. Transfer learning adapts pretrained models to new, related tasks. Fine-tuning a pre-trained model involves starting with these weights and then continuing training on your specific dataset. This method of training results in faster training times and often better performance because the model starts with a solid understanding of basic features.
Bu pretrained
parameter makes transfer learning easy with YOLO11. Setting pretrained=True
varsayılan önceden eğitilmiş ağırlıkları kullanır veya önceden eğitilmiş özel bir modele giden bir yol belirtebilirsiniz. Önceden eğitilmiş ağırlıkları ve transfer öğrenimini etkili bir şekilde kullanmak, modelinizin yeteneklerini artırır ve eğitim maliyetlerini azaltır.
Büyük bir veri kümesini işlerken göz önünde bulundurulması gereken diğer teknikler
Büyük bir veri kümesini işlerken göz önünde bulundurulması gereken birkaç teknik daha vardır:
- Learning Rate Schedulers: Implementing learning rate schedulers dynamically adjusts the learning rate during training. A well-tuned learning rate can prevent the model from overshooting minima and improve stability. When training YOLO11, the
lrf
parametresi, nihai öğrenme oranını başlangıç oranının bir kısmı olarak ayarlayarak öğrenme hızı planlamasının yönetilmesine 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'ya veya makineye yayarak eğitim süresini kısaltabilirsiniz.
Eğitilecek Çağ Sayısı
Bir modeli eğitirken, bir dönem tüm eğitim veri kümesinden geçen bir tam geçişi ifade eder. Bir dönem boyunca model, eğitim kümesindeki her örneği bir kez işler ve parametrelerini öğrenme algoritmasına göre günceller. Modelin zaman içinde parametrelerini öğrenmesine ve iyileştirmesine izin vermek için genellikle birden fazla döneme ihtiyaç vardır.
A common question that comes up is how to determine the number of epochs to train the model for. A good starting point is 300 epochs. If the model overfits early, you can reduce the number of epochs. If overfitting does not occur after 300 epochs, you can extend the training to 600, 1200, or more epochs.
However, the ideal number of epochs can vary based on your dataset's size and project goals. Larger datasets might require more epochs for the model to learn effectively, while smaller datasets might need fewer epochs to avoid overfitting. With respect to YOLO11, you can set the epochs
parametresini kullanın.
Erken Durdurma
Erken durdurma, model eğitimini optimize etmek için değerli bir tekniktir. Doğrulama performansını izleyerek, model geliştirmeyi durdurduğunda eğitimi durdurabilirsiniz. Hesaplama kaynaklarından tasarruf edebilir ve aşırı öğrenmeyi önleyebilirsiniz.
The process involves setting a patience parameter that determines how many epochs to wait for an improvement in validation metrics before stopping training. If the model's performance does not improve within these epochs, training is stopped to avoid wasting time and resources.
For YOLO11, you can enable early stopping by setting the patience parameter in your training configuration. For example, patience=5
art arda 5 dönem için doğrulama ölçümlerinde herhangi bir gelişme olmazsa eğitimin durdurulacağı anlamına gelir. Bu yöntemin kullanılması, 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 Yapma
Modelinizi eğitmek için iki seçenek vardır: bulut eğitimi ve yerel eğitim.
Ölçeklenebilirlik ve güçlü donanım sunan bulut eğitimi, 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ına olanak tanır. Bununla birlikte, bulut eğitimi özellikle uzun süreler için pahalı olabilir ve veri aktarımı maliyetleri ve gecikmeyi artırabilir.
Yerel eğitim, daha fazla kontrol ve özelleştirme sağlayarak ortamınızı belirli ihtiyaçlara göre uyarlamanıza ve devam eden bulut maliyetlerinden kaçınmanıza olanak tanır. 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
An optimizer is an algorithm that adjusts the weights of your neural network to minimize the loss function, which measures how well the model is performing. In simpler terms, the optimizer helps the model learn by tweaking its parameters to reduce errors. Choosing the right optimizer directly affects how quickly and accurately the model learns.
Model performansını artırmak için iyileştirici parametrelerinde ince ayar da yapabilirsiniz. Öğrenme hızının ayarlanması, parametreleri güncellerken adımların boyutunu ayarlar. İstikrar için, ılımlı bir öğrenme oranıyla başlayabilir ve uzun vadeli öğrenmeyi geliştirmek için zaman içinde kademeli olarak azaltabilirsiniz. Ek olarak, momentumu ayarlamak, geçmiş güncellemelerin mevcut güncellemeler üzerinde ne kadar etkisi olduğunu belirler. Momentum için ortak bir değer 0,9 civarındadır. Genellikle iyi bir denge sağlar.
Ortak Optimize Ediciler
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):
- Parametrelere göre kayıp fonksiyonunun gradyanını kullanarak model parametrelerini günceller.
- Basit ve verimlidir, ancak yakınsaması yavaş olabilir ve yerel minimumda takılıp kalabilir.
-
Adam (Uyarlanabilir Moment Tahmini):
- Hem SGD'nin avantajlarını momentum hem de RMSProp ile birleştirir.
- Gradyanların birinci ve ikinci momentlerinin tahminlerine dayalı olarak her parametre için öğrenme oranını ayarlar.
- Gürültülü veriler ve seyrek gradyanlar için çok uygundur.
- Efficient and generally requires less tuning, making it a recommended optimizer for YOLO11.
-
RMSProp (Kök Ortalama Kare Yayılımı):
- Gradyanı, son gradyanların büyüklüklerinin değişen ortalamasına bölerek her parametre için öğrenme oranını ayarlar.
- Helps in handling the vanishing gradient problem and is effective for recurrent neural networks.
For YOLO11, the 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 auto
model konfigürasyonuna göre otomatik seçim için.
Toplumla Bağlantı Kurmak
Bilgisayarla görme 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ı.
Toplum Kaynakları
- GitHub Issues: Visit the YOLO11 GitHub repository and use the Issues tab to ask questions, report bugs, and suggest new features. The community and maintainers are very active and ready to help.
- 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 Belgeler
- Ultralytics YOLO11 Documentation: Check out the official YOLO11 documentation for detailed guides and helpful tips on various computer vision projects.
Bu kaynakları kullanmak, zorlukları çözmenize ve görüntü işleme topluluğundaki en son trendler ve uygulamalarla güncel kalmanıza yardımcı olacaktır.
Önemli Çıkarımlar
Training computer vision models involves following good practices, optimizing your strategies, and solving problems as they arise. Techniques like adjusting batch sizes, mixed precision training, and starting with pre-trained weights can make your models work better and train faster. Methods like subset training and early stopping help you save time and resources. Staying connected with the community and keeping up with new trends will help you keep improving your model training skills.
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 batch_size
parameter in your training configuration to the maximum size supported by your GPU. This ensures that you make full use of the GPU's capabilities, reducing training time. If you encounter memory errors, incrementally reduce the batch size until training runs smoothly. For YOLO11, setting batch=-1
eğitim komut dosyanızda verimli işleme için en uygun parti boyutunu otomatik olarak belirleyecektir. Daha fazla bilgi için bkz. eğitim yapılandırması.
What is mixed precision training, and how do I enable it in YOLO11?
Mixed precision training utilizes both 16-bit (FP16) and 32-bit (FP32) floating-point types to balance computational speed and precision. This approach speeds up training and reduces memory usage without sacrificing model accuracy. To enable mixed precision training in YOLO11, set the amp
parametresine True
eğitim yapılandırmanızda. Bu, Otomatik Karma Hassasiyet (AMP) eğitimini etkinleştirir. Bu optimizasyon tekniği hakkında daha fazla ayrıntı için bkz. eğitim yapılandırması.
How does multiscale training enhance YOLO11 model performance?
Multiscale training enhances model performance by training on images of varying sizes, allowing the model to better generalize across different scales and distances. In YOLO11, you can enable multiscale training by setting the scale
eğitim yapılandırmasındaki parametre. Örneğin, scale=0.5
görüntü boyutunu yarı yarıya azaltırken scale=2.0
iki katına çıkarır. Bu teknik, nesneleri farklı mesafelerde simüle ederek modeli çeşitli senaryolarda daha sağlam hale getirir. Ayarlar ve daha fazla ayrıntı için eğitim yapılandırması.
How can I use pre-trained weights to speed up training in YOLO11?
Using pre-trained weights can significantly reduce training times and improve model performance by starting from a model that already understands basic features. In YOLO11, you can set the pretrained
parametresine True
veya eğitim yapılandırmanızda özel önceden eğitilmiş ağırlıklara giden bir yol belirtin. Aktarımlı öğrenme olarak bilinen bu yaklaşım, özel görevinize uyum sağlamak için büyük veri kümelerindeki bilgilerden yararlanır. Önceden eğitilmiş ağırlıklar ve avantajları hakkında daha fazla bilgi edinin Burada.
What is the recommended number of epochs for training a model, and how do I set this in YOLO11?
The number of epochs refers to the complete passes through the training dataset during model training. A typical starting point is 300 epochs. If your model overfits early, you can reduce the number. Alternatively, if overfitting isn't observed, you might extend training to 600, 1200, or more epochs. To set this in YOLO11, use the epochs
eğitim komut dosyanızdaki parametre. İdeal epok sayısını belirlemeye yönelik ek tavsiyeler için şu bölüme bakın epok sayısı.