Connect with us

Yapay Zekâ

YOLOv9: Gerçek Zamanlı Nesne Algılamada Bir Advantaj

mm

Nesne algılama son yıllarda derin öğrenme algoritmaları gibi YOLO (You Only Look Once) sayesinde hızlı bir ilerleme gösterdi. En son sürüm, YOLOv9, önceki sürümlere göre doğruluk, verimlilik ve uygulanabilirlikte önemli iyileştirmeler getiriyor. Bu yazıda, YOLOv9’u gerçek zamanlı nesne algılamadaki yeni bir devlet standardı yapan yeniliklere derinlemesine bakacağız.

Nesne Algılamasının Kısa Bir Girişi

YOLOv9’da neyin yeni olduğunu öğrenmeden önce, nesne algılamasının nasıl çalıştığını kısaca gözden geçirelim. Nesne algılamasının amacı, bir görüntüdeki nesneleri, arabaları, insanları veya hayvanları tanımlamak ve konumlandırmaktır. Bu, otonom araçlar, gözetim sistemleri ve görüntü arama gibi uygulamalar için kritik bir yetenektir.

Algılayıcı, bir görüntü alır ve her biri ile ilgili bir sınıf etiketi olan algılanan nesnelerin etrafındaki sınırlayıcı kutuları çıkış olarak verir. MS COCO gibi popüler veri setleri, bu modelleri eğitmek ve değerlendirmek için binlerce etiketli görüntü sağlar.

Nesne algılamasında iki ana yaklaşım vardır:

  • İki aşamlı dedektörler gibi Faster R-CNN, önce bölge önerileri oluşturur, sonra her bölgenin sınırlarını sınıflandırır ve iyileştirir. Daha doğru olma eğilimindedir ancak daha yavaştır.
  • Tek aşamlı dedektörler gibi YOLO, modeli tek bir geçişte doğrudan görüntüye uygular. Bazı doğrulukları daha hızlı çıkarım süreleri için ticaret yapar.

YOLO, tek aşamlı yaklaşımın öncüsüdür. YOLOv9’da nasıl evrimleştiğine ve doğruluğu ve verimliliği nasıl iyileştirdiğine bakalım.

Önceki YOLO Sürümlerinin İncelenmesi

YOLO (You Only Look Once) model ailesi, 2016’da orijinal sürüm yayınlandığından beri hızlı nesne algılamada ön saflarda yer aldı. YOLO’nun birden fazla iterasyon üzerinden nasıl ilerlediğine dair bir bakış:

  • YOLOv1 tam görüntülerden doğrudan sınırlayıcı kutuları ve sınıf olasılıklarını tahmin etmek için birleşik bir model önerdi. Bu, önceki iki aşamlı modellere kıyasla çok hızlı yaptı.
  • YOLOv2 orijinali, daha iyi stabilite için toplu normalize kullanma, çeşitli ölçek ve en boy oranlarında ankraj kutularını algılamak için farklı boyutlarda nesneleri detect etmek ve diğer çeşitli optimizasyonlar ile geliştirdi.
  • YOLOv3 daha fazla katman ve bu katmanlar arasındaki kısayollar ile daha fazla özellik çıkaran yeni bir özellik çıkaran叫 Darknet-53’ü ekledi ve doğruluğu daha da iyileştirdi.
  • YOLOv4 diğer nesne dedektörleri ve segmentasyon modellerinden fikirleri birleştirdi ve doğruluğu daha da artırdı, ancak hala hızlı çıkarım korudu.
  • YOLOv5 YOLOv4’ü PyTorch’da yeniden yazdı ve yeni bir özellik çıkaran iskeleti CSPDarknet ile birlikte birkaç diğer geliştirmeyi ekledi.
  • YOLOv6 mimariyi ve eğitim sürecini optimize etmeye devam etti, performansını daha da artırmak için büyük dış veri setlerinde önceden eğitilmiş modelleri kullandı.

Özetle, önceki YOLO sürümleri, model mimarisindeki, eğitim tekniklerindeki ve önceden eğitimdeki iyileştirmeler sayesinde daha yüksek doğruluk elde etti. Ancak modeller büyüdükçe ve daha karmaşık hale geldikçe, hız ve verimlilikte bir düşüş yaşanmaya başladı.

Daha İyi Verimlilik İhtiyacı

