Nedir Bu Bilgisayarlı Görü: İnsan Gözü ile Görmek, Makine Beyniyle Anlamak
Bir fotoğrafa veya bir nesneye baktığımızda nasıl görürüz ya da gördüğümüz bu şeyin ne olduğuna nasıl karar veririz? İnsan gözü aslında bir görüntüye veya bir nesneye baktığında çok basit şeyler görür: renkler, şekiller, nesneler… Hatta çoğu zaman beynimiz bunu düşünmeden yapar. Bizim için görüntü bir "anlam" taşır; bu sayede bir yüzü, bir arabayı ya da bir manzarayı anında ayırt edebiliriz.
Peki ya bilgisayarlar? Onlar için durum çok farklıdır. Bilgisayarın bir fotoğrafa baktığında gördüğü şey, milyonlarca pikselden oluşan dev bir sayısal matristir. Her bir pikselin bir renk değeri vardır fakat bu bilgiler bilgisayar için tek başına bir anlam ifade etmez. İşte tam bu noktada bilgisayarlı görü alanı bu boşluğu doldurmaya, yani işlenmemiş piksel yığınlarını anlamlı bilgiye dönüştürmeye çalışır.
Nedir Bu Bilgisayarlı Görü: İnsan Gözü ile Görmek, Makine Beyniyle Anlamak
Bir fotoğrafa veya bir nesneye baktığımızda nasıl görürüz ya da gördüğümüz bu şeyin ne olduğuna nasıl karar veririz? İnsan gözü aslında bir görüntüye veya bir nesneye baktığında çok basit şeyler görür: renkler, şekiller, nesneler… Hatta çoğu zaman beynimiz bunu düşünmeden yapar. Bizim için görüntü bir "anlam" taşır; bu sayede bir yüzü, bir arabayı ya da bir manzarayı anında ayırt edebiliriz.
Peki ya bilgisayarlar? Onlar için durum çok farklıdır. Bilgisayarın bir fotoğrafa baktığında gördüğü şey, milyonlarca pikselden oluşan dev bir sayısal matristir. Her bir pikselin bir renk değeri vardır fakat bu bilgiler bilgisayar için tek başına bir anlam ifade etmez. İşte tam bu noktada bilgisayarlı görü alanı bu boşluğu doldurmaya, yani işlenmemiş piksel yığınlarını anlamlı bilgiye dönüştürmeye çalışır.
Görüntü İşleme Nedir?
Görüntü işleme, bir fotoğrafı ya da görseli kullanacağımız amaç doğrultusunda bilgisayarın daha rahat anlayabilmesi için çeşitli işlemlerden geçirerek istediğimiz hale dönüştürmektir. Genelde görüntü işleme teriminin karıştırıldığı nokta onun “Ne görüyorum?” sorusuna çözüm bulduğunu sanmamızdır, oysa görüntü işleme “Görüntüyü nasıl daha iyi hale getiririm?” sorusuna odaklanır. Kontrastı artırmak, gürültüyü azaltmak, kenarları belirginleştirmek ya da görüntünün boyutları ile oynamak gibi işlemlerin tamamı bu kategoriye alanına girer. Yani görüntü işleme, görüntünün kendisiyle ilgilenir; içeriğin ne olduğuyla değil, nasıl göründüğü ile uğraşır.
Görüntü Eşleme Nedir?
Şimdi bu sorduğumuz sorulara biraz daha farklı bir bakış açısı katarak “Elimde iki farklı fotoğraf var. Bunlar aynı şeyi mi gösteriyor?” sorusuna odaklanalım. İşte bu soru görüntü eşlemenin temel sorusudur. Görüntü eşleme, iki görüntü arasındaki benzerlik veya aynılık ilişkisini inceler. Bu ilişki her zaman göründüğü kadar basit değildir. Bazen nesnenin farklı açılardan görünmesi, bazen farklı ışık altında veya farklı bir mekanlarda bulunması, bazen de aranan nesnenin büyük bir görüntü içinde bulunmasıdır.
Peki madem bilgisayar için bu pikseller tek başına bir anlam ifade etmiyordu, o halde görüntü eşleme nasıl çalışıyor. Tipik bir klasik eşleme sistemi şu aşamalardan oluşur:
Anahtar noktalar bulunur.
Bu noktaların çevresi descriptor (tanımlayıcı özellik) ile tanımlanır.
İki görüntüdeki descriptor'lar karşılaştırılır.
Güvenilir olmayan eşleşmeler elenir.
Kalan eşleşmeler geometrik olarak doğrulanır.
Şimdi bu aşamaları inceleyelim.
1. Anahtar Noktaların Bulunması (Keypoint Detection)
Bu aşamada öncelikle görüntünün ayırt edici noktalarını kullandığımız algoritmalarla belirleriz. Bu noktalar genelde düz bir duvarın ortasındaki bir piksel gibi komşularıyla neredeyse tamamen aynı olan noktalardan ziyade; kenarlar, köşeler ya da blob’lardır. Bunun nedeni bir kenar kesişimi ya da karanlık bir alan üzerindeki aydınlık bir bölgenin(blob) çok daha belirgin ve ayırt edici olmasıdır. Bu tarz noktalara keypoint (anahtar nokta) denir.
Bu noktaları tespit etmek için farklı yaklaşımlar kullanabiliriz. Örneğin Harris Köşe Dedektörü. Bu yöntem görüntüdeki parlaklık değişimlerini inceleyerek hangi bölgelerin "köşe" olduğunu matematiksel olarak hesaplar. SIFT (Scale-Invariant Feature Transform) ise görüntüyü farklı ölçeklerde tarayarak, hem ölçekten hem de dönüşten etkilenmeyen noktalar bulur; bu sayede aynı nesne farklı boyutlarda ya da açılarda görünse bile aynı noktaları tekrar tespit edebilir. ORB (Oriented FAST and Rotated BRIEF) gibi daha güncel ve hızlı algoritmalar ise daha çok gerçek zamanlı uygulamalar için tercih edilir, çünkü hem hesaplama yükü açısından hafiftir hem de yeteri kadar güvenilir sonuçlar verir.


