Makine Öğrenimi En İyi Uygulamaları ve Model Eğitimi İçin İpuçları#
Giriş#
Bir computer vision project üzerinde çalışırken en önemli adımlardan biri model eğitimidir. Bu adıma ulaşmadan önce hedeflerini belirlemen ve verilerini toplayıp etiketlemen gerekir. Verilerin temiz ve tutarlı olduğundan emin olmak için verileri ön işlemeden geçirdikten sonra modelini eğitmeye geçebilirsin.
Model training, modeline görsel kalıpları tanımayı ve verilerinden tahminler yapmayı öğretme sürecidir ve uygulamanın doğruluğunu doğrudan şekillendirir. Bu kılavuz, bilgisayarlı görü modellerini etkili bir şekilde eğitmenge yardımcı olmak için en iyi uygulamaları, optimizasyon tekniklerini ve sorun giderme ipuçlarını ele alır.
Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision
Bir Makine Öğrenimi Modeli Nasıl Eğitilir#
Bir bilgisayarlı görü modeli, hataları en aza indirmek için dahili parametrelerinin ayarlanmasıyla eğitilir. Başlangıçta modele büyük bir etiketli görüntü kümesi beslenir. Model bu görüntülerde ne olduğuyla ilgili tahminlerde bulunur ve hataları hesaplamak için bu tahminler 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, backpropagation adı verilen bir süreçle yinelemeli olarak tahminler yapar, hataları hesaplar ve parametrelerini günceller. Bu süreçte model, hataları azaltmak için dahili parametrelerini (ağırlıklar ve sapmalar) ayarlar. Bu döngüyü birçok kez tekrarlayarak model kademeli olarak doğruluğunu artırır. Zamanla şekiller, renkler ve dokular gibi karmaşık kalıpları tanımayı öğrenir.
Bu öğrenme süreci, computer vision modelinin object detection, instance segmentation, semantic segmentation ve image classification dahil olmak üzere çeşitli tasks gerçekleştirmesini mümkün kılar. Nihai amaç, gerçek dünya uygulamalarındaki görsel verileri doğru bir şekilde anlayabilmesi için modelin öğrendiklerini yeni ve görülmemiş görüntülere genellemesini sağlamaktır.
Artık bir model eğittiğimizde arka planda neler olduğunu bildiğimize göre, model eğitirken dikkate alınması gereken noktalara bakalım.
Büyük Veri Kümelerinde Eğitim#
Büyük bir veri kümesini model eğitmek için kullanmayı planladığında düşünmen gereken birkaç farklı husus vardır. Örneğin, yığın boyutunu (batch size) ayarlayabilir, GPU kullanımını kontrol edebilir, çok ölçekli eğitimi kullanmayı seçebilirsin vb. Şimdi bu seçeneklerin her birini ayrıntılı olarak inceleyelim.
Yığın Boyutu ve GPU Kullanımı#
Modelleri büyük veri kümeleri üzerinde eğitirken, GPU'nu verimli bir şekilde kullanman çok önemlidir. Yığın boyutu önemli bir faktördür. Bu, bir makine öğrenimi modelinin tek bir eğitim yinelemesinde işlediği veri örneği sayısıdır. GPU'nun desteklediği maksimum yığın boyutunu kullanarak, yeteneklerinden tam olarak yararlanabilir ve model eğitim süresini kısaltabilirsin. Ancak GPU belleğinin tükenmesinden kaçınmalısın. Bellek hatalarıyla karşılaşırsan, model sorunsuz bir şekilde eğitime devam edene kadar yığın boyutunu kademeli olarak azalt.
Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉
YOLO26 ile ilgili olarak, GPU kapasitene uyum sağlaması için training configuration içindeki batch parametresini ayarlayabilirsin. Ayrıca, eğitim betiğinde batch=-1 ayarını yapmak, cihazının yeteneklerine bağlı olarak verimli bir şekilde işlenebilecek batch size değerini otomatik olarak belirleyecektir. Batch size değerine ince ayar yaparak GPU kaynaklarından en iyi şekilde yararlanabilir ve genel eğitim sürecini iyileştirebilirsin.
Alt Küme Eğitimi#
Alt küme eğitimi, modelini 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 aşamalarında zaman ve kaynak tasarrufu sağlayabilir. Zamanın kısıtlıysa veya farklı model yapılandırmalarıyla denemeler yapıyorsan, alt küme eğitimi iyi bir seçenektir.
YOLO26 söz konusu olduğunda, fraction parametresini kullanarak alt küme eğitimini kolayca uygulayabilirsin. Bu parametre, eğitim için veri setinin hangi kısmının kullanılacağını belirtmeni sağlar. Örneğin, fraction=0.1 ayarını yapmak modelini verilerin %10'u üzerinde eğitecektir. Bu tekniği, tam bir veri seti kullanarak model eğitimi taahhüdünde bulunmadan önce hızlı yinelemeler yapmak ve modeline ince ayar yapmak için kullanabilirsin. Alt küme eğitimi, hızlı ilerleme kaydetmeni ve olası sorunları erkenden tespit etmeni sağlar.
Çok Ölçekli Eğitim#
Çok ölçekli eğitim, modelini farklı boyutlardaki görüntüler üzerinde eğiterek genelleme yeteneğini artıran bir tekniktir. Modelin nesneleri farklı ölçeklerde ve mesafelerde algılamayı öğrenebilir ve daha dayanıklı hale gelebilir.
Örneğin, YOLO26'yı eğittiğinde scale parametresini ayarlayarak çok ölçekli eğitimi etkinleştirebilirsin. Bu parametre, eğitim görüntü boyutunu belirtilen bir faktöre göre ayarlayarak farklı mesafelerdeki nesneleri simüle eder. Örneğin, scale=0.5 ayarını yapmak, eğitim sırasında eğitim görüntülerini 0.5 ile 1.5 arasında bir faktörle rastgele yakınlaştırır. Bu parametreyi yapılandırmak, modelinin çeşitli görüntü ölçekleri deneyimlemesini ve farklı nesne boyutları ile senaryolarda algılama yeteneklerini geliştirmesini sağlar.
Ultralytics, multi_scale parametresi aracılığıyla görüntü boyutu çok ölçekli eğitimi de destekler. Görüntüleri yakınlaştıran ve ardından imgsz boyutuna geri sarmak için dolgu/kırpma uygulayan scale aksine, multi_scale her batch için imgsz değerinin kendisini değiştirir (model adımına yuvarlanır). Örneğin, imgsz=640 ve multi_scale=0.25 ile eğitim boyutu adım adımlarla 480'den 800'e kadar örneklenir (ör. 480, 512, 544, ..., 800), buna karşılık multi_scale=0.0 sabit bir boyut korur.
Önbelleğe Alma#
Önbelleğe alma, makine öğrenimi modellerinin eğitim verimliliğini artırmak için önemli bir tekniktir. Önceden işlenmiş görüntüleri bellekte depolayarak önbelleğe alma, GPU'nun diskten verilerin yüklenmesini bekleyerek harcadığı süreyi azaltır. Model, disk G/Ç işlemlerinden kaynaklanan gecikmeler olmadan sürekli olarak veri alabilir.
cache parametresi kullanılarak YOLO26 eğitilirken önbelleğe alma (caching) kontrol edilebilir:
cache=True: Veri seti görüntülerini RAM'de saklayarak en hızlı erişim hızını sağlar, ancak artan belleksel kullanım maliyeti vardır.cache='disk': Görüntüleri diskte saklar; RAM'den yavaştır ancak her seferinde taze veri yüklemekten daha hızlıdır.cache=False: Önbelleğe almayı devre dışı bırakır ve tamamen en yavaş seçenek olan disk I/O işlemlerine güvenir.
Karma Hassasiyetli Eğitim#
Karışık hassasiyetli eğitim, hem 16-bit (FP16) hem de 32-bit (FP32) kayan nokta türlerini kullanır. FP16 daha hızlı hesaplama için kullanılırken, gerektiğinde hassasiyeti korumak için FP32 kullanılarak her iki türün de avantajlarından yararlanılır. Neural network işlemlerinin çoğu, daha hızlı hesaplama ve daha düşük bellek kullanımından yararlanmak için FP16'da yapılır. Bununla birlikte, ağırlık güncelleme adımları sırasında doğruluğu sağlamak için modelin ağırlıklarının ana kopyası FP32'de tutulur. Aynı donanım kısıtlamaları dahilinde daha büyük modelleri veya daha büyük batch size değerlerini işleyebilirsin.
Karma duyarlıklı eğitim uygulamak için eğitim betiklerini değiştirmen ve donanımının (GPU'lar gibi) bunu desteklediğinden emin olman gerekir. PyTorch ve TensorFlow gibi birçok modern deep learning çerçevesi, karma duyarlılık için yerleşik destek sunar.
YOLO26 ile çalışırken karışık hassasiyetli eğitim oldukça basittir. Eğitim yapılandırmanda amp bayrağını kullanabilirsin. amp=True ayarını yapmak, Otomatik Karışık Hassasiyet (AMP) eğitimini etkinleştirir. Karışık hassasiyetli eğitim, model eğitimi sürecini optimize etmek için basit ama etkili bir yoldur.
Önceden Eğitilmiş Ağırlıklar#
Önceden eğitilmiş ağırlıkları kullanmak, modelinin eğitim sürecini hızlandırmak için akıllı bir yoldur. Önceden eğitilmiş ağırlıklar, büyük veri setlerinde önceden eğitilmiş modellerden gelir ve modeline erken bir avantaj sağlar. Transfer learning, önceden eğitilmiş modelleri yeni ve ilgili görevlere uyarlar. Önceden eğitilmiş bir modele ince ayar yapmak, bu ağırlıklarla başlamayı ve ardından belirli veri setin üzerinde eğitime devam etmeyi içerir. Bu eğitim yöntemi, model temel özellikler hakkında sağlam bir anlayışla başladığı için daha hızlı eğitim süreleri ve genellikle daha iyi performans sağlar.
pretrained parametresi, YOLO26 ile transfer learning yapmayı kolaylaştırır. pretrained=True ayarını yapmak varsayılan önceden eğitilmiş ağırlıkları kullanacaktır ya da özel bir önceden eğitilmiş modelin yolunu belirtebilirsin. Önceden eğitilmiş ağırlıkları ve transfer learning yöntemini etkili bir şekilde kullanmak, modelinin yeteneklerini artırır ve eğitim maliyetlerini düşürür.
Büyük Bir Veri Kümesiyle Çalışırken Dikkate Alınması Gereken Diğer Teknikler#
Büyük bir veri kümesiyle çalışırken dikkate alınması gereken birkaç başka teknik daha vardır:
- Learning Rate Schedulers: Öğrenme hızı zamanlayıcılarını uygulamak, eğitim sırasında öğrenme hızını dinamik olarak ayarlar. İyi ayarlanmış bir öğrenme hızı, modelin minimum değerleri aşmasını engelleyebilir ve kararlılığı artırabilir. YOLO26'yı eğitirken
lrfparametresi, son öğrenme hızını başlangıç oranının bir kesiri olarak ayarlayarak öğrenme hızı planlamasını 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'ya veya makineye yayarak eğitim süresini kısaltabilirsin. Bu yaklaşım, önemli hesaplama kaynaklarına sahip kurumsal ölçekli projeler için özellikle değerlidir.
Eğitim İçin Gereken Dönem Sayısı#
Bir modeli eğitirken epoch, tüm eğitim veri setinden bir tam geçişi ifade eder. Bir epoch sırasında model, eğitim setindeki her örneği bir kez işler ve öğrenme algoritmasına dayanarak parametrelerini günceller. Modelin zaman içinde parametrelerini öğrenmesini ve iyileştirmesini sağlamak için genellikle birden fazla epoch gereklidir.
Ortaya çıkan yaygın bir soru, modelin kaç epoch boyunca eğitileceğinin nasıl belirleneceğidir. İyi bir başlangıç noktası 300 epoch'tur. Model erken aşamada aşırı öğrenme (overfitting) gösterirse epoch sayısını azaltabilirsin. 300 epoch'tan sonra overfitting gözlemlenmezse eğitimi 600, 1200 veya daha fazla epoch'a uzatabilirsin.
Bununla birlikte, ideal epoch sayısı veri setinin boyutuna ve proje hedeflerine göre değişebilir. Daha büyük veri setleri modelin etkili bir şekilde öğrenmesi için daha fazla epoch gerektirebilirken, daha küçük veri setleri aşırı öğrenmeden kaçınmak için daha az epoch gerektirebilir. YOLO26 ile ilgili olarak eğitim betiğinde epochs parametresini ayarlayabilirsin.
Erken Durdurma#
Erken durdurma, model eğitimini optimize etmek için değerli bir tekniktir. Doğrulama performansını izleyerek, model gelişmeyi durdurduğunda eğitimi durdurabilirsin. Hesaplama kaynaklarından tasarruf edebilir ve aşırı öğrenmeyi önleyebilirsin.
Süreç, eğitimi durdurmadan önce doğrulama metriklerinde bir iyileşme için kaç dönem bekleneceğini belirleyen bir sabır (patience) parametresi ayarlamayı içerir. Modelin performansı bu dönemler içinde iyileşmezse, zaman ve kaynak israfını önlemek için eğitim durdurulur.
YOLO26 için eğitim yapılandırmanda patience parametresini ayarlayarak erken durdurmayı (early stopping) etkinleştirebilirsin. Örneğin, patience=5, doğrulama metriklerinde ardışık 5 epoch boyunca 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 Yapma#
Modelini eğitmek için iki seçenek vardır: bulut eğitimi ve yerel eğitim.
Bulut tabanlı eğitim; ölçeklenebilirlik ve güçlü donanım sunar, büyük veri setlerini ve karmaşık modelleri ele almak 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 denemeler yapılmasına olanak tanır. Ancak bulut tabanlı eğitim, özellikle uzun süreler boyunca pahalı olabilir ve veri aktarımı maliyetleri ile gecikmeyi artırabilir.
Yerel eğitim daha fazla kontrol ve özelleştirme sağlar, ortamını özel ihtiyaçlara göre uyarlamana ve devam eden bulut maliyetlerinden kaçınmana olanak tanır. Uzun vadeli projeler için daha ekonomik olabilir ve verilerin kurum 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 İyileştirici Seçme#
Optimizer, modelin ne kadar iyi performans gösterdiğini ölçen loss function değerini en aza indirmek için neural network ağırlıklarını ayarlayan bir algoritmadır. Daha basit bir ifadeyle optimizer, hataları azaltmak için parametrelerini ince ayarlayarak modelin öğrenmesine yardımcı olur. Doğru optimizer'ı seçmek, modelin ne kadar hızlı ve doğru öğrendiğini doğrudan etkiler.
Ayrıca model performansını artırmak için iyileştirici parametrelerine ince ayar yapabilirsin. Öğ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şlayıp uzun vadeli öğrenmeyi iyileştirmek için zamanla kademeli olarak azaltabilirsin. Ayrıca, momentumu ayarlamak, geçmiş güncellemelerin mevcut güncellemeler üzerinde ne kadar etkili olacağını belirler. Momentum için yaygın bir değer yaklaşık 0,9'dur. Genellikle iyi bir denge sağlar.
Yaygın İyileştiriciler#
Farklı iyileştiricilerin çeşitli güçlü ve zayıf yönleri vardır. Şimdi birkaç yaygın iyileştiriciye göz atalım.
-
SGD (Stokastik Gradyan İnişi):
- Model parametrelerini, kayıp fonksiyonunun parametrelere göre gradyanını kullanarak günceller.
- Basit ve verimlidir ancak yakınsaması yavaş olabilir ve yerel minimumlarda takılıp kalabilir.
-
Adam (Adaptive Moment Estimation):
- Hem momentumlu SGD'nin hem de RMSProp'un faydalarını birleştirir.
- Gradyanların ilk ve ikinci moment tahminlerine dayanarak her parametre için öğrenme oranını ayarlar.
- Gürültülü veriler ve seyrek gradyanlar için çok uygundur.
- Verimlidir ve genellikle daha az ayar gerektirir. Daha kısa eğitim çalıştırmaları için YOLO26'nın
optimizer=autoparametresi, Adam'ın kendisi yerine yakından ilişkili olan AdamW'yu seçer.
-
RMSProp (Kök Ortalama Kare Yayılımı):
- Gradyanı, son gradyanların büyüklüklerinin hareketli ortalamasına bölerek her parametre için öğrenme oranını ayarlar.
- Kaybolan gradyan (vanishing gradient) problemini ele almaya yardımcı olur ve recurrent neural networks için etkilidir.
-
MuSGD (Muon + SGD hibriti):
- Büyük ölçekli eğitimde gelişmiş kararlılık için SGD tarzı güncellemeleri Muon esintili davranışla birleştirir.
- SGD benzeri bir genelleme istediğinde ancak standart SGD'den daha pürüzsüz bir yakınsamaya ihtiyaç duyduğunda iyi bir seçimdir.
- Özellikle YOLO26 training recipes ile ilgilidir; emin değilsen
optimizer=autoile başla ve veri setin üzerinde MuSGD ile karşılaştır.
YOLO26 için optimizer parametresi; SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam ve RMSProp dahil olmak üzere çeşitli optimizer'lar arasından seçim yapmanı sağlar ya da model yapılandırmasına göre otomatik seçim için bunu auto olarak ayarlayabilirsin.
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDToplulukla Bağlantı Kurma#
Bilgisayarlı görü meraklılarından oluşan bir topluluğun parçası olmak, sorunları çözmene ve daha hızlı öğrenmene yardımcı olabilir. İşte bağlantı kurmanın, yardım almanın ve fikir paylaşmanın bazı yolları.
Topluluk Kaynakları#
- GitHub Issues: YOLO26 GitHub repository adresini ziyaret et ve soru sormak, hataları bildirmek ve yeni özellikler önermek için Issues sekmesini kullan. Topluluk ve geliştiriciler oldukça aktiftir ve yardım etmeye hazırdır.
- Ultralytics Discord Server: Diğer kullanıcılar ve geliştiricilerle sohbet etmek, destek almak ve deneyimlerini paylaşmak için Ultralytics Discord server adresine katıl.
Resmi Belgeler#
- Ultralytics YOLO26 Documentation: Çeşitli computer vision projeleri hakkında ayrıntılı kılavuzlar ve faydalı ipuçları için official YOLO26 documentation sayfasına göz at.
Bu kaynakları kullanmak, zorlukları çözmene ve bilgisayarlı görü topluluğundaki en son trendler ve uygulamalarla güncel kalmana yardımcı olacaktır.
Önemli Çıkarımlar#
Bilgisayarlı görü modellerini eğitmek; iyi uygulamaları takip etmeyi, stratejilerini optimize etmeyi ve ortaya çıkan sorunları çözmeyi içerir. Batch size ayarlarını yapmak, karışık precision eğitimi ve önceden eğitilmiş ağırlıklarla başlamak gibi teknikler, modellerinin 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 etmene yardımcı olur. Toplulukla iletişimde kalmak ve yeni trendleri takip etmek, model eğitimi becerilerini geliştirmeye devam etmeni sağlar.
SSS#
Ultralytics YOLO ile büyük bir veri kümesi eğitirken GPU kullanımını nasıl iyileştirebilirim?#
GPU kullanımını iyileştirmek için eğitim yapılandırmandaki batch parametresini GPU'nuzun desteklediği maksimum boyuta ayarla. Bu, GPU'nun yeteneklerinden tam olarak yararlanmanı sağlayarak eğitim süresini kısaltır. Bellek hatalarıyla karşılaşırsan, eğitim sorunsuz çalışana kadar batch size değerini kademeli olarak azalt. YOLO26 için eğitim betiğinde batch=-1 ayarını yapmak, verimli işleme için optimal batch size değerini otomatik olarak belirleyecektir. Daha fazla bilgi için training configuration kısmına bakabilirsin.
Karma hassasiyetli eğitim nedir ve bunu YOLO26'da nasıl etkinleştiririm?#
Karışık hassasiyetli eğitim, hesaplama hızı ile hassasiyeti dengelemek için hem 16-bit (FP16) hem de 32-bit (FP32) kayan nokta türlerini kullanır. Bu yaklaşım, model accuracy değerinden ödün vermeden eğitimi hızlandırır ve bellek kullanımını azaltır. YOLO26'da karışık hassasiyetli eğitimi etkinleştirmek için eğitim yapılandırmandaki amp parametresini True olarak ayarla. Bu, Otomatik Karışık Hassasiyet (AMP) eğitimini etkinleştirir. Bu optimizasyon tekniği hakkında daha fazla ayrıntı için training configuration kısmına bakın.
Çok ölçekli eğitim, YOLO26 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çekler ile mesafelerde daha iyi genelleme yapmasını sağlar. YOLO26'da eğitim yapılandırmasındaki scale parametresini ayarlayarak çok ölçekli eğitimi etkinleştirebilirsin. Örneğin, scale=0.5 0.5 ile 1.5 arasında bir yakınlaştırma faktörü örnekler, ardından imgsz değerine geri doldurur/kırpar. 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 training configuration sayfasına göz at.
YOLO26'da 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. YOLO26'da eğitim yapılandırmasında pretrained parametresini True olarak ayarlaman yeterlidir veya özel önceden eğitilmiş ağırlıklarının yolunu sağlayabilirsin. Transfer learning adı verilen bu yöntem, büyük veri setleri üzerinde eğitilmiş modellerin belirli uygulamana etkili bir şekilde uyarlanmasını sağlar. Önceden eğitilmiş ağırlıkların nasıl kullanılacağı ve bunların faydaları hakkında daha fazla bilgiyi training configuration guide içinde bulabilirsin.
Bir model eğitmek için önerilen dönem sayısı nedir ve bunu YOLO26'da nasıl ayarlarım?#
Epoch sayısı, model eğitimi sırasında eğitim veri setinden yapılan tam geçişleri ifade eder. Tipik bir başlangıç noktası 300 epoch'tur. Modelin erken aşamada aşırı öğrenme gösterirse sayıyı azaltabilirsin. Alternatif olarak, aşırı öğrenme gözlemlenmezse eğitimi 600, 1200 veya daha fazla epoch'a uzatabilirsin. Bunu YOLO26'da ayarlamak için eğitim betiğindeki epochs parametresini kullan. İdeal epoch sayısını belirleme konusunda ek tavsiye için number of epochs hakkındaki bu bölüme bak.