Çok fazla uygulama, nesne algılamasının sınırlı hesaplama kaynaklarına sahip cihazlarda gerçek zamanlı olarak çalışmasını gerektirir. Modeller büyüdükçe ve daha hesaplama yoğun hale geldikçe, bunları dağıtmak pratik olmaktan çıkıyor.

Örneğin, bir otonom araba, yüksek kare hızlarında araç içindeki işlemciler kullanarak nesneleri algılamak zorundadır. Bir güvenlik kamerası, kendi gömülü donanımında video akışında nesne algılamasını çalıştırmalıdır. Telefonlar ve diğer tüketici cihazları çok sıkı güç ve termal kısıtlamalara sahiptir.

Son YOLO sürümleri, yüksek doğrulukla büyük sayıda parametre ve çarpma-ekleme işlemleri (FLOPs) elde ediyor. Ancak bu, hız, boyut ve güç verimliliği pahasına geliyor.

Örneğin, YOLOv5-L, tek bir 1280×1280 görüntü işlemede 100 milyar FLOPs’den fazla gerektirir. Bu, birçok gerçek zamanlı kullanım durumu için çok yavaştır. Her zaman daha büyük modeller trendi, ayrıca aşırı uyumu riskini artırır ve genelleştirmeyi daha zor hale getirir.

Bu nedenle, nesne algılamasının uygulanabilirliğini genişletmek için, verimliliği iyileştirmeye ihtiyacımız var – daha az parametre ve hesaplama ile daha iyi doğruluk elde etmek. YOLOv9’da bu zorluğu ele almak için kullanılan tekniklere bakalım.

YOLOv9 – Daha Az Kaynakla Daha İyi Doğruluk

YOLOv9’un arkasındaki araştırmacılar, gerçek zamanlı performansı daha geniş bir cihaz yelpazesi boyunca elde etmek için verimliliği iyileştirmeye odaklandı. İki ana yenilik tanıttılar:

  1. Parametreleri ve FLOPs’ı en aza indirirken doğruluğu en üst düzeye çıkaran yeni bir model mimarisi olan Genel Verimli Katman Birleştirme Ağı (GELAN).
  2. Küçük modeller için özellikle daha güvenilir öğrenme gradientleri sağlayan bir eğitim tekniği olan Programlanabilir Gradient Bilgisi (PGI).

Her iki ilerlemenin de verimliliği nasıl iyileştirdiğine bakalım.

GELAN ile Daha Verimli Mimarisi

Model mimarisi kendisi, çıkarım sırasında hız ve kaynak kullanımı arasında denge kurmak için kritiktir. Sinir ağı, girdi görüntülerinden ilgili özellikleri yakalamak için yeterli derinlik ve genişlik gerektirir. Ancak çok fazla katman veya filtre, yavaş ve şişkin modellere yol açar.

GELAN, mümkün olan en küçük mimariden en yüksek doğruluğu sıkmak için özel olarak tasarlandı.

GELAN, birlikte yığılmış iki ana yapı taşı kullanır:

  • Verimli Katman Birleştirme Blokları – Bu, çok ölçekli özellikleri verimli bir şekilde yakalamak için ağın birden fazla dalı boyunca dönüşümleri birleştirir.
  • Hesaplama Blokları – CSPNet blokları, katmanlar boyunca bilgiyi yaymaya yardımcı olur. Herhangi bir blok, hesaplamayla ilgili kısıtlamalara bağlı olarak değiştirilebilir.

Bu blokları dikkatli bir şekilde dengeleyerek ve birleştirerek, GELAN performans, parametre ve hız arasında bir tatlı nokta yakalar. Aynı modüler mimari, farklı model boyutları ve donanım boyunca ölçeklenebilir.

Deneyimler, GELAN’ın önceki YOLO mimarilerine kıyasla daha küçük modellere daha fazla performans sığdırdığını gösterdi. Örneğin, 7M parametreli GELAN-Küçük, 11M parametreli YOLOv7-Nano’yu aştı. Ve 20M parametreli GELAN-Orta, 35-40M parametreli YOLOv7 orta modelleriyle aynı performansı gösterdi.

Bu nedenle, GELAN, parametrelerin ve hesaplamaların azaltılmasıyla birlikte daha hızlı ve daha fazla kaynak kısıtlamalı cihazlarda çalışabilen modelleri çalıştırma olanağı sağlar. Sonraki olarak, PGI’nin nasıl daha iyi eğitim sağladığını göreceğiz.

PGI ile Daha İyi Eğitim

