SIFT algoritmasını keşfedin. SIFT'in ne olduğunu, ölçekten bağımsız bilgisayarlı görü için güçlü özelliklerini öğrenin. Görüntü işlemenizi geliştirin.
SIFT algoritmasını keşfedin. SIFT'in ne olduğunu, ölçekten bağımsız bilgisayarlı görü için güçlü özelliklerini öğrenin. Görüntü işlemenizi geliştirin.
Günümüzde, telefonlardan ve kameralardan akıllı ev sistemlerine kadar kullandığımız birçok akıllı cihaz, yüzleri, nesneleri ve hatta tüm görsel sahneleri tanıyabilen yapay zeka çözümleriyle birlikte gelir. Bu yetenek, makinelerin görüntüleri ve videoları anlamasını ve yorumlamasını sağlayan bir yapay zeka alanı olan bilgisayarlı görüden gelir.
Örneğin, Eyfel Kulesi'nin herhangi bir açıdan veya mesafeden fotoğrafını çektiğinizde, cihazınız genellikle bilgisayarlı görü kullanarak onu tanıyabilir ve galerinızdeki doğru klasöre yerleştirebilir. Bu basit gibi görünse de, nesneleri tanımak her zaman kolay değildir. Görüntüler boyutlarına, açılarına, ölçeklerine veya aydınlatmalarına bağlı olarak çok farklı görünebilir, bu da makinelerin onları tutarlı bir şekilde tanımlamasını zorlaştırır.
Araştırmacılar, bu sorunu çözmeye yardımcı olmak için Ölçek Değişmez Özellik Dönüşümü veya SIFT adı verilen bir bilgisayar görüşü algoritması geliştirdiler. Bu algoritma, farklı görüntüleme koşullarında nesneleri tespit etmeyi mümkün kılar. David Lowe tarafından 1999'da oluşturulan SIFT, bir görüntü yeniden boyutlandırıldığında, döndürüldüğünde veya farklı şekilde aydınlatıldığında bile tanınabilir kalan köşeler, kenarlar veya desenler gibi bir görüntüdeki benzersiz anahtar noktaları bulmak ve tanımlamak için tasarlanmıştır.
Ultralytics YOLO11 gibi derin öğrenme odaklı bilgisayar görüşü modelleri popüler hale gelmeden önce, SIFT bilgisayar görüşünde yaygın olarak kullanılan bir teknikti. Bir fotoğrafta belirli bir öğeyi tanımlamayı amaçlayan nesne tanıma ve fotoğrafların örtüşen görüntü özelliklerini bularak hizalandığı görüntü eşleştirme gibi görevler için standart bir yaklaşımdı.
Bu makalede, SIFT'i ne olduğuna dair hızlı bir genel bakışla, yüksek düzeyde nasıl çalıştığı ve bilgisayarlı görünün evriminde neden önemli olduğu ile inceleyeceğiz. Haydi başlayalım!
Bir görüntüde, bir nesne birçok farklı şekilde görünebilir. Örneğin, bir kahve kupası yukarıdan, yandan, parlak güneş ışığında veya sıcak bir lamba altında fotoğraflanabilir. Aynı kupa, kameraya yakın olduğunda daha büyük ve daha uzakta olduğunda daha küçük de görünebilir.
Tüm bu farklılıklar, bir bilgisayara bir nesneyi tanımayı öğretmeyi karmaşık bir görev haline getirir. Nesne tespiti olarak bilinen bu bilgisayarlı görü görevi, Görüntü İşleme Yapay Zeka modellerinin boyutları, açıları veya aydınlatma koşulları değiştiğinde bile nesneleri doğru bir şekilde tanımlamasını ve konumlandırmasını gerektirir.
Bunu mümkün kılmak için, bilgisayarla görü, özellik çıkarımı veya tespiti adı verilen bir sürece dayanır. Bir model, tüm görüntüyü aynı anda anlamaya çalışmak yerine, açılar, ölçekler ve aydınlatma koşulları genelinde tanınabilir kalan keskin köşeler, benzersiz desenler veya dokular gibi belirgin görüntü özelliklerini arar.
Özellikle, Ölçek Değişmez Özellik Dönüşümü veya SIFT'in yapması için tasarlandığı şey budur. SIFT, görüntülerin nasıl yakalandığı önemli olmaksızın, görüntüdeki nesneleri güvenilir bir şekilde tanımlayabilen bir özellik algılama ve açıklama algoritmasıdır.
SIFT algoritması, nesne tanıma için kullanışlı olmasını sağlayan birkaç önemli özelliğe sahiptir. Temel özelliklerden biri, ölçek değişmezliği olarak adlandırılır. Bu, SIFT'in bir nesnenin çeşitli bölümlerini, büyük görünüp kameraya yakın olsa da, küçük ve uzakta olsa da tanıyabileceği anlamına gelir. Nesne tamamen görünür olmasa bile, algoritma aynı anahtar noktaları yine de seçebilir.
Bunu, ölçek-uzay teorisi adı verilen bir kavram kullanarak yapar. Basitçe söylemek gerekirse, görüntünün birden çok sürümünü oluşturmak için farklı seviyelerde bulanıklaştırılır. SIFT daha sonra görüntünün boyutu veya keskinliği nasıl değişirse değişsin aynı kalan desenleri ve ayrıntıları bulmak için bu sürümleri inceler.
Örneğin, birkaç metre öteden fotoğraflanan bir trafik işareti, uzaktan çekilen aynı işaretten çok daha büyük görünecektir, ancak SIFT yine de aynı ayırt edici özellikleri algılayabilir. Bu, işaret çok farklı ölçeklerde görünse bile iki görüntüyü doğru bir şekilde eşleştirmeyi mümkün kılar.
Görüntülerdeki nesneler de döndürülmüş, hatta bazen baş aşağı görünebilir. SIFT, bunu dönme değişmezliği adı verilen bir özellik aracılığıyla ele alır. Algıladığı her köşe noktası için, algoritma yerel görüntü gradyanlarına dayalı olarak tutarlı bir yön atar. Bu sayede, aynı nesne nasıl döndürülürse döndürülsün tanınabilir.
Bunu, her bir anahtar noktayı hangi yöne baktığını gösteren küçük bir okla işaretlemek gibi düşünebilirsiniz. SIFT, özellikleri bu yönlere hizalayarak, nesne döndürüldüğünde bile anahtar noktaların doğru şekilde eşleşmesini sağlar. Örneğin, bir manzara fotoğrafında yakalanan bir simge yapı, fotoğrafı kameranın açısı eğik olacak şekilde çekilse bile doğru bir şekilde tanımlanabilir.
Boyut ve döndürmenin ötesinde, görüntüler aydınlatma değişiklikleri gibi başka şekillerde de değişebilir. Bir nesne üzerindeki aydınlatma parlaktan loşa geçebilir, kamera açısı hafifçe kayabilir veya görüntü bulanık veya gürültülü olabilir.
SIFT, bu tür değişiklikleri kaldırabilecek şekilde tasarlanmıştır. Bunu, aydınlatmadaki değişikliklerden veya küçük bakış açısı kaymalarından daha az etkilenen, belirgin ve yüksek kontrastlı köşe noktalarına odaklanarak yapar. Sonuç olarak, SIFT, koşullar değiştiğinde genellikle başarısız olan basit kenar veya köşe algılama yöntemlerinden daha güvenilir olma eğilimindedir.

Bir galerideki bir tabloyu düşünün. Yumuşak gün ışığında, parlak yapay spot ışıkları altında ve hatta elde taşınan bir kameradan kaynaklanan hafif hareket bulanıklığı ile fotoğraflandığında bile tanınabilir. Anahtar noktalar, bu farklılıklara rağmen doğru eşleşme için yeterince kararlıdır.
Şimdi de SIFT algoritmasının nasıl çalıştığına bir göz atalım. Bu süreç dört ana adıma ayrılabilir: anahtar nokta tespiti, anahtar nokta yerelleştirmesi, yönlendirme ataması ve anahtar nokta açıklaması.
İlk adım, bir nesneyi izlemeye veya tanımaya yardımcı olan, köşeler veya dokudaki keskin değişiklikler gibi görüntüdeki belirgin noktalar olan anahtar noktaları bulmak ve tespit etmektir.
Bu potansiyel köşe noktalarının her boyutta tanınabilmesini sağlamak için SIFT, ölçek uzayı adı verilen bir yapı oluşturur. Bu, orijinal görüntüyü kademeli olarak bir Gauss filtresiyle bulanıklaştırarak (bir yumuşatma tekniğidir) ve sonuçları oktav adı verilen katmanlar halinde gruplandırarak oluşturulan bir görüntü koleksiyonudur. Her oktav, aynı görüntüyü artan bulanıklık seviyelerinde içerirken, bir sonraki oktav görüntünün daha küçük bir versiyonudur.
SIFT, bir bulanık görüntüyü diğerinden çıkararak, parlaklık değişimlerinin keskin olduğu alanları vurgulayan Gaussların Farkını (DoG) hesaplar. Bu alanlar, görüntü yakınlaştırıldığında veya uzaklaştırıldığında tutarlı kaldıkları için aday anahtar noktaları olarak seçilir.

Tüm aday anahtar noktaları kullanışlı değildir, çünkü bazıları zayıf veya kararsız olabilir. Bunları iyileştirmek için SIFT, bir anahtar noktanın tam konumunu daha yüksek doğrulukla tahmin etmeye yardımcı olan Taylor Serisi Genişletmesi adı verilen matematiksel bir yöntem kullanır.
Bu adım sırasında, güvenilir olmayan noktalar kaldırılır. Çevrelerine karışan düşük kontrasta sahip anahtar noktalar ve ayrıca çok kolay kayabildikleri için doğrudan kenarlarda bulunanlar atılır. Bu filtreleme adımı, yalnızca en kararlı ve ayırt edici anahtar noktaları geride bırakır.
Kararlı anahtar noktalar belirlendikten sonra, SIFT bunları döndürmeye karşı değişmez hale getirir, bu da görüntünün yana veya baş aşağı çevrilmesi durumunda bile eşleştirilebileceği anlamına gelir. Bunu yapmak için SIFT, her anahtar noktanın etrafındaki parlaklığın nasıl değiştiğini analiz eder; bu, gradyan olarak bilinir. Gradyanlar, piksel yoğunluğundaki değişimin hem yönünü hem de gücünü gösterir ve birlikte noktanın etrafındaki yerel yapıyı yakalar.
SIFT, her bir köşe noktası için çevreleyen bir bölgedeki gradyanları dikkate alır ve bunları yönelimlerin bir histogramında gruplandırır. Bu histogramdaki en yüksek tepe, yoğunluk değişiminin baskın yönünü gösterir ve bu daha sonra köşe noktasının yönelimi olarak atanır. Yoğunluğun nerede değiştiğini gösteren gradyan yönleri ve bu değişimin ne kadar güçlü olduğunu gösteren gradyan büyüklükleri, bu histogramı oluşturmak için kullanılır.
Neredeyse aynı derecede güçlü başka zirveler varsa, SIFT aynı anahtar noktasına birden fazla yön atar. Bu, nesneler alışılmadık açılarda göründüğünde önemli özelliklerin kaybolmasını önler. Her anahtar noktasını yönüyle hizalayarak SIFT, bir sonraki adımda oluşturulan tanımlayıcıların tutarlı kalmasını sağlar.
Başka bir deyişle, aynı nesnenin iki görüntüsü farklı şekilde döndürülmüş olsa bile, yönlendirmesi hizalanmış anahtar noktalar yine de doğru şekilde eşleşecektir. Bu adım, SIFT'e rotasyonu işleme konusunda güçlü bir yetenek kazandıran ve onu önceki özellik algılama yöntemlerinden çok daha sağlam kılan şeydir.

SIFT'teki son adım, her bir anahtar noktanın diğer görüntülerde tanınabilmesi için bir açıklamasını oluşturmaktır.
SIFT, bunu her köşe noktası etrafındaki küçük bir kare yamaya bakarak başarır, bu yama yaklaşık 16'ya 16 piksel boyutundadır. Bu yama öncelikle köşe noktasının yönüne hizalanır, böylece döndürme işleminden etkilenmez. Yama daha sonra 4'e 4 daha küçük karelerden oluşan bir ızgaraya bölünür.
SIFT, her küçük karede parlaklığın farklı yönlerde nasıl değiştiğini ölçer. Bu değişiklikler, hangi yönlerin en yaygın olduğunu gösteren bir grafik gibi bir histogram adı verilen bir şeyde saklanır. Her kare kendi histogramını alır ve 16 kare birlikte 16 histogram üretir.
Son olarak, bu histogramlar toplamda 128 sayıdan oluşan tek bir listede birleştirilir. Bu listeye özellik vektörü denir ve anahtar nokta için bir parmak izi gibi davranır. Noktanın etrafındaki benzersiz dokuyu ve yapıyı yakaladığı için, bu parmak izi aynı anahtar noktanın farklı görüntülerde, yeniden boyutlandırılmış, döndürülmüş veya farklı şekilde aydınlatılmış olsa bile eşleştirilmesini mümkün kılar.

