İnsansız Deniz Araçları için Yapay Zeka

fuat
Deep Learning Türkiye
9 min readJan 14, 2019

3 tarafı denizlere açılan Türkiye’nin adalar dahil 8333 km’lik kıyı şeridi bulunmaktadır. Bu yazıda yapay zeka yöntemlerinin insansız deniz araçlarında kullanımına yönelik örnekler sundum.

2016 yılında karaya oturan “Modern Express” isimli insansız kargo gemisi

Ön Bilgi: Örneklerin maddelendirmeleri mAI-XX şeklinde yapılmıştır.
mAI = Maritime Artificial Intelligence anlamına gelmektedir.

Önemli Not: Bu yazı sürekli güncellenmektedir.

Yapay Zeka Nedir?

Yapay zeka dediğimiz şey aslında yeni bir kavram değil. 1950’lerden itibaren bu alanda çalışmalar yapılıyor. 2012 yılında Alex Krizhevsky, Ilya Sutskever ve Geoffrey E. Hinton’ın “ImageNet Classification with Deep Convolutional Neural Networks” isimli çalışmalarıyla ImageNet görüntü sınıflandırma yarışmasını derin yapay sinir ağları ile (bilinen ismiyle derin öğrenme) kazanmasıyla birlikte derin öğrenmenin (deep learning) yükselişine hep birlikte şahit oluyoruz. Derin öğrenme DeepMind, OpenAI, Facebook AI gibi dünyanın önde gelen yapay zeka şirketleri tarafından kullanılmaktadır.

Yapay zekayı, “makineleri daha akıllı hale getirme sanatı” olarak tanımlamak mümkündür. İnsanlar tarafından evrende yaşayan “en akıllı” canlının yine “insan” olduğunu varsayıldığı için insan beyninden ve sinir sisteminden kopya çekerek matematiksel temelleri olan yapay zeka modelleri ve algoritmaları geliştirilmiştir.

Yapay zeka, makineleri daha akıllı hale getirme sanatıdır.

O yıllarda olmayan ama şimdi olan şey ise bilgisayarların işlem kapasiteleri ve veri kaynaklarının sayısı. Klasik bilgisayarlarda CPU (Central Processing Unit) denilen merkezi işlemci birimi bulunur. Bu işlemci klavye ve fare aracılığıyla aldığı komutları sırayla yerine getirir. Bilgisayar donduğu zaman çeşitli programları açmak için tıklarsanız, donma geçtiği zaman sırasıyla tıklanma sırasına göre programların açıldığını farkedeceksiniz.

Yapay zeka algoritmalarında matris işlemleri (özellikle matris çarpımı) sıklıkla kullanılır. Günümüzde eş zamanlı olarak birçok matris çarpım işlemi yapabilmek için CPU yerine işlemleri eş zamanlı yapabilen GPU (Graphical Processing Unit) denilen görsel işlemci birimi kullanılıyor. Çok aşırı büyük verilerle uğraşmayacaksanız klasik bir laptopta bulunan CPU ile de yapay zeka uygulamalarını geliştirebilirsiniz. GPU, CPU’ya göre hızlı fakat güç tüketimi ve fiyatı fazla. Çok karmaşık ağ yapılarını CPU ile yapmak isterseniz bilgisayarı açık bırakıp bir iki haftalık bir tatile çıkabilirsiniz. Çünkü ancak tatil dönüşü bilgisayarınız “muhtemelen” işlemi bitirmiş olacaktır.

