YOLOX ve YOLOv10: Çapasız ve NMS'siz Gerçek Zamanlı Nesne Algılamanın Karşılaştırılması
Gerçek zamanlı bilgisayarlı görü modellerinin evrimi, önemli mimari sıçramalarla karakterize edilmiştir. Bu yolculuktaki iki kritik dönüm noktası YOLOX ve YOLOv10'dur. 2021 yılında piyasaya sürülen YOLOX, oldukça etkili bir çapasız (anchor-free) tasarım sunarak akademik araştırmalar ile endüstriyel uygulama arasındaki boşluğu başarıyla doldurdu. Üç yıl sonra YOLOv10, işlem sonrası aşamada NMS (Non-Maximum Suppression) ihtiyacını ortadan kaldırarak verimlilik ve hız sınırlarını zorladı ve bu alanda devrim yarattı.
Bu kapsamlı teknik karşılaştırma, her iki modelin mimarilerini, performans metriklerini ve ideal kullanım durumlarını inceleyerek bir sonraki nesne algılama projen için doğru aracı seçmene yardımcı olacak içgörüler sağlar.
Model Kökenleri ve Meta Verileri
Bu modellerin kökenlerini anlamak, mimari seçimleri ve hedeflenen dağıtım ortamları için bir bağlam sunar.
YOLOX Detayları
Yazarlar: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li ve Jian Sun
Organizasyon: Megvii
Tarih: 2021-07-18
Arxiv: https://arxiv.org/abs/2107.08430
GitHub: https://github.com/Megvii-BaseDetection/YOLOX
Dokümanlar: https://yolox.readthedocs.io/en/latest/
YOLOX hakkında daha fazla bilgi edin
YOLOv10 Detayları
Yazarlar: Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han ve Guiguang Ding
Organizasyon: Tsinghua University
Tarih: 2024-05-23
Arxiv: https://arxiv.org/abs/2405.14458
GitHub: https://github.com/THU-MIG/yolov10
Dokümanlar: https://docs.ultralytics.com/models/yolov10/
YOLOv10 hakkında daha fazla bilgi edinin
Mimari Yenilikler
YOLOX ve YOLOv10 arasındaki temel farklar, sınırlayıcı kutu (bounding box) tahminlerini ve işlem sonrası (post-processing) süreçlerini nasıl yönettiklerinde yatar.
YOLOX: Çapasız Tasarımın Öncüsü
YOLOX, YOLO ailesini çapasız bir mimariye taşıyarak büyük yankı uyandırdı. Önceden tanımlanmış çapa kutularına (anchor boxes) güvenmek yerine bir nesnenin merkezini tahmin ederek, YOLOX tasarım parametrelerinin sayısını ve özel veri setleri için gereken sezgisel ayarlamaları önemli ölçüde azalttı. Ayrıca, sınıflandırma ve regresyon görevlerini ayrı yollara ayıran ayrıştırılmış bir başlık (decoupled head) tanıttı. Bu yaklaşım, bir nesnenin ne olduğunun tanımlanması ile nerede olduğunun belirlenmesi arasındaki çatışmayı çözerek yakınsama hızında ve hassasiyette gözle görülür bir artış sağladı.
YOLOv10: NMS'siz Devrim
YOLOX algılama başlığını basitleştirse de, gereksiz sınırlayıcı kutu tahminlerini filtrelemek için hala NMS'e güveniyordu. YOLOv10 bu temel darboğazı ele aldı. Eğitim sırasında tutarlı ikili atamalar kullanarak, YOLOv10 yerel uçtan uca (end-to-end) algılamaya ulaşır. Eğitim esnasında zengin denetim sinyalleri sağlamak için bire-çok (one-to-many) bir başlık kullanırken, çıkarım (inference) sırasında nihai tahminleri doğrudan çıktı vermek için bire-bir (one-to-one) bir başlık kullanır. Bu bütüncül verimlilik-doğruluk odaklı tasarım, NMS'i tamamen ortadan kaldırarak gömülü çipler üzerindeki çıkarım gecikmesini önemli ölçüde azaltır.
NMS (Non-Maximum Suppression), NPU'lar (Neural Processing Units) üzerinde hızlandırılması genellikle karmaşık bir işlemdir. YOLOv10, bunu kaldırarak tüm model grafiğinin özelleşmiş donanımlar üzerinde sorunsuz bir şekilde çalışmasını sağlar ve OpenVINO ile TensorRT gibi optimizasyon çerçeveleriyle uyumluluğu önemli ölçüde artırır.
Performans Metrikleri ve Karşılaştırma
Üretim için modelleri değerlendirirken, doğruluk ile hesaplama yükünü dengelemek çok önemlidir. Aşağıdaki tablo, YOLOX ve YOLOv10'un çeşitli ölçekleri arasındaki ödünleşimleri göstermektedir.
| Model | boyut (piksel) | mAPval 50-95 | Hız CPU ONNX (ms) | Hız T4 TensorRT10 (ms) | parametre (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
Verileri Analiz Etmek
Metrikler, YOLOv10'un nesilsel sıçramasını açıkça ortaya koymaktadır. Örneğin, YOLOv10-S, YOLOX-m'in 46.9'luk değerine karşılık 46.7% mAP değerine ulaşır, ancak bunu parametrelerin üçte birinden daha azını (7.2M'ye karşılık 25.3M) ve önemli ölçüde daha az FLOP kullanarak yapar. Dahası, en üst seviye YOLOv10-X modeli, mAP'yi 54.4%'e çıkararak, eski YOLOX-x mimarisinden daha hızlı kalırken zorlu doğruluk görevleri için oldukça rekabetçi bir hale gelir.
Ultralytics Ekosistem Avantajı
YOLOX sağlam bir açık kaynak araştırma uygulaması olarak kalsa da, YOLOv10'a geçmek, Ultralytics tarafından sağlanan iyi bakımlı ekosisteme anında erişim sağlar. Ultralytics destekli bir model seçmek, basit bir API ve kapsamlı dokümantasyon ile karakterize edilen modern bir kullanıcı deneyimi sağlar.
Geliştiriciler çerçevenin bellek gereksinimlerinden büyük ölçüde yararlanır; Ultralytics modellerini eğitmek genellikle RT-DETR gibi ağır Transformer tabanlı alternatiflerden çok daha az CUDA belleği tüketir. Bu verimli eğitim alanı, tüketici sınıfı donanımlarda daha büyük yığın boyutlarına (batch size) izin vererek veri toplama ile model dağıtımı arasındaki süreyi hızlandırır. Ayrıca çerçeve, kullanıcıların kod değişikliklerini en aza indirerek nesne algılama, örnek bölümleme ve poz tahmini arasında sorunsuz bir şekilde geçiş yapmalarına olanak tanıyan benzersiz bir esneklik sunar.
Eğitim ve Çıkarım Örneği
Birleşik API, fikirleri doğrulamayı inanılmaz derecede hızlandırır. Aşağıdaki kod parçacığı, PyTorch altyapısını kullanarak ne kadar kolay bir şekilde YOLOv10 modeli eğitebileceğini ve dağıtabileceğini gösterir:
from ultralytics import YOLO
# Load a pre-trained YOLOv10 nano model
model = YOLO("yolov10n.pt")
# Train the model on the COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on a sample image
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# Export the model for edge deployment
model.export(format="engine", half=True)Yerleşik dışa aktarma rutinlerinden yararlanarak, modelleri TensorRT veya ONNX gibi formatlara dönüştürmek, karmaşık derleme engellerini tamamen atlayarak sadece tek bir satır kod gerektirir.
İdeal Kullanım Durumları ve Dağıtım Senaryoları
Bu mimariler arasında seçim yapmak, büyük ölçüde donanım kısıtlamalarına ve özel alan gereksinimlerine bağlıdır.
Gerçek Zamanlı Video Analitiği
Otonom sürüş veya gerçek zamanlı trafik izleme gibi ultra düşük gecikme gerektiren uygulamalar için YOLOv10 üstün bir seçimdir. Uçtan uca NMS'siz tasarımı, değişken işlem sonrası gecikmelerin tolere edilemediği güvenlik sistemleri için kritik olan deterministik yürütme sürelerini garanti eder. Modeller, NVIDIA Jetson serisi gibi cihazlarda yüksek kare hızlarına kolayca ulaşır.
Akademik Temeller ve Uç Mikrodenetleyiciler
YOLOX, araştırmacıların etiket atama stratejilerini denemek için temiz, ayrıştırılmış bir başlık temeli istedikleri akademik ortamlarda hala değerini korumaktadır. Ayrıca, olağanüstü küçük YOLOX-Nano (1 milyondan az parametre), donanım standart evrişim işlemlerini desteklediği sürece, belleğin kilobaytlarla ölçüldüğü son derece kısıtlı uç mikrodenetleyicilere sığdırılabilir.
Nihai Standart: Ultralytics YOLO26
YOLOv10, NMS'i kaldırarak büyük bir sıçrama yapsa da, bilgisayarlı görü alanı hızla ilerlemektedir. Günümüzde sınıfının en iyisi performansı uygulamayı hedefleyen geliştiriciler için YOLO26 keşfetmeni şiddetle tavsiye ederiz.
Görüntüleme yapay zekasında en son standart olarak yayınlanan YOLO26, öncüllerinin temel fikirlerini alır ve onları güçlendirir. Algılama, bölümleme, poz ve yönelimli sınırlayıcı kutuları (OBB) yerel olarak destekleyerek en üstün performans dengesini sunar.
İşte YOLO26'nın modern bilgisayarlı görü hatları için önerilen seçenek olmasının nedenleri:
- Uçtan Uca NMS'siz Tasarım: YOLOv10'un çığır açan yenilikleri üzerine inşa edilen YOLO26, yerel olarak uçtan uca çalışır ve işlem sonrası darboğazları olmadan daha hızlı, deterministik çıkarım sürelerini garanti eder.
- 43%'e Kadar Daha Hızlı CPU Çıkarımı: Uç bilişim için özel olarak optimize edilmiştir ve mobil işlemciler ile ayrık GPU'lardan yoksun cihazlarda olağanüstü performans sağlar.
- MuSGD Optimize Edici: Büyük Dil Modeli eğitiminden (özellikle Moonshot AI'nın Kimi K2'sinden) esinlenen YOLO26, inanılmaz derecede kararlı eğitim ve hızlı yakınsama için SGD ve Muon'un bir hibritini kullanır.
- ProgLoss + STAL: Bu gelişmiş kayıp fonksiyonları, hava görüntüleri ve drone navigasyonu gibi zorlu alanlar için kritik olan küçük nesne tanımada kayda değer iyileştirmeler sağlar.
- DFL Kaldırma: Distribution Focal Loss'u kaldırarak, YOLO26, uç ve düşük güç tüketen cihazlara sorunsuz bir aktarım için model grafiğini basitleştirir.
- Göreve Özel İyileştirmeler: Poz tahmini için Residual Log-Likelihood Estimation (RLE) veya OBB için özel açı kaybı kullanıyor olsan da, YOLO26 her büyük görü görevi için ince ayar yapılmıştır.
Hatlarını mevcut en verimli eğitim ve dağıtım araçlarıyla yükseltmeye hazır geliştiriciler için Ultralytics Platform uygulamasına geçmek ve YOLO26'dan yararlanmak, yapay zekanın en ileri noktasında kalmanı garanti eder. Eski ama kararlı mimarilerle ilgilenen kullanıcılar, kapsamlı topluluk desteği ve kanıtlanmış sağlamlık için YOLO11 veya YOLOv8 modellerini de inceleyebilirler.