(SIFT ile dönüştürülen görsel)
2. Descriptor'ların Çıkarılması
Bir anahtar noktayı bulduk diyelim, peki bu tek başına yeterli mi? Tabii ki hayır; çünkü herhangi bir köşeyi veya blob’u tespit etmek, o köşenin veya blob’un başka bir görüntüde karşılığı olduğu anlamına gelmez. Tam olarak bu kısımda descriptor devreye girer. Her anahtar noktanın etrafındaki küçük bir bölge incelenir ve bu bölgenin görsel özellikleri sayısal bir vektöre, yani descriptor'a dönüştürülür. Descriptor, o noktanın ayırt edici özelliği, bir nevi "parmak izi"dir. Parlaklık değişimleri, kenar yönleri veya doku gibi bilgileri sayısal vektör şeklinde kodlar. Böylece iki farklı görüntüdeki iki nokta, görsel olarak birbirine ne kadar benziyorsa, bu vektörler arasındaki matematiksel mesafe de o kadar küçük olur.
3. Descriptor'ların Karşılaştırılması (Matching)
Anahtar noktalar ve descriptor'ları çıkardık, şimdi sıra iki görüntüdeki noktaları birbiriyle eşleştirmeye geldi. Bunun için yapılabilecek en basit yöntem brute-force (kaba kuvvet) eşlemedir: birinci görüntüdeki her descriptor, ikinci görüntüdeki tüm descriptor'larla karşılaştırılır ve en yakın (en benzer) olan çift eşleşme olarak kabul edilir. Bu yöntem çok kullanışlı değildir çünkü görüntü ve dolayısıyla anahtar nokta sayısı arttıkça fazlasıyla yavaşlar. Bu durumda FLANN (Fast Library for Approximate Nearest Neighbors) gibi yaklaşık en yakın komşu arama yöntemleri devreye girer ve işlem çok daha hızlı hâle getirilir.

(FLANN çıktısı)
4. Güvenilir Olmayan Eşleşmelerin Elenmesi
Bu aşamalara kadar yapılan işlemler sonucunda pek çok eşleme elde ettik.Peki elde edilen bu eşlemelerin hepsi doğru mudur? Hayır, bazı noktalar pek tabii tesadüfen birbirine benzer görünebilir. Bu yanlış eşleşmeleri ayıklamak kullanılan pek çok yöntem vardır. Biz burada yaygın olarak kullanılan yöntemlerden biri olan “oran testi (ratio test)”nden bahsedeceğiz. Bu testte, bir noktanın en yakın iki komşusu karşılaştırılır: eğer en yakın komşu, ikinci en yakın komşudan belirgin şekilde daha yakınsa, bu eşleşme güvenilir kabul edilir. Aradaki fark çok azsa, o eşleşmenin rastgele olma ihtimali yüksektir ve elenir.

