Yönlendirilmiş Gradyanların Histogramı (HOG)| Machine Learning [11]
Merhaba , bu yazımda Histogram of Gradients Algoritması hakkında konuşacağız. Keyifli okumalar …
Makine öğrenimi, yıllar geçtikçe hızla gelişen benzersiz bir alandır; algoritmalar genellikle daha verimli yöntemlere yer açmak için yıllar içinde değiştirilir. Oriented Gradients algılama yöntemi Histogramı ( HOG), uzun süredir var olan eski algoritmalardan biridir; ancak onu diğerlerinden ayıran bir şey, günümüzde hala yoğun bir şekilde kullanılmasıdır .
Özellik Tanımlayıcıları
Özellik tanımlayıcıları , yalnızca yararlı bilgileri çıkaran ve resimdeki gereksiz bilgileri göz ardı eden bir görüntünün temsilini ifade eder.
HOG özellik tanımlayıcıları durumunda, görüntü (genişlik x yükseklik x kanallar) kullanıcı tarafından seçilen uzunluk n özellik vektörüne dönüştürülür . Bu görüntüleri görüntülemek zor olsa da, bu görüntüler iyi sonuçlar elde etmek için SVM’ler gibi görüntü sınıflandırma algoritmaları için mükemmeldir.
Peki HOG özellik tanımlayıcısı bu bilgileri nasıl sıralar? Bunu , bir görüntünün özellikleri olarak kullanılan gradyanların histogramını kullanarak yapar . Degradeler, genellikle düz bölgelerden çok daha fazla bilgi paketledikleri için görüntüdeki kenarları ve köşeleri kontrol etmek için (yoğunluk değişikliklerinin olduğu bölgeler aracılığıyla) son derece önemlidir.
Ön işleme
HOG nesne algılaması yapılırken imge sabit bir en-boy oranına sahip olacak şekilde önceden işlenmelidir. Yaygın bir en boy oranı (genişlik: yükseklik) 1: 2'dir, bu nedenle imgelerimiz 100x200, 500x1000 vb. olabilir.
Seçtiğimiz belirli bir görüntü için, istediğimiz bölümü en boy oranına doğru şekilde uyacak ve uzun vadede daha kolay erişilebilirlik sağlayacak şekilde belirlediğimizden emin olunmalıdır .
Degradeleri Hesaplama
HOG özellik tanımlayıcısını yapmak için, algoritmada daha sonra kullanılabilecek histogramı gerçekten sağlamak için ilgili yatay ve dikey gradyanları hesaplamamız gerekir. Bu, görüntüyü bu çekirdekler aracılığıyla basitçe filtreleyerek yapılabilir:
Bunun gibi çekirdekler, belirli bir görüntüdeki kenarları ve önemli noktaları bulmak için genellikle görüntü sınıflandırmasında esas olarak evrişimli sinir ağlarında (Deep Learning’in bir alt dalı) kullanılır. Çekirdekleri daha derinlemesine anlamak istiyorsanız buraya bakabilirsiniz.
Ardından, gradyanların büyüklüğü ve yönü, aşağıdaki formüller kullanılarak kolayca bulunabilir (bunun bir anlamda Kartezyen’den Kutupsal koordinatlara dönüştürüldüğü unutulmamalıdır)
Yukarıdaki formül nasıl görünüyor bilmiyorum ama bu işlemler bilgisayar tarafından gerçekleştirilmekte bu nedenle bu gradyanları kendi başınıza hesaplamaya gerek yoktur. Bu gradyanları hesaplamanın arkasındaki matematiği daha derinlemesine araştırmakla daha çok ilgileniyorsanız, buraya bakabilirsiniz.
Gradyanların nasıl hesaplandığını anlamadıysanız, bu bir sorun değil. Gradyanlardan almamız gereken ana fikir , yoğunlukta keskin bir değişiklik olduğu her yerde gradyan büyüklüğünün artmasıdır. Aşağıdaki resim, bu gradyanlar aracılığıyla görüntülerin kenarları etrafında ateşlenirken bunu yapan en iyi gradyan örneğini vurgular. Gereksiz bilgiler arka plan gibi kaldırılır ve sadece temel kısımlar kalır.
Özetlemek gerekirse burdan, gradyanların, büyüklüğün üç renk kanalından degradelerin büyüklüğünün maksimumuyla hesaplandığı ve açının, değerlendirilen üç kanaldan maksimum gradyana karşılık gelen açıdan hesaplandığı bir büyüklük ve yöne sahip olduğunu çıkardık. Bunlar, önemli bilgileri tespit edip gereksiz parçaları göz ardı eder ve yukarıdakiler gibi görüntüler üretebilir.
Bu Degradelerden Histogram Oluşturma
HOG algoritmasının bir sonraki adımına geçmek için görüntünün hücrelere bölündüğünden emin olunmalıdır, böylece her hücre için gradyan histogramı hesaplanabilir. Örneğin, 64x128 bir görüntünüz varsa, görüntünüzü 8x8 hücrelere bölünür.
Özellik tanımlayıcıları, görüntülerin belirli yamalarının kısa ve öz bir temsiline izin verir; Yukarıdaki örnek ele alınırsa, 8x8'lik bir hücre 128 sayı kullanılarak basitçe açıklanabilir (8x8x2, burada son 2, gradyan büyüklüğü ve yön değerlerinden gelir). Histogramları hesaplamak için bu sayıları daha fazla dönüştürerek, gürültüye karşı çok daha sağlam ve daha kompakt bir görüntü oluşturulur.
Histogram için , her biri 20'lik artışlarla 0–160 arasındaki açılara karşılık gelen dokuz ayrı bölmeye ayrılır. İlgili gradyan büyüklüklerine ve yönlerine sahip bir görüntünün nasıl görünebileceğine ilişkin bir örnek aşağıda verilmiştir .
Şimdi, her pikselin histogramın içinde nereye gideceğine nasıl karar vereceğiz? Seçilen yöne bağlı olarak bir bölme seçilir ve daha sonra bölmenin içine yerleştirilen değer büyüklüğe bağlıdır. Bir piksel, iki bölmenin ortasındaysa, büyüklükleri ilgili bölmeden uzaklığına bağlı olarak buna göre bölünür. Bu işlemi yaptıktan sonra histogram oluşturulabilir ve en fazla ağırlığa sahip kutular rahatlıkla görülebilir.
Blok Normalleştirme (İsteğe bağlı)
Aydınlatma varyasyonları, bu gradyanların nasıl hesaplandığını bozabilecek bir başka önemli faktördür. Örneğin, resim mevcut parlaklığın 1 / 2'si kadar daha koyu ise, gradyan büyüklükleri ve ardından histogram büyüklükleri yarı yarıya azalır. Bu nedenle, tanımlayıcımızın tarafsız ve etkili olması için aydınlatma varyasyonlarından yoksun olmalıdır .
Tipik normalleştirme işlemi, basitçe bir vektörün uzunluğunun büyüklüğüne göre hesaplanması ve ardından bu vektörün tüm elemanlarının uzunluğa bölünmesiyle gerçekleşir. Örneğin, bir [1,2, 3] vektörünüz varsa, temel matematiksel prensipleri kullanan vektörün uzunluğu, 14'ün karekökü olur. Vektörü bu uzunluğa bölerek, yeni olana ulaşırsınız. normalleştirilmiş vektör [0.27, 0.53, 0.80] olur.
Bu normalleştirme işlemi, tercihe bağlı olarak gerçekleştirilebilir (ister 8x8 blok, ister daha büyük bir 16x16 blok üzerinde gerçekleştirilebilir). Yukarıda vurgulanan normalleştirmenin gerçekleştirilebilmesi için önce bu bloklar eleman vektörlerine dönüştürülmelidir.
Görüntü Görselleştirme
Bu görselleştirme, degradelerin nerede değiştiğini anlamak ve nesnelerin görüntünün içinde nerede olduğunu bilmek açısından oldukça yararlıdır.
HOG uygulamaları
Oriented Gradients’in Histogramı nesne algılama yöntemi, şüphesiz gelecekte görüntü tanıma ve yüz algılama alanında büyük ilerlemelere yol açabilir .
Benim en çok heyecanlandığım uygulama alanı otonom kara ve hava araçları alanı. Taşıtları ve nesneleri tespit etmek için bilgisayarla görmeye yönelik birçok farklı yaklaşım mümkün tabiki, bu nedenle kendi kendine giden araçlarında HOG uygulayan pek çok şirket olmaması mantıklı fakat HOG da bu alan için önemli bir alternatif olabilir. Buna rağmen maalesef HOG’un görüntü algılama için nasıl kullanılacağını açıklayan pek çevrimiçi kaynak bulunmamakta (Araştırmalarım sonucunda ,kanımca elde olanlar da pek yeterli değil ).
Örnek Uygulama:
KAYNAKÇA:
Hesaplarım ve İletişim için :
Gmail: batuhandazeee@gmail.com
Github: https://github.com/batuhandaz
Linkedin: https://www.linkedin.com/in/batuhan-daz-599613205/
Bir sonraki yazımda görüşmek üzere, sağlıkla kalın …