İçeriğe geç

Uydu Görüntüleri Üzerinden Gemilerin Tespiti

Bimtaş ile işbirliği yaptığımızdan bu yana haritalar ve harita görüntüleri üzerinden çıkarımlarda bulunan yazılımlarla içli dışlı oldum. Bu yazımda sizlere uydu görüntüleri üzerinden nasıl çıkarımda bulunulur bundan bahsedeceğim.

Kaynak : Pinterest – Beril Ateş

Gemilerin yapay zeka ile işaretlenmesi denilince benim aklıma hiç kuşkusuz 2. dünya savaşında gerçekleştirilen “Project Pigeon” ve “Project Orcon” geliyor.

Nedir bu Project Pigeon ve Orcon?

Image for post

Project Pigeon Burrhus Frederic Skinner adlı bir psikolog tarafından 2. dünya savaşında ortaya atılan çağın ötesinde bir proje. Bu projeye göre güvercinler patlayıcı bir savaş başlığının içerisine yerleştirilerek gagalarıyla önünde bulunan merceklerden gemileri gagalıyor ve her bir gaga darbesi planörün kanatlarını yönlendirerek patlayıcının gemiye yönelmesini sağlıyordu. Böylece güvercinler bir nevi görüntü işleme görevi görerek planörü yönlendiriyordu.

Bu süreç şahsımca derin öğrenme sürecine oldukça benziyor.

Verilerin toplanması : Mühendisler güvercinleri patlayıcı başlığa koymadan önce güvercinlerin düşmanını tanıması için güvercinleri eğitmeye ihtiyaç duyuyorlardı. Bunun için düşman gemilerinin daha önceden çekilmiş videolarını toplayıp güvercinlerin önüne getiriyorlardı.

Verilerin Eğitilmesi : Güvercinler özel bir kafesin içerisine yerleştirilerek karşılarına gemi videoları getiriliyordu. Güvercinler her düşman gemisine gaga attığında kuş maması ile ödüllendiriliyordu. Böylece şartlanmış oluyorlardı.

Sonuç : Testler sonucunda güvercinler çok büyük bir doğruluk ve başarı oranı yakaladılar.

Fakat güzel bir haber vermek gerekirse bu proje hiçbir zaman gerçek savaşlarda kullanılamadı. Çünkü elektronik donanımlardaki gelişmeler, güdümlü güvercinleri bir ihtiyaç olmaktan çıkardı.

Ben de buradan ilham alarak elde ettiğim uydu görüntülerinden gemilerin tespitini yapacağım.

Veri toplama

Veri toplama kısmına geçmeden önce veriyi hangi sağlayıcıdan ve nasıl toplayacağız? Sorusunu cevaplamamız gerekiyor. Öncelikle biz görüntüler üzerinden çalışacağımız için görüntü verisi toplayabileceğimiz bir platform olmalı. Ben kendime göre bazı uydu görüntüsü sunan harita altyapılarını tespit ettim. Buna göre önümde bir kaç seçeneğim oldu.

  1. Google Maps : Google Maps Türkiye içerisinde alanlara yakınlaşınca görüntü kalitesi düştüğü için tercih etmedim.
  2. İBB Şehir Haritaları Servisi : Görüntü kalitesi olarak güzel ve sadece görüntüler İstanbul içerisini kapsadığı için ortafoto kalitesinde.
  3. Here Maps : Görüntü kalitesi olarak güzel; Fakat harita görüntüleri 2020 yılına ait. Bundan dolayı denizlerde gemi bulunmuyor.

Kararım : İBB Şehir Haritaları bundan sonraki kısım da verileri İBB Şehir Haritaları ‘ndan toplayacağım.

İBB Şehir Haritaları diğer servisler gibi bir api servisi sunmadığı için burada görüntüleri toplayacak yazılımı kendimiz yazacağız. Bunun için haritaların çalışma prensibini bilmek yeterli oluyor. Haritalar aslında teori de basit, pratikte zor bir yapı ile oluşturuluyor. Büyük bir veri olduğu için herhangi bir harita servisine girdiğinizde bütün dünyada bulunan harita verisi yerine sadece baktığınız kısım da yer alan görüntüler parça parça birleşerek oluşturuluyor.

