Kalman Filtresi nedir ve nerelerde kullanılır?

Katılım
2 Haziran 2015
Mesajlar
14.195
Makaleler
110
Çözümler
120
Son zamanlarda Yapay Zeka üzerine açılan birkaç konu gördüm ve bunlar, genellikle hep yazılım üstüne oluyordu. Ancak ben yapay zekanın yazılımda değil matematikte bittiğini düşünüyorum. Bu nedenle bildiğim (ve bildiğimi de rahatça aktarabileceğim :D ) bir konu üzerinden, yazılım/elektronik sistemlerde ve yapay zeka sistemlerinde matematiğin yerini açıklamak istedim.

Bu konu için seçtiğim baş aktör ise: Kalman Filtresi.

Kalman Filtresi, durum uzayı modeli ile gösterilen bir dinamik sistemde, modelin önceki bilgileriyle birlikte giriş ve çıkış bilgilerinden sistemin durumlarını tahmin edilebilen filtredir. Macar asıllı Amerikan matematiksel sistem teoristi Rudolf Kalman tarafından bulunmuştur.

Gözlemleme teorisi; karar verilen bir bakış açısı temelinde, sistemin durum tahmini için izlenecek bir yoldur. Eğer sistemin stokastik veya rastgele gürültülü yönü hesaba katılırsa minimum varyans tahmini veya Kalman Filtresi çok uygun olmaktadır. Kalman Filtresi, geleneksel tahmin edicilerde olduğu gibi filtreleme özelliğine rağmen, sistemin ölçülemeyen durumlarını tahmin etmek için de çok güçlü ve yeteneklidir.
^Kaynakça: Vikipedi

Kalman Filtresi, kabaca bakacak olursak bir tahmin algoritmasıdır aslında. Belirli bir düzende ve sabit bir hızda veri akışının olduğu bir sistemde, sonraki verileri tahmin etmede kullanılacağı gibi, çevresel etmenler ve ortamın her anda eşit koşullara sahip olmaması nedeniyle oluşan veri farklılıklarını normalize etmek için de kullanılır. Kalman Filtresinin matrisli formüllerle ifade edilen karmaşık bir yapısı var ancak ona şimdi girersem işin içinden çıkamam. Yine de basitçe açıklamam gerekirse, oluşturulan model varsayılan veri ile gözlem sonucu ortaya çıkan veriyi karşılaştırır ve aralarındaki farka bakar. Buna Kalman kazancı adı verilir. Sonrasında elde edilen verileri bir dizi iyileştirme işleminden geçirir. Kazanç değeri ne kadar küçükse. filtre model tahminlerine o kadar yaklaşır. Bu sayede gerçek hayatta sabit olmayan koşullar yüzünden ölçmede çıkan sorunlar ve az veri ile tahmin etmeye çalışılan durumlar ortadan kaldırılabilir.

800px-Kalman_filtresinin_temeli.jpg


Kalman Filtresi, 1960'lardan sonra araç navigasyonu başta olmak üzere (havacılık uygulamaları tipik olmasına rağmen, başka uygulama alanlarında da) kullanılan ve sistemin durumu hakkında optimize edilmiş bir tahmin sağlayan bir algoritmadır. Algoritma, gürültülü bir gözlem veri akışı (tipik olarak, sensör ölçümleri) üzerinde gerçek-zamanlı, özyinelemeli çalışarak hatayı en aza indirecek şekilde filtreleme yapar ve sistemin fiziksel karakteristiklerinin modellenmesi ile üretilen gelecek durumun matematiksel tahminine göre optimize eder. Bu noktada mühendisler Kalman Filtresi kullanmaya karar verdiler ve bu oldukça faydalı oldu. Filtre temelinde, doğru ölçüm aralıkalrında gelen verileri topluyor ve bu gelen verilere göre bir sonraki veriyi kolayca gürültü ve parazitlerden temizleyebiliyordu.

Kalman filtresinin bir diğer özelliği de çalışırken de gelişebilmesidir ki bu filtrenin en güçlü yanlarından birisidir. Yani filtre, modeli ile işlediği veriyi daha sonrasında aynı modeli eğitmek için kullanabiliyordu. Bu, sürekli raporlama yapan sensörler için çok çok kritik bir özelliktir.

Bu filtre Apollo uzay araçlarında da birden fazla alanda kullanılmıştır. Bunlardan birinin kullanım alanı çok basit gibi görünse de, getirisi çok çok fazladır. Apollo programının ilk yıllarında, komuta modülüde kullanılan ana bilgisayara gelen sensör verileri, aşırı derecede gürültü içeriyordu ve bu nedenle sağlıklı çalışamıyordu. Jiroskop, Altimetre ve İvmeölçer gibi sensörlerden gelen bu veriler, elektronik parazit nedeniyle kullanılamaz haldeydi. Buna bir örnek olarak şu grafiği gösterebilirim:

1_Igbnn-DP1v2l-4SOk4fkag.png


Benim Kalman Filtresi ile tanışmam, hareketli radar sistemlerine ve GPS verilerinin iyileştirilmesine dayanıyor. GPS'in kritik olduğu bir sistem ile çalışıyorduk ve sistemin sürekli GPS'ten veri alması gerekiyordu. Ancak burada iki problem vardı:
  • Gelen veri aşırı derecede parazitliydi. (Konumun hassasiyet sınırları içinde sürekli değişmesi),
  • Sİnyalde kopmalar meydana geliyordu.
Haritalardan konumunuza bakarken fark etmişsinizdir, tam konumunuz sürekli olarak bir çember içinde değişir. Bu değişim hata payından çok parazit ile sinyaldeki gürültü ile alakalıdır ve normal bir sistemde üstesinden gelmezsiniz. Ancak bir hava aracı için en küçük sapmalar, hayati öneme sahip olur. Bu nedenle o sapmaları tolere etmeniz gerekir.

Kalman Filtresini kullanarak bir model oluşturduk ve oluşturduğumuz modelin sürekli, bir sonraki GPS konumunu tahmin etmesini sağladık. Bu sayede GPS sinyalinde oluşan kararsızlıkları ve parazitlenlemeri ortadan kaldırdığımız gibi, olası bir sinyal kesilmesinde, önceki verileri kullanarak belirli bir süre idare edebilir hale geldik. Bunu bir örnek fotoğraf ile açıklayayım:

kalman-car-simulator.png


Normalde bir araçta GPS sinyali anlık olarak değil, saniyede bir ya da yarım saniyede bir çalışır. Bu sinyalin çalıştığı noktaları, yeşil ile işaretlenmiş şekilde görebilirsiniz. Yeşil çizgiler ise o noktaları birleştiriyor ve ortaya bir rota çıkıyor. Gördüğünüz gibi, rota facia gibi. :D Ancak bu veriye kalman uygularsanız ve iyileştirme yaparsanız, yeşil noktalara ek olarak sarı noktalar elde edersiniz. Onları birleştirdiğinizde ise, daha doğru görünen ve daha düzgün, yumuşak bir rota ortaya çıkar. :)

Ki, bunun bir benzerini, yine GPS için ama GPS verisi kullanmadan da, aracın diğer sensör bilgilerini kullanarak da yapıyorlar. Yani GPS sinyalini diğer sensör girdileri kullanarak da optimize edebiliyorlar.

Benzer bir mantığı hareketli anten sistemlerinde de kullanmaya çalıştık. Orada da ama antenin sürekli vericiyi takip edebilmesydi. Bu noktada şu türkçe videoyu izlemenizi önerebilirim:

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Faydalı bir makale: Kalman Filter For Dummies

Kalman Filtresi ve Görüntü İşleme

Kalman'ın doğduğu ve sıklıkla kullanıldığı alanlar, büyük bir çoğunlukla navigasyon sistemleri ve hassas senssör sistemleri olmuştur. Yüksek veri akış oranlarının yanında, yüksek hassasiyet ihtiyaçları, sistemlerde filtre kullanmayı zorunlu hale getirmişti. Günümüzde ise artık, Kalman Filtresi'nin Görüntü İşleme uygulamalarında da kullandığını ya da bunun üzerine hipotezler üretildiğini görüyoruz. Şu an Kalman Filtresinin kullanıldığı ya da teorik olarak kullanılabileceği iki alan bulunuyor: Hareketli görselde nesne takibi ve yumuşatma.

Tesla'ların o meşhur sensör videolarını görmüşsünüzdür:

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Mesela sistem, görüntüdeki belli başlı objeleri işaretliyor. Burada araba ya da yayalar gibi hareketli objelerin yerini belirlemekle kalmıyor, hangi yöne gidebilecekleri ya da bir sonraki hareketleri hakkında tahminler de yapıyor. Bu tarz otopilot sistemleri canlı video akışı ya da LIDAR kullanarak çalışır ve bu sensör girdilerinde geleceği olabildiğince doğru bir yüzde de tahmin edebilmek hayati öneme sahiptir. :)

Wilbur-image1.jpg


Kalman filtresi basit olarak bir sensörden gelen veriyi, gürültüden arındırmak için doğmuştu. Ancak günümüzde birçok yerde kullanılıyor. Umarım faydalı bir yazı olmuştur ve umarım, yapay zeka gibi çok dallı konulara ilgi duyan arkadaşlar için olayın kodda değil matematik ve sistemin mantığını oturtmakta bittiğini kavratabilmişimdir. Yapay zeka aslında devasa bir veri yığınıdır. Sizin burada yapmanız gereken doğru formülleri kullanarak o verileri işlemek, sıralamak, çıktıları tekrar işlemek ve bir sonuca varmaktır.

Okuduğunuz için teşekkürler. :)
 

Yeni konular

Geri
Yukarı