(Lowe's ratio test)
5. Geometrik Doğrulama
Son adımda, geriye kalan eşleşmelerin gerçekten tutarlı bir geometrik dönüşümü temsil edip etmediği kontrol ederiz. İki görüntü aynı nesneyi gösteriyorsa, eşleşen noktalar arasında belirli bir matematiksel dönüşüm (örneğin bir homografi ya da temel matris) bulunmalıdır. Bu aşamada çoğunlukla RANSAC (Random Sample Consensus) algoritmasını kullanırız. RANSAC, eşleşmeler arasından rastgele küçük bir grup seçer ve bu gruba uyan bir dönüşüm modeli kurar, ardından diğer tüm eşleşmelerin bu modele ne kadar uyduğuna bakar. Modelle uyuşmayan, yani "aykırı değer(outlier)" olan eşleşmeler elenir; geriye kalanlar ise gerçek ve güvenilir eşleşmeler olarak kabul edilir.
Modern Bilgisayarlı Görü
Anlattığımız bu beş adımlı süreç aslında klasik bilgisayarlı görünün temelini oluşturur ve her aşama elle tasarlanmış kurallara dayanır. Yani hangi noktanın "ilginç" sayılacağına, hangi özelliklerin descriptor'a dahil edileceğine bir mühendis karar verir. Günümüzde ise bu adımların büyük bölümü, verilerden kendi kendine öğrenen derin öğrenme modelleriyle yaparız. Bunun temelinde CNN (Convolutional Neural Network - Evrişimli Sinir Ağı) adı verilen mimari yatar. CNN'ler, görüntüyü katmanlarıyla işleyerek önce basit özellikleri (kenarlar, renk geçişleri), sonra daha karmaşık özellikleri (şekiller, doku desenleri) ve en sonunda da nesnelerin kendisini öğrenir. Yani klasik yöntemlerde bizim elle tanımladığımız "descriptor" kavramını, CNN kendi eğitim süreci içinde otomatik olarak keşfeder.
Bu yaklaşımın günümüzde en elle tutulur örneklerinden biri YOLO (You Only Look Once) algoritmasıdır. YOLO, bir görüntüyü tek bir seferde işleyerek içindeki tüm nesneleri hem tespit eder hem de sınıflandırır. Yani adından da anlaşılacağı gibi görüntüye yalnızca "bir kez bakarak" hızlı ve gerçek zamanlı sonuçlar üretir. Yukarıda bahsettiğimiz klasik eşleme yöntemlerinde olduğu gibi önce anahtar nokta arayıp sonra bu noktaları tek tek karşılaştırmak yerine, YOLO görüntünün tamamını bir CNN üzerinden geçirir ve direkt olarak "burada bir araba var, şurada bir insan var" gibi sonuçlar üretir. Bu da onu özellikle nesne tespiti gerektiren sistemlerde -otonom araçlar, güvenlik kameraları, kalite kontrol sistemleri gibi- klasik yöntemlere kıyasla çok daha pratik ve kullanışlı hale getirir.

Elbette bu, klasik yöntemlerin tamamen gereksizleştiği anlamına gelmez. CNN tabanlı modellerin eğitilmesi büyük miktarda veri ve işlem gücü gerektirir. Oysa klasik yöntemler daha az kaynakla, daha yorumlanabilir bir şekilde çalışabilir. Bundan dolayı günümüzde birçok sistem, iki yaklaşımı da ihtiyacına göre bir arada kullanır.
Sonuç Olarak
Gördüğümüz gibi, bir insanın anında yaptığı bu görme işlemi aslında bir bilgisayarın oldukça katmanlı bir mühendislik sürecidir. Anahtar noktaların bulunmasından ham piksellerden anlamlı bilgiye ulaşmaya kadar ilerlediğimiz bu süreç, günümüzde derin öğrenme tabanlı yaklaşımlarla daha da güçlenmiş olsa da, temel mantık hâlâ aynıdır: bilgisayara "görmeyi" değil, gördüğü şeyi "anlamlandırmayı" öğretmek.
-Ömer Çıtırık
Kategoriler
Son Gönderiler
-
Nedir Bu Bilgisayarlı Görü: İnsan Gözü ile Görmek, Makine Beyniyle Anlamak -
Bırakın Veri Konuşsun: Makine Öğrenmesi Modeli Kurmadan Önce Verinizi Gerçekten Tanıyor musunuz? -
Yapay Zekâ ve Çocuklar: Fırsatlar, Riskler ve Ebeveynlere Öneriler -
Çocukların Sosyal Medya Kullanımının Zararları -
Bilgi Güvenliği Nedir? -
Webinar Nedir? İş Dünyasına Faydaları Nelerdir?