SIFT'in ne olduğunu ve nasıl çalıştığını daha iyi anladığımıza göre, bilgisayarlı görüdeki gerçek dünya uygulamalarından bazılarını keşfedelim.
SIFT'in ana kullanım alanlarından biri, nesne tanıma ve tespittir. Bu, bir bilgisayara, nesneler her zaman aynı görünmese bile, görüntüdeki nesneleri tanımasını ve konumlandırmasını öğretmeyi içerir. Örneğin, SIFT bir kitabı kameraya yakın, daha uzakta veya bir açıyla döndürülmüş olsa bile algılayabilir.
Bunun işe yaramasının nedeni, SIFT'in son derece ayırt edici ve kararlı olan anahtar noktaları çıkarmasıdır. Bu anahtar noktalar SIFT tanımlayıcılarıyla eşleştirildiğinde, farklı görüntülerde aynı nesneyi eşleştirmek için güvenilir bir yol sağlayan SIFT özelliklerini oluştururlar. Bu özellikler, nesnenin boyutunun, konumunun veya yönünün değiştiği durumlarda bile görüntüler arasında güvenilir özellik eşleşmesini sağlayan, nesnenin tutarlı kalan benzersiz ayrıntılarını yakalar.

Derin öğrenme popüler hale gelmeden önce, SIFT, nesne tanıma sistemleri oluşturmak için en güvenilir yöntemlerden biriydi. Genellikle önemli miktarda işlem kaynağı gerektirmesine rağmen, büyük görüntü veri kümelerinde nesneleri eşleştirmeyi gerektiren araştırma ve uygulamalarda yaygın olarak kullanıldı.
SIFT ayrıca, birkaç resmin bir araya getirilmesiyle oluşturulan geniş fotoğraflar olan panoramik görüntüler oluşturmak için de kullanılabilir. SIFT kullanılarak, farklı görüntülerin örtüşen kısımlarında belirgin köşe noktaları bulunur ve daha sonra birbirleriyle eşleştirilir. Bu eşleşmeler, fotoğrafların nasıl hizalanması gerektiği konusunda dikiş sürecine rehberlik eden bağlantılar gibi davranır.
Eşleştirme tamamlandıktan sonra, genellikle bir görüntüyü diğerine eşleyen geometrik dönüşümleri kullanan dikiş algoritmaları, doğru hizalamayı hesaplamak için kullanılabilir. Görüntüler daha sonra birleştirilir, böylece dikişler kaybolur. Sonuç, birden çok çekimden oluşturulmuş olsa bile, tek bir geniş fotoğraf gibi görünen kusursuz bir panoramadır.
SIFT'in bir diğer ilginç uygulaması da, farklı açılardan çekilen birden fazla 2D fotoğrafın bir üç boyutlu model oluşturmak için birleştirildiği 3D rekonstrüksiyonundadır. SIFT, bu görüntülerdeki aynı noktaları bularak ve eşleştirerek çalışır.
Eşleşmeler yapıldıktan sonra, bu noktaların 3B konumları, farklı bakış açılarından derinliği hesaplayan bir yöntem olan üçgenleme kullanılarak tahmin edilebilir. Bu işlem, bir sahnenin 3B şeklini fotoğrafları çeken kameraların konumlarıyla birlikte tahmin etmek için birden çok örtüşen görüntüyü kullanan bir teknik olan hareketten yapı (SfM) bölümünün bir parçasıdır.
Sonuç genellikle bir 3B nokta bulutudur; bu, nesnenin veya ortamın ana hatlarını çizen uzaydaki bir nokta koleksiyonudur. SIFT, hareketten yapıyı pratik hale getiren ilk araçlardan biriydi. Daha yeni teknikler daha hızlı ve daha yaygın olsa da, doğruluk hızdan daha önemli olduğunda SIFT uygulanmaya devam ediyor.
SIFT ayrıca özellikle görsel SLAM'de (Eş Zamanlı Konum Belirleme ve Haritalama) robotikte de kullanılmıştır. SLAM, bir robotun aynı anda çevresinin haritasını çıkarırken nerede olduğunu anlamasını sağlar.
SIFT köşe noktaları, bir robotun aydınlatma veya açılar değiştiğinde bile kareler arasında tanıyabileceği güvenilir işaretler görevi görür. Robot, bu işaretleri izleyerek konumunu tahmin edebilir ve haritasını anında güncelleyebilir. Günümüzde robotikte daha hızlı özellik dedektörleri daha sık kullanılsa da, SIFT erken SLAM sistemlerinde önemli bir rol oynamıştır ve sağlamlığın hızdan daha kritik olduğu durumlarda hala önemlidir.
SIFT algoritması bilgisayarla görmede yaygın olarak kullanılmış ve güvenilir bir yöntem olarak bilinmesine rağmen, bazı ödünleşimlerle de birlikte gelir. Bu nedenle, bir proje için doğru olup olmadığına karar vermeden önce artılarını ve eksilerini tartmak önemlidir. Ardından, temel güçlü ve sınırlı yönlerini inceleyelim.
SIFT algoritmasını kullanmanın bazı avantajları şunlardır:
SIFT algoritmasını kullanmanın bazı dezavantajları şunlardır:
SIFT'in artılarını ve eksilerini keşfederken, sınırlamalarının çoğunun daha gelişmiş tekniklerin önünü açtığını fark edebilirsiniz. Özellikle, evrişimli sinir ağları (CNN'ler) güçlü bir alternatif olarak ortaya çıktı.
CNN, insan görsel sisteminin nasıl çalıştığından ilham alan bir derin öğrenme modeli türüdür. Bir görüntüyü katmanlar halinde işler, kenarlar ve dokular gibi basit desenlerden başlayarak, kademeli olarak daha karmaşık şekil ve nesnelere ulaşır. SIFT'in el yapımı özellik kurallarının aksine, CNN'ler özellik temsillerini doğrudan verilerden öğrenir.
Veriye dayalı bu öğrenme, CNN'lerin tanımlayıcı eşleştirme ve sınıflandırma görevlerinde SIFT'ten daha iyi performans göstermesi anlamına gelir. CNN'ler ayrıca daha etkileyici ve sağlamdır, görsel verilerin değişkenliğine ve karmaşıklığına daha iyi uyum sağlar.
Örneğin, CNN tabanlı modeller, binlerce kategori arasında milyonlarca etiketli görüntü içeren devasa bir kıyaslama veri kümesi olan ImageNet'te çığır açan sonuçlar elde etti. Algoritmaların nesneleri ne kadar iyi tanıyabildiğini ve sınıflandırabildiğini test etmek için tasarlanan ImageNet, eski özellik tabanlı yöntemler ile derin öğrenme arasındaki boşluğu vurgulayabilmektedir.
CNN'ler, SIFT'in genellikle zorlandığı değişen aydınlatma koşulları, farklı bakış açıları ve hatta kısmen gizlenmiş nesneleri tanımalarına olanak tanıyan, çok daha zengin ve esnek temsiller öğrenerek SIFT'i hızla geride bıraktı.
Ölçek Değişmez Özellik Dönüşümü (Scale Invariant Feature Transform) algoritması, bilgisayarlı görme tarihinde önemli bir yere sahiptir. Değişen ortamlarda bile özellikleri tespit etmek için güvenilir bir yol sağlamış ve günümüzde kullanılan birçok yöntemi etkilemiştir.
Daha yeni teknikler daha hızlı ve daha verimli olsa da, SIFT bunların temelini oluşturdu. SIFT, günümüzün bilgisayar görüşündeki ilerlemesinin nerede başladığını ve en son teknolojiye sahip yapay zeka sistemlerinin ne kadar ilerlediğini gösteriyor.
Küresel topluluğumuza katılın ve bilgisayarlı görü hakkında daha fazla bilgi edinmek için GitHub depomuza göz atın. Tarımda AI ve perakendede bilgisayarlı görü gibi yenilikleri keşfetmek için çözümler sayfalarımızı inceleyin. Lisanslama seçeneklerimize göz atın ve kendi bilgisayarlı görü modelinizi oluşturmaya başlayın.