Drone Görüntüleri Üzerinden Yer Nesnelerinin Tanımlanması

Deniz Çelik
Empa Electronics Blog
10 min readMay 23, 2023

Çevre algılama, otonom sistemlerin gerçek hayat uygulamalarına entegrasyonundaki risklerin engellenmesi açısından bir gereksinimdir. Çoğu uygulamada birden fazla sensör verisinin birleştirilmesi ile yürütülen çevre algılama, oluşturulan bir sanal çevre kullanılarak can ve mal güvenliğine yönelik güvenli hareketin hesaplanmasını ve uygulanmasını hedeflenmektedir. İnsanlı/insansız hava araçlarının hareketinde çevre algılaması, iniş/kalkış yapılacak bölgenin algılanması ve inişe uygunluğunun kontrolü, olası kaza risklerini engellemek ve güvenli iniş gerçekleştirebilmek adına minimum hata oranına sahip olmalıdır. Ayrıca çevredeki taşıt, insan gibi diğer nesnelerin tespiti güvenli seyahat açısından temel gereksinimlerdir.

Bu yapının bir örneği olarak anlatımı yapılan bu çalışma, hava araçları için yer nesnelerinin görüntü üzerinde tespitine dayalı çevre algılama sistemlerinin geliştirilmesini konu almaktadır. Görüntü işleme ile yürütülen nesne tespiti, görüntü üzerinde konumu ve türü belirlenmek istenen nesnelerin derin öğrenme algoritmaları ile sınıflandırılmasını (classification) ve görseli ifade eden iki boyutlu düzlem üzerindeki konumunun belirlenmesinin (localization) Resim-1 ile gösterilen birleşimini ifade eder.

Resim-1: Nesne tanıma algoritmalarının teknik ifadesi [1]

Bu görev kapsamında hedef alınan “taşıt”, “insan”, “uçan araba park” ve “uçan ambulans iniş” olmak üzere Resim-2 ile gösterilen 4 farklı sınıf nesnesinin kamera görüntüleri üzerinde tespitine yönelik derin öğrenme tabanlı nesne tespit sistemi geliştirilmiştir. Tespiti hedeflenen uçan araba park ve uçan ambulans iniş sınıflarının inişe uygunluk durumları da geliştirilen algoritma ile kontrol edilmiştir.

Resim-2: Hedef alınan nesne sınıfları

Çalışma kapsamında, literatürdeki güncel nesne tespit model mimarilerinden biri olan YOLOv5 [2] modeli ve buna entegre olarak SAHI [3] algoritması kullanılmıştır. Bu model yapısı ile girdi verileri için 4 farklı sınıfta nesne tespitinin yürütülmesi sağlanmıştır. Model yapısının geliştirilmesi için birden fazla açık kaynak veri setinin kullanılmasına ek olarak çalışma dahilinde çevrimiçi video ve görüntü kaynaklarından faydalanılarak geliştirilen özel bir veri seti kullanılmıştır. Birden fazla veri seti, gerekli ön işleme adımlarını takip eden model eğitim sürecinde birlikte kullanılmıştır.

Veri Seti

Eğitim Verisinin Eldesi

Model eğitimde kullanılmak üzere birden fazla açık kaynaklı veri seti (VisDrone [4], Semantic Drone Dataset [5], Stanford Drone Dataset [6], Teknofest Dataset) değerlendirilmiş, veri setlerinin bireysel etkileri göz önünde bulundurularak pozitif etkiye sahip olanlar birleştirilerek eğitim veri seti elde edilmiştir.

Eğitim veri seti içerisindeki nesne dengesinin sağlanması için yürütülen çalışmalar sonucunda özel bir veri seti oluşturulmuş, veri dengesizliğinin (data imbalance) giderimi ve veri dağılım varyansının artırılması için model eğitim sürecinde kullanılmıştır. Yarışma görevinde limitleri tanımlanan veri girdisi açı ve mesafe limitlerinin bütününe yönelik modelin geliştirilmesi için birden fazla çevrimiçi kaynaktan elde edilen havadan görüntüleme video verileri yarışma görevindeki 4 farklı sınıf için etiketlenmek üzere 1920x1080 çözünürlüğüne sahip resimlere bölünmüştür. Oluşturulan bu veri seti, içerisinde ki sayıca üstün iki sınıftan biri olan “insan” nesnesinin tanımlanması için gerekli çeşitli niteliklerde verinin elde edilmesi için kullanılmıştır.

Projenin amacı olan ve sentetik nesne sınıfları olarak tanımlanabilen “uçan araba park”, “uçan ambulans iniş” nesneleri özelindeki etiket sayısı dengesizliğinin giderilmesi için ekip bünyesinde geliştirilmiş bir veri artırım (data augmentation) aracı kullanılmıştır.

Veri Artırımı

Model eğitimi için kullanılması planlanan mevcut veriler göz önünde bulundurulduğunda, tespit edilmesi hedeflenen 4 farklı sınıf nesnesinden uçan araba park ve uçan ambulans iniş alanlarının, fiziksel yapı olarak spesifik özelliklere sahip olması sebebiyle obje sayısı bakımından taşıt ve insan sınıflarına oranla çok daha az sayıda bulunduğu bilinmektedir. Bu problemden yola çıkılarak, uçan araba park ve uçan ambulans iniş sınıflarına ait nesne sayısının artırılması amacıyla bir veri artırımı aracı geliştirilmiştir. İlgili araç kullanılarak, uçan araba park ve uçan ambulans iniş görselleri, rastgele boyutlarda, rastgele eksen döndürme ve kırpma oranlarında yeniden elde edilerek veri setinde bulunan bazı görsellere Resim-3'deki gibi rastgele konumlarda yapıştırılması sağlanmıştır.

Resim-3: Veri seti üzerinde nesne artırımının uygulanması

Bununla beraber, yeterli sayıda eğitim verisi elde edilmesi için mevcut görüntülerin farklı birtakım operasyonlara tabi tutulup çoğaltılarak eğitime dahil edilmesi sağlanmıştır. Bu doğrultuda, kullanılan derin öğrenme modeline (YOLOv5) entegrasyonu ve sağlamış olduğu zengin operasyon içerikleri bakımından Albumentations [7] aracından faydalanılmıştır. Albumentations aracının dahili fonksiyonlarını içeren bir birleşik yapı ile görüntü üzerinde uygulanan çeşitli hava durumu etkileri (RandomRain, RandomSnow, RandomShadow, RandomFog), görüntü buğulaştırma, kontrast/parklaklık düzenlemeleri (Blur, CLAHE, RandomBrightnessContrast, RandomGamma) ve görüntü döndürme (VerticalFlip, HorizontalFlip, RandomRotate) tekniklerine ek olarak birçok operasyondan faydalanılmıştır.

Model Yapısının Geliştirilmesi

Model Mimarisi

Proje için geliştirilen nesne tespit sistemi, girdi olarak verilen bir görüntünün (frame) derin öğrenme modelinde kullanılmak üzere SAHI algoritması tarafından dilimlenmesi, dilimlenen görüntü parçaları üzerinde ileri yayılım ile tahminlerin elde edilmesi, görüntü parçaları ve tahminlerin birleştirilmesi ve son olarak görüntü üzerindeki tahminlerin çıktı olarak iletilmesi kademelerini içerir.

Nesne tespit modeli kullanılarak tahmin elde edilmek istenen 3-kanallı görüntü verisi, ilk adım olarak derin öğrenme modelinin sabit girdi boyutu ile aynı ölçülere sahip olacak şekilde yeniden boyutlandırılır. Projede birbirine kıyasla farklı ölçeklerde yer alan 4 farklı nesneden biri olan “insan” sınıfının, görece küçük görüntü alanına sahip olmasının yanı sıra daha küçük boyuta yeniden ölçeklendirme işleminde oluşan bilgi kaybı nedeniyle öğrenim ve tespit (değerlendirme, inference) aşamalarında zorluk oluşturduğu görülmüştür. Bu zorluğun giderilmesi için Akyön et al. (2022) tarafından yayımlanan SAHI (Sliced Aided Hyper Inference) algoritması ve açık kaynaklı SAHI kütüphanesi kullanılmıştır. Bu algoritma, yeniden boyutlandırma işlemi öncesi seçili sayıda ve birbiri ile belirli oranda örtüşen görüntü parçalarının tahmin için kullanılması ile yeniden boyutlandırma aşamasındaki bilgi kaybının önüne geçilmesini temel almaktadır. Geliştirilen model için implemente edilen bu algoritma ile girdi görüntüsüne ait parçalar üzerinde bağımsız şekilde elde edilen tahminler, orijinal görüntü üzerine konumlandırılmış ve görece küçük görüntü alanına sahip nesneler için model başarımı artırılmıştır.

Bu çalışma için geliştirilen nesne tespit modelinin temelini, literatürdeki güncel nesne tespit mimarilerinden biri olan ve Ultralytics firması tarafından açık kaynaklı olarak yayımlanmış YOLOv5 modeli oluşturmaktadır. Bu model, 2015 yılında Redmon et al. tarafından duyurulan YOLO [8] mimarisinin devamı niteliğinde geliştirilmiş 5. nesil nesne tespit modeli olarak COCO [9] değerlendirme veri seti üzerinde doğruluk/süre bakımından yarışma görevi için ihtiyaç duyulan nitelikleri sağlaması sebebiyle tercih edilmiştir. Tek-kademeli bir tespit modeli olan YOLOv5 mimarisi, barındırdığı ızgara tabanlı evrişimsel tahmin katmanı ve model özelinde tanılanan anchor kutulama yapısı ile tek ileri yayılım sürecinde tahminleri elde etmektedir. YOLOv5 modelinin proje üzerinde maksimum verim ile kullanımı için öğrenme aktarımının (transfer learning) kullanılması amacıyla COCO veri seti üzerinde 50.7 mAP50–95 skoru ile ön-öğrenme süreci yürütülmüş YOLOv5x versiyonu, nesne tespit sistemine implemente edilmiştir. Bu modelin, ön-öğrenme sürecinde genel amaçlı öznitelik edindiği yaklaşık 86.7 milyar parametre için kullanılan veri seti ile 4 farklı sınıf için yeniden öğrenimi (fine-tuning) sağlanmıştır. Girdi boyutu alt sınırda 1280 olan model için ölçeklenen görüntüler üzerinde elde edilen tahminler, çıktı olarak gönderilmek üzere hazırlanmaktadır.

İleri yayılım süreci sonunda elde edilen tahminler, SAHI framework’ü ile implemente edilmiş nesne tespit modeli tarafından her bir nesne için; sınıf etiketi, 0–1 aralığına normalize edilmiş 2 boyutlu merkez koordinatları, genişlik ve yükseklik bilgisi olmak üzere listelenmektedir. Elde edilen tahminlerin yarışma görevi formatında iletimi öncesi, yine bir yarışma görevi gereksinimi olan iniş alanı uygunluk kontrolü için geliştirilen algoritma yürütülmektedir. Bu algoritma, listelenen nesne tahminlerinin birbirine göre konumlarına göre kesişim kontrolü ve nesnelerin görüntü sınırında bulunmama koşullarını nesne koordinatlarına göre geometrik olarak değerlendirerek iniş uygunluk bilgisinin oluşturulmasını sağlamaktadır.

İniş Alanı Kontrol

Uçan araba park veya uçan ambulans iniş bölgelerinin yakınlarında veya üzerinde herhangi başka bir sınıfın bulunması, bölgelerin üzerinde/yakınında tanımlanamayan cisimlerin var olması veya bölgelerin ilgili görüntü üzerinde tamamının gözükmemesi gibi durumlar inişe uygunluğu ihlal etmektedir. Tespiti sağlanan uçan araba park veya uçan ambulans iniş sınıfının kapsayıcı kutusunun, tespiti sağlanan diğer sınıfların (taşıt, insan) kapsayıcı kutusu ile çakışması durumunda ve ya çok yakın yada sınıra dayanmış olması durumunda ilgili uçan araba park veya uçan ambulans iniş bölgesi “inişe uygun değil” şeklinde işaretlenmektedir.

