FIG. 01
KAYIT KÜNYESİ
Kategori
Yazılım
TARİH
Takımın ilk denemesi klasikti: yolo11n.pt'yi indir, gimbal kamerasının RTSP akışına bağla, İHA'yı 20 metreye çıkar. Sonuç, yerdeki hedeflerde sıfır tespit oldu. Aynı model, masaüstünde bir web görselindeki insanı, arabayı ya da çantayı bulmakta hiç zorlanmıyordu.
Burada gizemli bir şey yok. COCO gibi genel amaçlı veri setleri, nesnenin karenin epey büyük bir bölümünü doldurduğu göz hizası fotoğraflardan derlenir. 20 metreden dik aşağı bakan bir kamerada ise aynı hedef birkaç düzine piksele iner ve silueti tamamen değişir. Model bu dağılımı hiç görmemiştir, o kadar.
Bu yazıda SUAS 2026 için kurduğumuz eğitim hattını uçtan uca anlatıyoruz: veriyi nasıl topladık, data.yaml'i nasıl yazdık, model boyutu ve imgsz seçimimizi ne belirledi, results.csv'den ne okuduk. Her komutu ve parametre adını resmî Ultralytics dokümantasyonunun 8.4.105 sürümüne göre doğruladık (24 Temmuz 2026 itibarıyla, Python 3.8-3.13). YOLO11 ailesi bu sürümde hâlâ aktif olarak destekleniyor ve aşağıdaki API, daha yeni YOLO26 modellerinde de birebir aynı.
Modelin tavanını veriniz belirler
Eğitim komutunu yazmadan önce harcadığınız her saat kendini geri öder. İlk veri setimizin yalnızca %11 kadarı gerçek havadan çekimdi; geri kalanı internetten toplanmış yer seviyesi görüntülerdi. İki sınıf arasındaki örnek oranı da 7:1'e kadar açılmıştı. O sürümün ürettiği doğrulama skoru iyi görünüyordu ama sahada bir karşılığı yoktu.
Kritik nokta şu: doğrulama setine web görselleri koyarsanız model kolay örneklerden puan toplar ve gerçek uçuş koşullarını hiçbir zaman ölçemezsiniz. Doğrulama setini yalnızca havadan çekimlerden yeniden kurduğumuzda sayılar dürüstleşti ve bu sette mAP50 (0.50 IoU, yani Intersection over Union — kesişimin birleşime oranı — eşiğinde hesaplanan mean Average Precision) 0.950'ye ulaştı.
Veri kaynağı | Güçlü yanı | Zayıf yanı | Ne zaman kullanılır |
|---|---|---|---|
Web görselleri | Hızlı, bol, ücretsiz | Yanlış bakış açısı, yanlış ölçek | Bir sınıfın genel görünümünü öğretmek için, yalnızca eğitim setinde |
Kendi uçuş kayıtlarımız | Tam olarak doğru dağılım | Toplaması pahalı, havaya bağlı | Doğrulama setinin tamamı, artı eğitimin büyük bölümü |
Simülasyon kareleri (Gazebo + SITL) | Sınırsız üretim, etiketler bedava geliyor | Doku ve aydınlatma gerçekçi değil | Nadir senaryoları ve arka plan çeşitliliğini takviye etmek |
Pratik kural: her yeni veri turunda önce doğrulama setini, sonra eğitim setini büyütün.
Klasör düzeni ve data.yaml
Ultralytics, etiket dosyalarını görüntü yolundaki images dizinini labels ile değiştirerek bulur. Yani klasör adları tam olarak şöyle olmak zorunda:
Her etiket dosyası satır başına bir nesne tutar: sınıf indeksi, ardından normalize edilmiş (0-1 aralığına ölçeklenmiş) merkez-x, merkez-y, genişlik ve yükseklik.
Kullandığımız data.yaml dosyası da şöyle görünüyor:
Etiket dosyalarındaki sınıf numaraları ile names içindeki indeksler birebir eşleşmek zorunda. Bu eşlemeyi bozmak, bir modelin sessiz sedasız yanlış şeyi öğrenmesinin en yaygın nedenidir.
Model boyutu: n, s, m mi, l mi?
Aşağıdaki sayılar Ultralytics'in resmî YOLO11 tablosundan geliyor; COCO doğrulama setinde imgsz=640 ile ölçülmüş. Hız değerleri TensorRT10 ile bir NVIDIA T4 üzerinde alındı. Kendi companion computer'ınızda (uçuşta görüntü işlemeyi koşturan kart) süreler farklı çıkacaktır; o sütuna yalnızca göreli bir karşılaştırma gözüyle bakın.
Model | mAP50-95 | T4 TensorRT10 (ms) | Parametre (M) | FLOPs (B) | Ne zaman |
|---|---|---|---|---|---|
YOLO11n | 39.5 | 1.5 | 2.6 | 6.5 | Zayıf donanım, yüksek FPS şartsa |
YOLO11s | 47.0 | 2.5 | 9.4 | 21.5 | Hız/doğruluk dengesi, ilk prototip |
YOLO11m | 51.5 | 4.7 | 20.1 | 68.0 | Jetson sınıfı kart artı küçük nesneler |
YOLO11l | 53.4 | 6.2 | 25.3 | 86.9 | Gerçek zamanlı değil, sonradan işleme |
Jetson Orin NX 16GB üzerinde YOLO11m'de karar kıldık. m'den l'ye çıkmak COCO'da kabaca 2 mAP puanı kazandırıyor ama çıkarım süresini gözle görülür biçimde artırıyor; bizim uçuş bütçemizde bu takas kendini ödetmedi. Kendi kartımızda tam kare 640 çıkarımda 15-20 FPS alıyoruz.
imgsz seçimi: küçük nesnelerin can simidi
imgsz varsayılan olarak 640'tır. Havadan görüntüde her şeyi belirleyen parametre budur. Hedef 1080p bir karede 25 piksel genişliğindeyse, 640'a küçültmek onu kabaca 15 piksele indirir; modelin en ince öznitelik haritası bile onu yakalamakta zorlanır.
Biz imgsz=1280 ile eğitiyoruz. Bunun bir bedeli var: aynı batch boyutunda hem GPU belleği hem epoch süresi gözle görülür biçimde tırmanıyor, çoğu zaman batch'i düşürmek zorunda kalıyorsunuz. Uçuşta tam kareyi 640'ta işliyor, şüpheli bölgeler için kareyi SAHI (dilimli çıkarım) ile birbiriyle örtüşen parçalara bölüyoruz. SAHI'nin slice_height, slice_width, overlap_height_ratio ve overlap_width_ratio parametreleri parçaların ne kadar örtüşeceğini belirler; örtüşmeyi sıfırda bırakmayın, yoksa dilim sınırında ikiye bölünen nesneleri kaybedersiniz.
Çıkarım tarafında imgsz değerini her zaman açıkça belirtin. Eğitimdeki değerle çıkarımdaki değer sessizce ayrışırsa, doğrulamada gördüğünüz skor sahada gördüğünüz davranışla örtüşmez.
Temel eğitim komutu
CLI'dan:
Aynı iş Python API'siyle:
Parametre | Varsayılan | Bizim değerimiz | Gerekçe |
|---|---|---|---|
| 100 | 300 | Ultralytics başlangıç önerisi olarak 300 veriyor; overfitting (aşırı öğrenme) yaşamıyorsanız 600'ün ötesine de çıkabilirsiniz |
| 100 | 50 | Varsayılan değer, 100 epoch'luk bir koşuda erken durdurmayı fiilen devre dışı bırakıyor |
| 16 | 8 |
|
| 640 | 1280 | Küçük hedefler |
|
|
| Bunu elle ayarlamaktansa önce veriyi düzeltmek daha çok kazandırıyor |
| 1.0 | 0.1 (deneme koşularında) | Hattın çalıştığını 10 dakikada doğrulamak için |
Sonuçları okumak
Eğitim bittiğinde çıktılar runs/detect/train/ altına yazılır: weights/best.pt ve weights/last.pt, results.csv, results.png, BoxPR_curve.png, BoxF1_curve.png, confusion_matrix.png, artı val_batch*_labels.jpg / val_batch*_pred.jpg karşılaştırma kareleri.
results.csv dosyasının sütunları şunlar: epoch, time, train/box_loss, train/cls_loss, train/dfl_loss, metrics/precision(B), metrics/recall(B), metrics/mAP50(B), metrics/mAP50-95(B), val/box_loss, val/cls_loss, val/dfl_loss, lr/pg0, lr/pg1, lr/pg2.
Biz üç sinyale bakıyoruz:
val/box_lossdüşüp sonra yeniden tırmanmaya başlıyorsa overfitting başlamış demektir;best.ptzaten o dönüm noktasından alınır.Yüksek precision ile düşük recall, modelin temkinli davranıp hedefleri kaçırdığı anlamına gelir; çaresi daha fazla veri çeşitliliği ya da daha yüksek bir
imgsz.Tersi, yani yüksek recall ile düşük precision, modelin yanlış pozitif ürettiğini gösterir; çalışma noktasını PR eğrisinden seçip uçuş için
confeşiğini yükseltin. Bizim uçuş değerimiz:conf=0.25.
Karıştırılmaması gereken bir nokta: mAP, güven eşiğinden bağımsız bir metriktir. Uçuşta kullandığınız conf değeri ayrı bir mühendislik kararıdır ve mAP'i değiştirmez.
Sık düşülen tuzaklar
Web görsellerini doğrulama setinde bırakmak. Var olan en pahalı hata bu. Skoru şişirir, sahada size hiçbir şey kazandırmaz.
train/val sızıntısı. Aynı uçuştan gelen ardışık kareleri iki sete dağıtırsanız, model esasen aynı görüntüyü ezberler. Kareye göre değil, uçuşa göre bölün.
namesile etiket indekslerinin birbirinden kayması. Etiketleme aracınızda sınıf sırası değişirse tüm veri seti sessizce bozulur. Her dışa aktarımdan sonra rastgele 10 etiketi elle kontrol edin.Körü körüne
batch=-1'e güvenmek. AutoBatch, GPU belleğinin yaklaşık %60'ını hedefler; kartı başka bir süreç paylaşıyorsa eğitimin ortasında bellek yetmeyebilir.Varsayılan
patience=100ile 100 epoch eğitmek. Erken durdurma hiç devreye girmez, boşuna zaman yakarsınız.Ölçek uyuşmazlığı. 640'ta eğitip 1280'de çıkarım koşturmak (ya da tersi) tespit sayınızı hiç beklemediğiniz biçimde değiştirir.
Pratik özet
Doğrulama setini yalnızca gerçek uçuş kayıtlarından kurun ve her şeyi ona göre ölçün.
imgsz'yi hedefin piksel boyutuna göre seçin. Havadan tespitte 640 çoğu zaman yetmez.Model boyutunu COCO tablosuna değil, companion computer'ınızdaki gerçek FPS'e göre seçin.
İlk turu
fraction=0.1ve az sayıda epoch ile koşup hattın uçtan uca çalıştığını doğrulayın, sonra tam eğitime geçin.Her koşuda
results.csvdosyasını arşivleyin; iki eğitim koşusunu karşılaştıramıyorsanız, neyin işe yaradığını asla bilemezsiniz.