İnsana yapay zeka monte etmek biraz uçuk bir fikir. Ama makinelere yapay zeka monte etmek daha uygulanabilir bir fikir. Peki bu nasıl olacak? Bir bilgisayara ya da bir elektronik cihaza “zeka” katabilmek için öncelikle onun çevresini ya da aldığı verileri algılamasını, algıladığı şeylerden bir anlam çıkarmasını ve bunun sonucunda bir karar vermesini sağlamamız gerekir. Tabii bu noktada karşımıza çok büyük bir engel çıkıyor: Henüz insan beyninin tam olarak nasıl çalıştığını ve nasıl karar aldığını kimse bilmiyor. Bilmek zorunda da değiliz bana göre. Çünkü kuşları taklit ederek üretilen uçakların birebir kuşlar kadar iyi uçması gerekmez. Amacı yolcu taşımak olan bir yolcu uçağı, uçsun ve yolcuları taşısın yeter. Yani yapay zeka oluşturma amacımız insan hayatını kolaylaştırmaktır. İnsanın birebir kopyasını yapabilmek değil.

Yapay Zekanın Kısa Tarihçesi

Yapay zekayla ilgili ilk pratik çalışmalar 1950’lerden itibaren yapılmaya başlandı. Transistörün 1947’de icat edildiğini düşünürsek başlangıç tarihinin neden 1950’ler olduğunu daha rahat anlayabiliriz. Çünkü modern bilgisayarlar transistör denilen ufak elektronik parçalardan oluşuyor. Tabii o yıllarda devasa boyutlardaki bilgisayarların yapabildiği tek şey, toplama ve çıkarma gibi basit işlemlerdi. Toplama ve çıkarmayı güç bela yapan zamanın bilgisayar teknolojisinden, günümüzün yapay zeka modellerinin yaptığı gibi milyonlarca veriyi işlemesi beklenemez.

Bilimsel bir çalışmanın önüne kimi zaman teknoloji engeli çıkabilir. Teorisi ortaya atılan her şeyin teknolojik olarak gerçeklenmesi mümkün olmayabilir. Yapay zekanın başına gelen de tam budur. Günümüz teknolojisi ise teorik olarak oluşturulan bir modelin yazılım ve donanım olarak gerçeklenmesine imkan tanıyor.

İnsan öğrenen bir varlıktır. İnsandaki öğrenmenin nasıl gerçekleştiği tam olarak bilinemese de nöron denilen sinir sistemi hücresinin öğrenmeyi gerçekleştirdiği düşünülmektedir. Yapay zeka ile uğraşan bilim adamları da “eğer biyolojik nöronu modelleyebilirsek, ortaya öğrenen makineler çıkarabiliriz” demişlerdir. Nöron modelinden yola çıkarak McCulloch Pitts, Perceptron, Hebb gibi algoritmalar geliştirilmiştir.

Bilgisayar teknolojisinin yetersiz olması ve basit nöron modeliyle çalışan algoritmaların gerçek hayat problemlerinin çözümünde “basit kalması” nedeniyle yapay zeka rüyası hüsranla sonuçlanmıştır.

Bunun üzerine uzman sistemlere (expert systems) yönelim olmuştur. Uzman sistemlerde amaç, uzmanlardan bilgiyi almak ve buna bağlı olarak hangi durumda ne olur sorusuna yanıt verecek bir program geliştirmektir. Örneğin grip olduğunuzda doktora giderseniz doktorlar “mide bulantısı var mı?”, “boğazınız ağrıyor mu?“, “son 24 saat içinde ne yediniz?” gibi “standart” sorular sorarlar. Bu sorulara verilecek olası yanıtlara ve uzman bilgisine göre bir program yazmak mümkündür. Uzman sistemlerin en büyük problemi programın uzman görüşleriyle kısıtlı olması ve farklı bir probleme çözüm getirememesidir. Bir de tabii “her uzmanın yoğurt yemesi” farklı olduğu için hangi uzman tarafından hazırlandığına bağlı olarak uzman sistemlerin başarısı artmakta ya da azalmaktadır.

Yapay Zeka Hangi Programlarla Yapılır?

Günümüzde yapay zeka uygulamaları genellikle Python programlama diliyle geliştirilmektedir. Python’da bulunan bir çok kütüphane işlerimizi kolaylaştırmaktadır.

Makinelerin Öğrenme Şekilleri