Canlandırılması (Görüntü video yavaşlatılarak elde edilmiştir)

Bizim yapacağımız işlem tam olarak bu yüklenen görselleri yakalamak olacak. Bunun için website trafiğini izlememiz yeterli.

Sağ tık> öğeyi denetle> Network>img

Daha sonrasında isterseniz resimleri tek tek indirebilirsiniz veya dosya uzantılarıyla aranız iyiyse .har formatında bütün verileri indirebilirsiniz. Har uzantısında indirirseniz görüntülerle beraber farklı verilerin de ineceğini unutmayın. Sadece işimize yarayacak verileri ayıklamak için pandas, json, ve urllib kütüphanelerinden faydalanacağız.

Verileri ayıklamak için gerekli kütüphaneler
Har dosyası içerisinde bulunan verileri Pandas ‘a aktarıyoruz.
Resimlerin kaydedilmesini sağlayan fonksiyonumuzu yazıyoruz.
Pandas içerisinde sadece jpg formatıyla uyuşan verileri save fonksiyonumuza göndererek indirilmesini sağlıyoruz.
Çıktı
İndirilen görseller

İşlenmesi gereken verileri böylece toplamış olduk.

Eğitim verilerinin toplanması ve eğitilmesi

Gemileri tanımak istediğimiz için gemi verileri ile algoritmamızı eğitmemiz gerekiyor. Kaggle ‘dan hazır bir datasetine ulaşabilirsiniz.

https://www.kaggle.com/rhammell/ships-in-satellite-imagery

ship
Kaggle Hazır Veri Seti

Ben bu verileri üzerinden işlemlerimi gerçekleştireceğim. Görüntüleri eğitme ve işleme kısmını keras ile yapacağız. Bundan önce kütüphanelerimizi ve veri setlerimizi uygun hale getirelim.

Kütüphanelerimizi import ediyoruz.

Daha önceden işaretlenmiş verilerimizi içeren json dosyamızı import ediyoruz

Verilerimizi işlenmek için hazır hale getiriyoruz

Verilerimizi Eğitelim!

Verilerimizi eğittikten sonra image_count adında bir fonksiyon oluşturuyoruz. Bu fonksiyon klasörümüzde bulunan her fotoğraf için tek tek görüntü işleme fonksiyonlarını çalıştırarak sonuç elde edecek.

Cutting fonksiyonumuz algılanan objenin sadece etrafını almamızı sağlıyor.

not_near fonksiyonumuz görsel içerisinde 10 adımda bir fotoğrafların pixellerini toplayarak içerisinde obje aramamızı sağlar.

show_ship fonksiyonumuz algılanan objenin etrafını kare olarak işaretler.

image_proccess fonksiyonu aslında ana fonksiyonumuzdur. image_count dışındaki bütün fonksiyonları çalıştırarak görüntü üzerinde işlemler yapmamızı sağlar.

Görüntülerimizin konumunu belirterek yazılımımızı çalıştırıyoruz. Ve sonuçlar aşağıda göründüğü gibidir.

Bundan yaklaşık 70 yıl önce gemilerin hedeflenmesi için güvercinler kullanılıyordu. Bugün teknolojinin geldiği nokta ile bu işi yapabilmek için bir çok farklı alternatif(sensörler, bilgisayarlar, derin öğrenme, vb.) bulunuyor. Peki bundan 70 yıl sonra aynı işlemleri yapmak için ne kullanacağız?

Kaynaklar :

(http://cyberneticzoo.com/bionics/1940-project-pigeon-1948-project-orcon-b-f-skinner-american/)

(https://www3.uca.edu/iqzoo/Exhibits/project_pigeon.htm)

(https://www.kaggle.com/rhammell/ships-in-satellite-imagery)

(https://sehirharitasi.ibb.gov.tr/)

Sorularınız ve iletişim için:

Instagram adresim : https://instagram.com/enisgetmez

Bu tarz içerikleri paylaştığım Instagram adresim : https://instagram.com/enis.py

E-Mail adresim : enis@enisgetmez.com

https://turkol.com.tr/

Tarih:Yazılım

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir