Otonom İHA Görüntü İşleme ve Görev Yazılımı

Problem
RoboNation SUAS, insansız hava aracının 20-40 metre irtifadan otonom uçarak sahadaki hedefleri tespit etmesini, sınıflandırmasını ve göreve göre aksiyon almasını istiyor. Zorluk şurada: bu irtifada hedefler görüntüde yalnızca 80-120 piksel; üstelik tespit, sınırlı güç bütçesine sahip gömülü bir bilgisayarda gerçek zamana yakın çalışmak zorunda.
Benim sorumluluğum
- Hedef tespiti/sınıflandırma, otonom navigasyon ve görev planlama yazılım mimarisini kurmak
- 5 kişilik yazılım ekibini yönetmek
- Veri hazırlama hattını ve eğitim parametrelerini belirlemek
- Teknik Tasarım Raporu (TDR) ve şartnameye uygun takım web sitesi
20-40 m irtifadan hedef tespiti


1 · Veri hazırlama
Ham 4K drone görüntülerini YOLO'nun sabit girdi boyutuna indirmek için %40 örtüşmeli 1280×1280 karolara bölen bir hat tasarladım. Örtüşme kritik: hedef bir karo sınırına denk geldiğinde en az bir karoda tam görünmesini garantiliyor. Train/validation ayrımını görüntü bazında yaptım: aynı sahnenin karoları ikiye bölünürse model sızıntıyla öğrenir ve validation metriği yalan söyler.
2 · Sınıf dengeleme
Ham veride sınıflar dengesizdi. Çevrimdışı augmentation ile sınıf bazlı çarpan uyguladım: az örnekli sınıfa 8×, çok örnekliye 3×. Böylece ~2.100 ham görüntüden ~15.000 görüntülük, 1:1,2 oranlı dengeli bir eğitim seti çıktı. Renk augmentasyonunu bilinçli olarak bu adımda değil eğitimde bıraktım: iki katmanda birden uygulanırsa çift augmentation olur.
Veri setinden gömülü çıkarıma


3 · Eğitim
YOLOv11m üzerinde transfer öğrenme. Model 33. epoch'ta yakınsadı, erken durdurma 48'de devreye girdi: yani veri tavanına ulaşıldı, daha fazla epoch değil daha çeşitli veri gerekiyor. Bu teşhisi çıkardıktan sonra 13 maddelik bir iyileştirme planı hazırladım: çözünürlük artırımı, farklı irtifa ve ışık koşullarından veri toplama, kısmi örtülme augmentasyonu.
4 · Gömülü dağıtım
Model NVIDIA Jetson üzerinde TensorRT FP16 ile gerçek zamanlı çalışacak şekilde konumlandırıldı. Burada eğitim ve export çözünürlüğünün eşitlenmesi gerekiyor; farklı bırakılırsa model sahada beklenmedik davranıyor.


Aviyonik ve hesaplama mimarisi

Görüntü işleme bilgisayarı

Uçuş kontrolcüsü

Gimballi kamera

İtki sistemi


Yazılım mimarisi kararı
Görüntü işleme ile uçuş kontrolünü ayrı işlemcilere böldük: uçuş kontrolcüsü yalnızca uçuşa odaklanıyor, companion computer görüntü işlemeyi üstleniyor, ikisi arasındaki iletişim ROS 2 üzerinden yürüyor. Bu ayrım, görüntü işleme yükü arttığında uçuş güvenliğinin etkilenmemesini sağlıyor: otonom sistemlerde en kritik tasarım kararlarından biri.



Uçuş testleri ve proje dokümantasyonu



Ek çıktılar
Yazılım işinin yanında takımın Teknik Tasarım Raporu'nu ve yarışma şartnamesinin web sitesine dair gereksinimlerini karşılayan takım sitesini hazırladım. Site, tasarımı Framer'da kurulduktan sonra kendi koduna taşındı; 51 sayfa, 28 teknik blog yazısı ve beş teknik belge içeriyor.

def karola(goruntu, boy=1280, ortusme=0.2):
"""4K kareyi sabit YOLO girdisine, ortusmeli karolarla indir.
Ortusme olmazsa karo sinirina denk gelen hedefler ikiye bolunur
ve iki yarim dusuk guvenle kaybolur."""
adim = int(boy * (1 - ortusme))
h, w = goruntu.shape[:2]
for y in range(0, max(h - boy, 0) + 1, adim):
for x in range(0, max(w - boy, 0) + 1, adim):
evet = goruntu[y:y + boy, x:x + boy]
yield (x, y), evet # ofset, geri projeksiyon icin sart