Makinelere yapay zeka katmak ve aldığı verileri anlamlı hale getirmesini sağlamak için çeşitli yöntemler (algoritmalar) kullanıyoruz.

  1. Gözetimli (Supervised): Eğiticili öğrenmede gelen verilere karşılık olması gereken değerler vardır. Yani makineye “bak şu veriler gelecek ve ait olduğu sınıf da bu” diyoruz. Gelen verilere karşılık, çıktının ne olmasını bilen makine, öğrenme aşamasında kendi ürettiği çıkış ile olması gereken çıkışı sürekli karşılaştırır ve ikisi arasındaki farkı yani hatayı hesaplar. Çeşitli yöntemler kullanarak bu hatayı azaltmaya çalışır. Eğiticili denmesinin sebebi giriş verilerine karşılık olması gereken çıkışları bilgisayara bildirmemizdir.
  2. Gözetimsiz (Unsupersived): Eğiticisiz öğrenmede ise olması gereken çıktıları bilgisayara bildirmiyoruz. Çeşitli yöntemler kullanarak gelen verileri grupluyoruz. En bilinen yöntem verileri kümelemektir.

Yapay Zeka ile Neler Yapabiliriz?

  • Sınıflandırma (Classification): Doktor olduğunuzu varsayalım. 100 tane hastadan 10’ar tane farklı ölçüm aldınız diyelim. Hastalarınızın bir kısmı hasta bir kısmı ise sağlıklı çıktı. Bu verileri yapay zeka algoritması ile eğittikten sonra herhangi başka bir insandan 10 tane ölçüm almamız durumunda bu kişinin hasta mı sağlıklı mı olduğunu tahmin edebiliriz. Yani yeni kişiden alınan 10 adet ölçümün hasta sınıfına mı yoksa sağlıklı sınıfına mı ait olduğunu tespit edebiliriz. Bu işleme ikili sınıflandırma (binary classification) denilmektedir.
  • Regresyon Analizi (Regression Analysis): Regresyon (regression) ilişki tespiti demektir. İstatistikle ya da ekonomi ile uğraşanların yoğun olarak kullandığı bir terimdir. Yapay zeka ile ekonomik verilerden yola çıkarak borsanın kaç olacağını tespit etmek için regresyon analizi yapılabilir.
  • Kümeleme (Clustering): İlkokulda kümeleri öğrenmiştik. Hangi verinin hangi kümeye ait olacağı çeşitli yöntemlerle belirlenir. Eğiticisiz öğrenmenin en çok bilinen yöntemidir.
  • Nesne Tanıma (Object Detection): Daha karmaşık model ve çok büyük veri (yüzbinlerle ifade edilecek kadar) kullanılması durumunda buna Derin Öğrenme (deep learning) diyoruz. Elinizde binlerce resim var diyelim. Her bir resimde ya martı ya da karga var ve derin öğrenme algoritmasına bu bilgiyi resimle birlikte veriyorsunuz. Ağı eğittikten sonra yeni bir resim gösterip resimde martı mı karga mı olduğunu anlamasını isteyebiliyorsunuz.

Yukarıdakileri Yaparsam Zeki Bir Sistem mi Yapmış Olacağım?

Kısmen evet. Makinelerin öğrenmesini sağlamış oluyorsunuz ama bana göre yine de zeki bir sistem yapmış olmuyorsunuz. Örneğin sınıflama örneği için 10 adet ölçüm verisi kullanarak hasta mı yoksa sağlıklı mı olduğunu anlıyorduk. Yani tasarladığımız makine gelen verileri anlamlandırdı. Bunun bir sonraki adımı bu anlamlı veriyi kullanarak bir aksiyon almak. Veriyi makinenin anlayabileceği hale getirmek de büyük başarı fakat yeterli değildir. Makine öğrenmesi zeki yani insan gibi davranan makinelerin ilk adımıdır. İnsan gibi davranan bir makine üretmek için anlamlı veriyi kullanarak kritik kararlar alınmasını sağlamalıyız.

İnsansız Deniz Araçları için Yapay Zeka Örnekleri

mAI-01: Denizde yapay zeka kullanımına güzel bir örnek su altında boğulmuş canlıların tespiti. Tespit işlemini, ses dalgalarıyla elde edilmiş su altı görüntülerinin evrişimli sinir ağları (convolutional neural network) kullanılarak) kullanılarak sınıflandırılması ile yapmak mümkün. Sonar ile elde edilen görüntüler “gürültülü” olduğu için problemin çözümünde klasik yöntemler yerine derin öğrenme kullanmak daha avantajlı. Bilimsel çalışmada da %80’lere varan bir başarı elde edilmiş. Böyle bir tanıma sisteminin insansız su altı araçlarına kazandırılması ile denizde ölümleri azaltmak mümkün olacaktır. [1]

Görsel: Su altında insan [1]

mAI-02: İnsansız deniz araçlarının da içinde insan olan gemiler gibi “akıllı manevralar” yapabilmesi gerekir. “Deep Convolutional Neural Network-Based Autonomous Marine Vehicle Maneuver” isimli bu çalışmada evrişimli sinir ağları ile verilen bir sahnede deniz üzerinde kaza yapmamak için yapılacak reaksiyonlar belirlenmeye çalışılmış. Bu çalışmada derin sinir ağı mimarisi olarak, 2012’de büyük bir başarı elde eden, AlexNet kullanılmış. Veriler European Ship Simulator isimli simülatör programından manuel olarak toplanmış. Dipnot olarak belirtmem gerekiyor; çoklu otonom insansız deniz araçlarıyla ilgili yüksek lisans tezimde ben de bu oyunu kullanmıştım. Eğitim sırasında davranışlar uluslararası denizcilik kuralları olan COLREG’e uygun olarak gerçekleştirilmiş. İnsansız deniz araçlarıyla ilgili uluslarası deniz hukuku açısından istisnalar olmadığı için insansız araçlar da mevcut hukuk kurallarına uymak zorunda. [2]

Görsel: Eupean Ship Simulator’den bir görüntü [2]

mAI-03: Deniz trafiği yapay zeka sayesinde otomatik olarak izlenebilir. Deniz üzerinde bulunan gemilerin uydu görüntülerinden tespit edilebilmesi için Sentinel-1 verisetinde önce gemiler etiketlenmiş (yaklaşık 8000 adet) sonra da evrişimli sinir ağları ile gemiler tespit edilmeye çalışılmış. Çekilen uydu görüntüleri sentetik açıklıklı radarlarla (SAR) elde edilmiş. [3]

mAI-04: İnsansız otonom bir deniz aracı hayal edin. Mesela İstanbul Boğazı’nda. Bu araç Beşiktaş ve Üsküdar arasında çalışan Turyol teknelerinin yerini alacak olsun. Turyol kaptanları gözleriyle gemileri kullanırlar. Dar alanda radar vb. diğer sensörler sağlıklı sonuç vermez. Engelden sakınma için temel bir prensip var: sense and avoid. İnsansız deniz aracı tespit edemediği (ve sonrasında takip edemediği) engellerden sakınamaz. Derin öğrenmenin görüntü gibi yapısal olmayan veriler üzerindeki başarısı sayesinde etraftaki gemileri tespit etmek günümüz teknolojisi ile mümkün. İnsansız deniz araçlarında hareketli hedef takibi için;

  • Faster R-CNN ile kutucuk (bounding box) oluşturma
  • Nesneleri takip etmek için de KCF (Kernelized Correlation Filter) Tracker kullanılmış.