Model Eğitim Süreci

Geliştirilen modelin eğitim, doğrulama ve tahmin aşamalarında temel olarak 2 farklı açık kaynaklı kod arşivinden faydalanılmıştır. Model mimarisinin ve ön-eğitilmiş parametrelere sahip model versiyonunun implementasyonu için Ultralytics firmasının Github platformu ile kullanıma sunduğu YOLOv5 kod arşivi kullanılmıştır. Derin öğrenme operasyonları Pytorch kütüphanesi ile hazırlanmış olan bu kod arşivinde paylaşılan model eğitim, doğrulama ve tahminleme modülleri, nesne tespit modeli eğitim sürecinde kullanılmıştır. Bahsedilen modüller, geliştirme sürecindeki ihtiyaçlara göre özelleştirilmiş ve modüllerin görev üzerindeki verimliliği artırılmıştır.

Model geliştirme ve doğrulama işlemleri, geliştirme sürecindeki hesaplama gücü ihtiyacının karşılanması ve buna bağlı zaman verimliliği için G5 serisi 96 GB grafik birimi hafızalı AWS EC2 bulut sunucu üzerinde gerçekleştirilmiştir ve sunucunun paralel işlem kabiliyetinden eğitim sürecinde faydalanılmıştır. SAHI algoritmasının eğitim sürecine dahil edilmesi, veri setinin dilimlenmesi aşamasında yürütülürken tahminleme için implementasyonunda algoritmanın geliştiricileri tarafından hazırlanan kod arşivinden faydalanılmıştır. Bu kod arşiviyle paylaşılan SAHI kütüphanesinin tahmin fonksiyonu YOLOv5 mimarisi ile birlikte çalışacak biçimde hazırlanmıştır. Model eğitim süreci, çalışma ortamına kopyalanan YOLOv5 kod arşivi, ortama yüklenen eğitim ve doğrulama veri setleri üzerinde yürütülmüştür. Nihai modelin geliştirilmesinde her bir model eğitim denemesinin belirli epoch aralıkları için model versiyonu kaydedilmiştir. Her biri için epoch sayısı 150 ve alt küme (mini-batch) boyutu 28 olarak belirlenen model eğitim denemelerinden elde edilen model versiyonları içinde en iyi validasyon skoruna sahip olan model, o eğitim denemesi için referans model olarak kaydedilmiştir. Eğitilen modeller için Wandb servisi üzerinde saklanan öğrenim eğrileri (learning curve) ve diğer metrikler karşılaştırılmıştır.

Model eğitim süreci boyunca YOLOv5 modelinin yeniden öğrenim işleminde en iyi model başarımı eldesi için yayımcı tarafından önerilen varsayılan hiperparametreler kullanılmıştır. Optimizasyon algoritması olarak varsayılan değer olan “momentum aided stochastic gradient descent” algoritması kullanılmıştır. Optimizasyon için seçilen öğrenme katsayısı (learning rate), YOLOv5 mimarisi için varsayılan değer olarak sunulan azalımlı öğrenme katsayısı modeli ile dinamik olarak belirlenmiştir.

Sonuçlar ve Çıkarımlar

Geliştirilen modelin nesne sınıfları özelinde başarımı, ekibimiz tarafından hazırlanan doğrulama seti kullanılarak geliştirme süreci boyunca ölçülmüş ve sonuçlar listelenmiştir. Model sonuçları için tekrar eden tahminlerin toplamlı ortalaması olan mAP (model average precision) skoru kullanılmıştır. Model sonuçları, SAHI algoritması ile implemente edilen dilimli tahminleme (sliced inference) tekniği kullanılarak elde edilmiştir. Dilimlere ayrılan görüntü girdisi, her bir görüntü parçasına ait tahmin sonuçlarının birleştirilmesiyle Resim-4 ile gösterildiği biçimde nihai tahmin olarak değerlendirilmiştir.

Nesne sınıfları için ortalama model başarımının geliştirilmesinde veri sayısı dengesizliği kaynaklı düşük başarım sonuçlarına sahip nesne sınıflarına odaklanılmıştır ve oluşturulan özel veri seti ile bu problemin çözümü hedeflenmiştir. Nesne sınıfları özelindeki model başarımı incelendiğinde gözlemlenen “insan” sınıfı performans düşümünün giderimi için literatür çalışmaları ve yarışma arşivindeki çıktılar incelenmiştir. Bu aşamada, çevrimiçi kaynaklardan 30–100 metre, kuşbakışı görünümde olan “insan” sınıfı verileri elde edilmiş ve eğitim veri setine dahil edilmiştir. “İnsan” sınıfı özelindeki veri geliştirmesi ve SAHI implementasyonunun çıktısı olarak doğrulama seti üzerinde mAP(50–95) olarak 72,5 skoru erken aşama sonuçları elde edilmiştir.

Resim-4: Örnek görüntü üzerindeki tahminlerin görselleştirmesi

Projeye konu olan havadan görüntüleme ve algılama özelindeki gereksinimlerin anlaşılması, problem üzerindeki çözüm başarımının geliştirilmesinde birincil referans olarak kullanılmıştır. Bu doğrultuda yapılan geliştirmeler ile eklenen destekleyici birimler (SAHI algoritması, iniş kontrol algoritması) spesifik alt problemlerin çözümü için doğrudan kullanılmıştır. Geliştirme süreci başlangıcında mevcut olan veri dengesizliği probleminin, yapılan model eğitim süreçleri için engel oluşturulduğu ölçüldüğünden bu problemin çözümü için odaklanılmış ve veri dengesi ile oluşan pozitif başarım değişimleri listelenmiştir. Bu sonuçlar ışığında, model eğitiminin eşit dağılıma ait veri grupları üzerinden sağlanması ve veri kaynaklarının genişletilmesi için özelleştirilmiş hedefe yönelik özgün veri ediniminin, model başarımının artırılmasına yönelik etkin bir kaynak olarak kullanılabildiği sonucuna varılmıştır.

FPGA Üzerine İmplemente Edilecek Son Modelin Elde Edilmesi

Proje kapsamında drone üzerine yerleştirilmiş kameralardan alınan ve sınıflarına göre etiketlenmiş video görüntülerinde nesne tespiti işlemi için eğitilen modelin uç cihazda çalışabilmesi için XILINX FPGA cihazlar tercih edilmiştir. XILINX FPGA cihazlar içerisinde barındırdığı CPU ve DPU yapılarıyla lokalde yapay zeka analizlerinin yapılmasını sağlamaktadır. XILINX, yapay zeka geliştirme ortamı olarak docker üzerinden “Vitis-AI” resmini kaynak olarak paylaşmaktadır. Bu docker ortamı üzerinde bulunan “Vitis-AI Quantizer” aracı ile geliştirilen çözümün parametre değerleri kuantalanır. Böylelikle geliştirilen çözümün boyutları azaltılır. Eğitilmiş ve kuantalanmış yapay zeka modeli, diğer bir araç olan “Vitis-AI Compiler” ile tercih edilen cihaz üzerinde kullanılabilen “binary” yapıdaki komut dizimi olan .Xmodel formatına çevrilir. Bu işlem sırasında FPGA cihaz üzerindeki DPU yapılarının özellikleri uygulama içerisine aktarılır.

Öncelikle model FPGA cihaz ile uyumlu çalışabilir bir hale getirilmelidir. Bu süreç içerisinde iki ana operasyon gereklidir. Bunlarda ilki, geliştirilen çözümün boyut olarak küçültülmesi, ikincisi ise geliştirilen çözümün FPGA cihaz üzerinde ilgili görüntüleri işleyip, arzulanan çıktıları üreten “binary” bir uygulama haline getirilmesidir.

Boyut küçültme için eğitilmiş modelin kuantalanması gerekmektedir. Kuantalama işlemini kısaca özetlersek, geliştirilen derin öğrenme modeli aslında yüksek mertebeden polinom bir denklemin çözümü gibidir ve kuantalanma işleminde bu polinom denklemin katsayıları (weight) ve sabit değerleri (bias) daha basit ondalık sayılara indirgenir.

Resim-5: Derin öğrenme modeli ağırlıklarının kuantalaması

Resim 5’te verilen örnekde görüldüğü üzere derin öğrenme modelinin eğitim aşamasında polinom denkleme ait katsayı değerleri (weight) 1.1, 2.2, -1.7, 3.6 değerlerinden kuantalanarak 1,2,-2,2 ondalık değerlerine yuvarlanmıştır. Bu operasyon ile yaklaşık %70–80 oranında orjinal model boyutunda küçülme gözlemlenir.

Kuantalanan ve boyutları düşürülen derin öğrenme modelinin FPGA uç birime uygulamadan önce, ilgili FPGA cihaza ilişkin mimari bilgilerin ve kullanılacak kaynaklara ilişkin (DPU,CPU) ayrıntıların bu derin öğrenme modeline aktarılması gerekmektedir. FPGA cihaz üzerinde ilgili derin öğrenme modelinin hangi boyutlarda girdi alacağı, cihaz üzerinde bulunan DPU kaynaklarının bu girdiyi nasıl analiz edeceği, derin öğrenme model yapısında bulunan ön işleme ve/veya son işleme operasyonlarının hangi “kernel” yapılarda gerçekleşeğine dair ayrıntılar Vitis-AI Compiler eklentisiyle kuantalanmış modele aktarılır. Bu operasyon sonucu tamamen FPGA uç cihaza entegre ve arzu edilen analizleri gerçekleştiren bunun sonucunda ilgili çıktıları almamızı sağlayan “binary” bir uygulama elde ederiz.

Resim-6: Vitis-AI Compiler çalışma diyagramı

Resim 6’da bulunan şematik üzerinde görüldüğü üzere kuantalanan, boyutları ve işlemsel karmaşıklığı azaltılmış derin öğrenme çözümü Vitis-AI Compiler eklentisiyle, FPGA uç cihaz üzerinde bulunan DPU kaynaklarını kullanmaya entegre “binary” formatta bir uygulama haline dönüştürülmüştür.

Referanslar

  1. Ho Seong Lee, “Tutorials of Object Detection using Deep Learning. What is object detection?” — https://hoya012.github.io/blog/Tutorials-of-Object-Detection-Using-Deep-Learning-what-is-object-detection/
  2. G. Jocher, A. Chaurasia, A. Stoken, J. Borovec, and I. N. Sneddon, “YOLOv5 SOTA Real-time Object Detection and Instance Segmentation ‘’ (2022), Unpublished. http://doi.org/10.5281/zenodo.7347926
  3. F.C. Akyon, S.O. Altinuc, A.Temizel, “Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection“ (2022), Presented at ICIP 2022, doi:10.1109/ICIP46576.2022.9897990
  4. Pengfei Zhu, Longyin Wen, Xiao Bian, Haibin Ling, Qinghua Hu “Vision Meets Drones: A Challenge” (2018), http://aiskyeye.com
  5. ICG Semantic Drone Dataset — Institute of Computer Graphics and Vision, Technical University of Graz, http://dronedataset.icg.tugraz.at
  6. A. Robicquet, A. Sadeghian, A. Alahi, S. Savarese, Learning Social Etiquette: Human Trajectory Prediction In Crowded Scenes, European Conference on Computer Vision (ECCV), 2016.
  7. Alexander Buslaev, Alex Parinov, Eugene Khvedchenya, Vladimir I. Iglovikov, Alexandr A. Kalinin, “Albumentations: fast and flexible image augmentations” (2018), MDPI Open Access Journal, http://doi.org/10.3390/info11020125
  8. Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). “You only look once: Unified, real-time object detection” In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 779–788).
  9. Lin, Tsung-Yi, et al. “Microsoft COCO: Common objects in context.” Computer Vision–ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6–12, 2014, Proceedings, Part V 13. Springer International Publishing, 2014.

Görüşleriniz ve aklınıza takılan sorularınız varsa Empa sayfamız üzerinden bizimle iletişime geçebilirsiniz.

--

--

Deniz Çelik
Empa Electronics Blog

friendly neighborhood tech guy, machine learning engineer