Model eğitimi, gerçek zamanlı nesne algılamayı mümkün kılan bir diğer önemli faktördür. YOLOv9 yazarları, küçük modellerin eğitilmesinde güvensiz gradient bilgileriyle ilgili sorunları tespit etti.

Gradyan, modelin ağırlıklarının eğitim sırasında nasıl güncellendiğini belirler. Gürültülü veya yanıltıcı gradyanlar, kötü birleşmeye yol açar. Bu sorun, daha küçük ağlar için daha belirgin hale gelir.

Derin denetimi teknikleri, ek yan dalları ve kayıpları tanıtlayarak, ağı daha iyi gradyan sinyali iletmeye yardımcı olur. Ancak bu, özellikle daha küçük ve hafif modeller için bozulmaya ve dalgalanmaya neden olabilir.

YOLOv9: Öğrenmek İstediğiniz Şeyi Öğrenmek için Programlanabilir Gradient Bilgisi

YOLOv9: Öğrenmek İstediğiniz Şeyi Öğrenmek için Programlanabilir Gradient Bilgisi https://arxiv.org/abs/2402.13616

Bu sınırlamayı aşmak için, YOLOv9 Programlanabilir Gradient Bilgisi (PGI) adlı bir teknik tanıtildi. PGI’nin iki ana bileşeni vardır:

  • Yardımcı tersinir dallar – Bu, girdiye geri dönebilen bağlantılar kullanarak RevCols gibi blokları sağlar ve temiz gradyanlar sağlar.
  • Çok seviyeli gradyan entegrasyonu – Bu, farklı dallardan gradyanların birleşmesini önler ve ana modele geri beslemeden önce tüm dallardan gradyanları birleştirir.

Daha güvenilir gradyanlar üreterek, PGI küçük modellerin daha etkili bir şekilde eğitilmesini sağlar:

Deneyimler, PGI’nin tüm model boyutlarındaki doğruluğu, özellikle küçük yapılandırmalarda artırdığını gösterdi. Örneğin, YOLOv9-Küçük için AP puanlarını 0.1-0.4% artırdı. Daha derin modeller için kazanımlar daha önemliydi, Örneğin YOLOv9-E için 55.6% mAP.

Bu nedenle, PGI, küçük ve büyük modellerin daha yüksek doğruluk seviyelerine ulaşabilmesini sağlar.

YOLOv9 Yeni Devlet Standardını Belirledi

GELAN’ın mimari ilerlemeleriyle PGI’nin eğitim iyileştirmelerinin birleşimi, YOLOv9’a withoutprecedent bir verimlilik ve performans sağlar:

  • YOLOv9, önceki YOLO sürümlerine kıyasla 10-15% daha az parametre ve 25% daha az hesaplamayla daha iyi doğruluk elde eder. Bu, tüm model boyutlarındaki hız ve yeteneklerde büyük iyileştirmeler sağlar.
  • YOLOv9, YOLO-MS ve RT-DETR gibi diğer gerçek zamanlı dedektörlerin parametre verimliliği ve FLOPs açısından vượtiyor. Belirli bir performans seviyesine ulaşmak için çok daha az kaynak gerektirir.
  • Küçük YOLOv9 modelleri, daha büyük önceden eğitilmiş modelleri gibi RT-DETR-X’i bile yener. 36% daha az parametre kullanarak, YOLOv9-E 55.6% AP elde eder ve daha verimli mimariden yararlanarak.

Bu nedenle, YOLOv9, kısıtlı kaynaklar içinde en yüksek performansı elde etmek için yeni bir devlet standardını belirler.

GELAN – Verimlilik için Optimized Mimarisi

YOLOv9, minimum parametre bütçesiyle en yüksek doğruluğu elde etmek için tasarlanmış yeni bir mimari olan Genel Verimli Katman Birleştirme Ağı (GELAN) tanıtıyor. Önceki YOLO modellerinin üzerine inşa edilmiş ancak çeşitli bileşenleri özellikle verimlilik için optimize edilmiştir.

https://arxiv.org/abs/2402.13616

YOLOv9: Öğrenmek İstediğiniz Şeyi Öğrenmek için Programlanabilir Gradient Bilgisi
https://arxiv.org/abs/2402.13616

CSPNet ve ELAN Hakkında Arka Plan

Son YOLO sürümlerinden bu yana, YOLOv5’ten itibaren, Cross-Stage Partial Network (CSPNet) tabanlı iskeletler, geliştirilmiş verimlilik için kullanıldı. CSPNet, paralel ağ dalları boyunca özellik haritalarını birleştirmeye izin verirken, minimal ek yük ekler:

Bu, katmanları sırayla yığmaktan daha verimlidir, bu genellikle fazla hesaplama ve aşırı parametreleme ile sonuçlanır.

YOLOv7, CSPNet’i, blok yapısını basitleştiren Efficient Layer Aggregation Network (ELAN) ile güncelledi:

ELAN, katmanlar arasındaki kısayol bağlantılarını, çıkışta bir birleştirme düğümü lehine kaldırdı. Bu, parametre ve FLOPs verimliliğini daha da iyileştirdi.

ELAN’ı Esnek Verimlilik için Genelleştirme

YOLOv9’da kullanılan GELAN, ELAN’ı daha da genelleştirdi. GELAN, esneklik ve verimliliği artırmak için kritik değişiklikler yaptı:

  • Değiştirilebilir hesaplama blokları – Önceki ELAN sabit konvolüsyonel katmanlara sahipti. GELAN, herhangi bir hesaplama bloğunun (ResNets veya CSPNet gibi) değiştirilmesine izin verir, bu da daha fazla mimari seçeneği sağlar.
  • Derinlemesine parametreleme – Ana dal için ayrı blok derinlikleri ve birleştirici dal, kaynak kullanımını iyileştirir.
  • Farklı yapılandırmalarda稳 performans – GELAN, farklı blok türleri ve derinlikleriyle birlikte tutarlı bir şekilde doğruluk sağlar, bu da esnek ölçeklenebilirliği sağlar.

Bu değişiklikler, GELAN’ı güçlü ancak yapılandırılabilir bir iskelete dönüştürür:

Deneyimler, GELAN modellerinin tutarlı olarak önceki YOLO mimarilerine kıyasla parametre başına daha yüksek doğruluk elde ettiğini gösterdi:

  • 7M parametreli GELAN-Küçük, 11M parametreli YOLOv7-Nano’yu geçti
  • 20M parametreli GELAN-Orta, daha ağır YOLOv7 orta modelleriyle eşleşti

Bu nedenle, GELAN, YOLO’yu farklı verimlilik hedefleri boyunca ölçeklemek için optimize edilmiş bir iskelet sağlar. Sonraki olarak, PGI’nin nasıl daha iyi eğitim sağladığını göreceğiz.

PGI – Tüm Model Büyüklükleri için Geliştirilmiş Eğitim

Mimari seçimler, çıkarım zamanında hız ve kaynak kullanımı arasında denge kurarken, eğitim süreci de model kaynak kullanımını etkiler. YOLOv9, farklı model boyutları ve karmaşıklıkları için eğitim sürecini iyileştirmek amacıyla Programlanabilir Gradient Bilgisi (PGI) adlı yeni bir teknik kullanır.

Güvensiz Gradyanların Sorunu

Eğitim sırasında, bir loss fonksiyonu model çıkışlarını gerçek etiketlerle karşılaştırır ve model parametrelerini güncellemek için bir hata gradyanı hesaplar. Gürültülü veya yanıltıcı gradyanlar, kötü birleşmeye ve verimlilik kaybına yol açar. Bu sorun, daha derin ağlarda daha belirgin hale gelir:

Bilgi darboğazı, derin katmanlardan gradyanların bozulmasına veya sıkıştırılmasına neden olur.

Derin denetimi, ek yan dalları ve kayıpları tanıtlayarak, ağı daha iyi gradyan sinyali iletmeye yardımcı olur. Ancak bu, özellikle daha küçük ve hafif modeller için bozulmaya ve dalgalanmaya neden olabilir.

Bu nedenle, tüm model boyutları için, özellikle küçük olanlar için, güvenilir gradyanlar sağlamak için bir yol bulmalıyız.

Programlanabilir Gradient Bilgisi (PGI)

Güvensiz gradyanları ele almak için, YOLOv9 Programlanabilir Gradient Bilgisi (PGI) adlı bir teknik tanıtildi. PGI, gradyan kalitesini iyileştirmek için iki ana bileşene sahiptir:

1. Yardımcı tersinir dallar

Ek dallar, girdiye geri dönebilen bağlantılar kullanarak RevCols gibi blokları sağlar ve temiz gradyanlar sağlar.

2. Çok seviyeli gradyan entegrasyonu

Bir birleştirme bloğu, ana modele geri beslemeden önce tüm dallardan gradyanları birleştirir. Bu, dallar arasında dalgalanmayı önler.

Daha güvenilir gradyanlar üreterek, PGI eğitim birleşmesini ve verimliliği tüm model boyutları boyunca iyileştirir:

  • Hafif modeller daha önce kullanamadıkları derin denetimden yararlanabilir.
  • Daha büyük modeller daha temiz gradyanlar elde eder ve daha iyi genelleme sağlar.

Deneyimler, PGI’nin küçük ve büyük YOLOv9 yapılandırmalarında baseline GELAN’a kıyasla doğruluğu artırdığını gösterdi:

  • +0.1-0.4% AP için YOLOv9-Küçük
  • +0.5-0.6% AP için daha büyük YOLOv9 modelleri

Bu nedenle, PGI’nin programlanabilir gradyanları, büyük ve küçük modellerin daha verimli bir şekilde eğitilmesini sağlar.

YOLOv9 Yeni Devlet Standardını Belirledi

GELAN’ın mimari ilerlemeleriyle PGI’nin eğitim iyileştirmelerinin birleşimi, YOLOv9’a gerçek zamanlı nesne algılamada yeni bir devlet standardı sağlar.

COCO veri setinde yapılan deneyimler, YOLOv9’un önceki YOLO sürümlerini ve diğer gerçek zamanlı dedektörleri, YOLO-MS ve RT-DETR’i, doğruluk ve verimlilik açısından aştığını gösterdi:

Bazı önemli vurgular:

  • YOLOv9-Küçük, YOLO-MS-Küçük’ten %10 daha az parametre ve hesaplamayla daha iyi performans gösterir.
  • YOLOv9-Orta, daha ağır YOLOv7 modelleriyle aynı performansı, weniger kaynak kullanarak sağlar.
  • YOLOv9-Büyük, YOLOv8-X’ten %15 daha az parametre ve %25 daha az FLOPs ile daha iyi performans gösterir.

Şaşırtıcı bir şekilde, küçük YOLOv9 modelleri, daha büyük önceden eğitilmiş modelleri gibi RT-DETR-X’i, 4 kat daha az parametre kullanarak geçer. YOLOv9-E, RT-DETR-X’ten daha iyi doğruluk elde eder.

Bu sonuçlar, YOLOv9’un üstün verimliliğini gösterir. İyileştirmeler, daha yüksek doğrulukta nesne algılamasını daha fazla gerçek dünya kullanım durumunda sağlar.

YOLOv9 İyileştirmeleri Hakkında Ana Noktalar

Hızlıca, YOLOv9’un yeni devlet standardı performansını sağlayan bazı ana iyileştirmeleri ve yenilikleri özetleyelim:

  • GELAN optimize mimarisi – Parametre verimliliğini, esnek birleştirme blokları aracılığıyla iyileştirir. Farklı hedefler için modelleri ölçeklemeye izin verir.
  • Programlanabilir gradient bilgisi – Tersinir bağlantılar ve birleştirme yoluyla daha güvenilir gradyanlar sağlar. Tüm model boyutlarındaki eğitimi iyileştirir.
  • Daha az kaynakla daha iyi doğruluk – YOLOv8’e kıyasla %10-15 daha az parametre ve %25 daha az hesaplamayla daha iyi doğruluk elde eder. Daha verimli çıkarımı sağlar.
  • Tüm model boyutlarında üstün sonuçlar – Hafif, orta ve büyük model yapılandırmalarında yeni bir devlet standardını belirler. Ağır önceden eğitilmiş modelleri geçer.
  • Genişletilmiş uygulanabilirlik – Daha yüksek verimlilik, nesne algılamasının daha fazla gerçek zamanlı kullanım durumunda kullanılabilmesini sağlar.

Doğruluk, verimlilik ve uygulanabilirliği doğrudan ele alarak, YOLOv9 nesne algılamasını çeşitlendirilmiş gerçek dünya ihtiyaçlarını karşılamak için ilerletir. İyileştirmeler, bu kritik bilgisayar görme yeteneğinin gelecekteki yenilikleri için güçlü bir temel sağlar.

Son beş yıldır Makine Öğrenimi ve Derin Öğrenme dünyasına kendimi daldırmış bulunuyorum. Tutkum ve uzmanlığım, özellikle AI/ML odaklı 50'den fazla çeşitli yazılım mühendisliği projesine katkıda bulunmama yol açtı. Süregelen meraklılığım ayrıca beni Doğal Dil İşleme'ye doğru çekti, bu alanda daha fazla keşfetmeye hevesliyim.