mAI-05: Makine öğrenmesi ve derin öğrenme çalışmalarında veri olmadan başarılı sonuçlar elde etmeniz pek mümkün değil. Üstelik bazen sadece veriye sahip olmanız da bir anlam ifade etmeyebilir. Çok sayıda veriden ziyade çok sayıda “etiketli veriye” sahip olmanız gerekiyor. Bu veriler görüntü, ses, metin gibi yapısal olmayan farklı formatlarda olabilir. Bir de verinizin çok olması gerekiyor. Özellikle 2012 yılından itibaren yükselişe geçen derin öğrenme, çok veriden öğrenebilen bir yöntem bütünüdür. Fransa’nın Metz kentinde bulunan Symphony gölünde 2014–2017 yılları arasında yüzdürülen insansız deniz aracından elde edilen veriler Symphony Lake Dataset adıyla paylaşılmış. Gölün kıyı şeridi yaklaşık 1.3 km ve insansız deniz aracı kıyıdan kıyıdan giderek verileri sürekli kaydediyor. Bu şekilde yaklaşık 5 milyona yakın fotoğraf çekilmiş. [5] Paylaşılan sensör verileri şunlar:

  • Kamera,
  • 2D Lidar,
  • GPS,
  • Pusula,
  • IMU

mAI-06: Elektronik sensörlerin her zaman doğru bir şekilde çalışacağının garantisini kimse veremez. İnsansız araçlar dış dünyadan bilgi almak için sensörlere ihtiyaç duyarlar. Sensörler, insansız araçlar için bir “ihtiyaç” iken otonom araçlar için “zorunluluktur”. İnsansız araçların sensörlerden faydalanması her ne kadar güzel olsa da sensörlerde yaşanacak herhangi bir problem ağır sonuçlara yol açabilir. Peki sensör verileri hatalı gelirse ne yapılmalıdır? Sanal sensör verileri tam bu noktada devreye giriyor. Peki o zaman kaliteli sensör verisinin geldiği nasıl anlaşılır? Bunu CNN’deki Dropout katmanı ile denetlemişler. Mimarinin adını MarineNet. Makalenin bilim dünyasına katkısı Dropout ile sensör verisinin kontrolü ve LSTM ve CNN’in sanal sensör verisi oluşturmak için birlikte kullanılması. [6]

mAI-07: İnsansız deniz araçlarında yaşanabilecek en önemli problemlerden bir tanesi de aracımızın çizdiğimiz rotayı takip edememesi. Rotayı takip etmek için pratikte genellikle PID (Proportional Integral Derivative) kullanılıyor ama özellikle rotaların çok dolambaçlı olması durumunda PID maalesef sınıfta kalıyor. Derin Pekiştirmeli Öğrenme’nin (Deep Reinforcement Learning) kullanıldığı bu çalışma ile PID’ya nazaran gözle görülür bir fark oluşmuş durumda. Problemin çözümü Aktör-Kritik adı verilen ikilide gizli. Bu ikili aslında çok katmanlı algılayıcıdan ibaret iki adet yapay sinir ağı. Birisi karar alırken diğeri de bu kararın uygun olup olmadığını değerlendiriyor. Yöntem olarak Deep Deterministic Policy Gradient kullanılmış. [7]

Ayrıca

ScienceDirect’te yayımlanan COLREGS Based Path Planning and Bearing Only COLREGS Based Path Planning and Bearing Only Obstacle Avoidance for Autonomous Unmanned Surface Vehicles isimli çalışmamı da okuyabilirsiniz.

Kaynaklar

[1] Deep learning of submerged body images from 2D sonar sensor based on convolutional neural network

[2] Deep Convolutional Neural Network-Based Autonomous Marine Vehicle Maneuver

[3] Contextual Region-Based Convolutional Neural Network with Multilayer Fusion for SAR Ship Detection

[4] An object detection and tracking system for unmanned surface vehicles

[5] Symphony Lake Dataset

[6] Input quality aware convolutional LSTM networks for virtual marine sensors

[7] Deep reinforcement learning based optimal trajectory tracking control of autonomous underwater vehicle

--

--