Makale İncelemesi: Hareket Tanıma için Gösterim Akış Yaklaşımı

“Hareket etmezsen, zincirlerini fark edemezsin.” — Tolstoy

Ayyüce Kızrak, Ph.D.
7 min readMar 22, 2020

Bu yazıda CVPR2019'da sunulan Representation Flow for Action Recognition makalesinin incelemesini yapacağım. Görüntülerde hareket tespitini yapmak için uzun yıllardır kullanılan optik akış algoritmasından esinlenerek yeni bir evrişimli katman yapısı önerilmektedir. Yine çok basit ve dahice bir fikir ile karşı karşıyayız. Bu yeni fikir gösterim akış (representation flow) olarak tanımlanıyor.

Bu çalışmada deneyler ‘Tiny-Kinetics’ veri seti ile yapılmış ve çoğu deney için yazarlar 16✖112✖112 boyutlarında ResNet-34 kullanmıştır. ResNet modeli hakkında detaylı bilgiye buradan ulaşabilirsiniz 🤓

🚣🏻 Optik Akış Algoritması ile Yumuşak Bir Giriş

Video işlemede en önemli konulardan biri de çerçeveler (frame) arasındaki değişimleri yakalayabilmektir. Seçilen bir çerçevedeki bir noktanın bir sonraki çerçevede de olup olmadığı veya nerede olduğu bilgisi önemlidir. Bu probleme çözüm üretebilmek için çerçeveler arasındaki farklar ve benzerlikler incelenerek çözüm varsayımlarında bulunmak mümkündür.

🔸 Renk ve parlaklık bilgisinin değişmediği:

noktasının parlaklık değerinin, ardışık iki çerçeve arsında değişim göstermediği çerçeveler arasında geçen sürenin çok kısa olması dolayısıyla kabul edilebilirdir. Fakat yine de bu varsayım kesin doğru değildir. Doğruluğunun kesin olması için nesnelerin hareketsiz ve kamera örnekleme oranı sonsuz küçük seviyede olmalıdır.

🔸 Görüntüde küçük hareketlerin var olduğu varsayımı, ilk varsayım ile çok yakın bir sebebe dayanmaktadır. İlk çerçevede seçilen noktanın, ikinci çerçevede ilk seçilen koordinata çok yakın bir yerlerde olduğu fikri benimsenmiştir. Bunun nedeni yine iki çerçeve arasında geçen sürenin mili-saniyeler mertebesinde olmasıdır.

🔸 Görüntüde seçilen bir noktanın komşu piksellerle birlikte bir hareket gerçekleştirdiği varsayımı bir noktanın bağımsız olamamasına dayanmaktadır. Her bir nokta bir nesneye ait ve nesne bütünüyle hareket etmektedir. Dolayısıyla nesneleri oluşturan noktalar grup davranışı sergilemektedir. Bununla birlikte grup oluşturan noktaların hızları da eşit varsayılmaktadır.

Bu bağlamda 1. Dereceden Taylor açılımı yapmak gerekir.

Optik akış eşitliği:

Optik Akış Görselleştirmesi

1984 yılında Lucas-Kanade önerisine göre;

Piramit yöntemi optik akışı farklı çözünürlüklerde hesaplar.

Ayrıca optik akış algoritması uygulanırken alt örnekleme yaparak, görüntüdeki büyük değişimleri küçülmüştür ve muhtemel değişimin yerini bulup sonra orijinal görüntüye dönüş yapılmaktadır. Küçültme oranı kadar büyütüldüğünde algoritmanın başında bulunması daha zor olan değişimin bulunması kolaylaştırılmış olur. Tüm bu bilgilere ek olarak, görüntü üzerindeki çok küçük ve işlemlerde göz ardı etmek istenilen hareketli bölgeler bulunabilir. Örneğin; yaprak, ağaç, bulut ve su hareketleri gibi bunları görüntünün ortalaması alınarak orijinal görüntüden çıkarmak suretiyle ortadan kaldırmak basit ve etkili bir yöntemdir. Bu arka plan çıkarma işleminde kullanılacak ortalama alma işleminde Gauss Karışım Modeli-GKM (Gaussian Mixture Model-GMM) en çok tercih edilen yöntemdir. Ortalama, varyans ve normal dağılımına göre hesap yapılmaktadır.

Optik akışın önemli bir özellik olduğu bilinmekle birlikte, etkinlik tanıma için optimize edilmiş akışlar genellikle gerçek optik akıştan farklıdır, bu da hareket temsillerinin uçtan uca öğrenmesinin yararlı olduğunu gösterir. Ayrıca, hesaplama yükü de fazladır.

Yazarlar, optik akış algoritmalarından esinlenerek “gösterim akışı” adı verilen bir CNN katmanı önermektedir. Optik akışı ayrı olarak hesaplamak zorunda kalmadan hareket tanıma için hareket gösterimlerini öğrenir. Modeldeki herhangi bir gösterim kanalının “akışını” yakalamak için tasarlanmış tamamen farklılaştırılabilir bir katmandır. Yinelemeli akış optimizasyonu için parametreler diğer model parametreleriyle birlikte öğrenilir. Optik akış parametrelerinin öğrenilmesine, herhangi bir CNN özellik haritasına (yani ara gösterimler) uygulanmasına ve performansı korurken daha düşük hesaplama maliyetine izin verir.

🌠 Gösterim Akışı Katmanı

Yazarların önerdiği “gösterim akış katmanı”, geleneksel optik akış yöntemleriyle aynı şeyi yapıyor ancak çok az farkı var.

1️⃣ Herhangi bir CNN öznitelik haritasının akışını yakalar.

2️⃣ Θ, λ, T gibi parametrelerini ve diverjans ağırlıklarını öğrenir.

3️⃣ Yalnızca tek ölçek kullanır.

4️⃣ Bozulma yapmaz.

5️⃣ Hesaplama süresini azaltmak için daha küçük bir uzamsal boyutta 3, 4, 5 olan bir CNN tensörünün akışını hesaplar.

RGB görüntülere uygulandığında (b) TVL-1 ve (c) öğrenilen akışın sonuçlarının karşılaştırılması.

Gösterim akış katmanı, RGB girişi yerine daha düşük çözünürlüklü CNN öznitelik haritalarına uygulanır. Bu mümkündür, çünkü CNN öznitelik haritalarına parlaklık yoğunluğu varsayımı benzer şekilde uygulanabilir; piksel parlaklığını yakalamak yerine öznitelik değeri yoğunluğunu yakalar. Bu yöntem başka problemler için de kullanılabilir. 👌🏻

Ayrıca, akış katmanı uçtan uca bir şekilde eğitilecek bir CNN mimarisine yerleştirilir. Birden fazla yinelemeye sahip akış katmanı, her katmanın davranışı bir önceki katmanına bağlı olarak parametrelerin paylaşıldığı bir dizi (aşağıdaki görüntüdeki mavi kutular) olarak yorumlanabilir. Bu formülasyonun bir sonucu olarak, katman tamamen farklılaşabilir hale gelir ve tüm optik akış parametrelerinin öğrenilmesine izin vererek akış bilgisinin görevi için optimize edilmesini sağlar. Ne parlak fikir di mi 😎

Gösterim akış katmanı: TV-L1 algoritmasının yinelemelerini, yinelemeler boyunca parametreleri paylaşırken bir tensör işlemi dizisi olarak açar.

📹 Video - CNN Mimarisi

Gösterim akış katmanı, video-CNN mimarisinin evrişimli katmanları arasına yerleştirilir. Şekilde mavi olarak gösterilen bloklardır.

Bir temsili akış katmanına sahip bir video CNN mimarisi — Giriş:video çerçeveleri, başlangıç CNN katmanı her bir çerçeve için, kanal azaltma, öznitelikleri normalize etme, akış katmanı (mavi kutular), CNN sınıflandırıcısı

🔍 Mimarinin detayları:

1️⃣ Akış katmanı, her kanal için akışı hesaplar. Öznitelik haritası oluşturmak ve kanal sayısını azaltmak için evrişimli katman uygulanır.

2️⃣ Sayısal kararlılık için, öznitelik haritasının akış katmanına girilmeden önce [1, 255] olması için normalizasyon yapılır.

3️⃣ Akışı hesaplanır ve x ve y akışlarını yığınlayarak 2C kanallar oluşturulur. 2C kanallarından C kanallarına dönüştürmek için başka bir evrişim katmanı daha uygulanır. Böylece kanal azaltma yapılmış olur.

4️⃣ CNN, her bir zaman aralığı için bir tahmin üretir ve her sınıf için bir olasılık üretmek üzere bunların geçici olarak ortalamasını alır.

🏄 Akış Akışı — Flow of Flow (FoF)

Akış algoritmasını doğrudan iki akış görüntüsüne uygulamak, birbirini izleyen iki karede benzer hareket gösteren pikselleri / konumları izlendiği anlamına gelir. Pratikte, bu tutarsız optik akış sonuçları ve esnek/gevşek hareket nedeniyle daha kötü bir performansa yol açar.

Örnek (a) RGB görüntü, (b) TVL-1 akış görüntüsü ve (c) iki kez uygulanan TVL-1 (yani Akış Akışı). Büyüklük ve yön girişleri parlaklık tutarlılığı varsayımına uymadığından, doğrudan akış akışının hesaplanması zayıf girdiye neden olur.

Ancak, gösterim akış katmanı ile akış bilgisi verilerden ‘öğrenilir’. Dolayısıyla, akış katmanları arasında birden fazla düzenli evrişimli katmana sahip olarak bu tür tutarsızlığı ve daha iyi soyut / gösterim hareketini bastırmak mümkündür. Çoklu gösterim akış katmanlarını istifleyerek, model daha uzun geçici aralıklar yakalayabilir ve hareket tutarlılığı olan konumları belirleyebilir.

Modelin FoF’ı nasıl hesapladığını gösteren örnek blok. Ara evrişim katmanının eklenmesi, akışın düzgünleştirilmesine ve büyüklük + yönden öznitelik değerlerine dönüştürülmesine olanak tanır. Bu, ikinci bir akış katmanının hareket özelliğini daha da hassaslaştırmasını sağlar.

Gösterim Akışı Örneği;

Çeşitli eylemler için gösterim akışlarına örnekler yer almaktadır. Temsil akışı, 3. residual bloktan sonra hesaplanır ve bazı sematik hareket bilgilerini yakalar. Bu noktada gösterimler düşük boyutludur (28x28).

FoF Örneği;

Çeşitli eylemler için akışların akış (FoF) örnekleri. FoFbir hızlanma tipi hareket özelliğini yakalar (zaman içinde hareket değişikliği). İki akış katmanı arasındaki ilave evrişim katmanı nedeniyle, daha düzgün bir akış tahmini üretir. Bu temsiller, orijinal özellikler daha soyut ve akış akışı daha az anlamsal olarak yorumlanabilir olduğundan daha az anlamsal olarak anlaşılabilir. Ne olursa olsun, videoyla eşleşen bazı farklı hareket kalıpları görmeye devam ediyoruz.

💊Kısa Kısa

🔹Akış nerede hesaplanır?

Yazarlar, girdideki akışın hesaplanmasının kötü performans sağladığını, ancak 1 katmandan sonra bile önemli bir sıçrama olduğunu ve bu da ara bir özniteliğin akışının hesaplanmasının faydalı olduğunu düşündürmektedir. Bununla birlikte, 4 katmandan sonra, uzamsal bilgiler çok soyut / sıkıştırılmış olduğundan performans düşmeye başlar.

🔹Ne öğrenilmeli?

Yazarlar, akış parametrelerini (diverjans, λ, θ, T) öğrenmenin faydalı olduğunu bulmuşlardır.

🔹Akış için kaç iterasyon gerekli?

Yazarlar 1–100 arası denemeler yapmış ancak en iyi öğrenilen aralığı 20 veya 50 olarak tespit etmişlerdir.

🔹İki akışlı (two-stream) füzyon nedir?

Hem RGB hem de optik akış özniteliklerini birleştiren iki akışlı CNN’ler yoğun bir şekilde incelenmiştir. Yazarlar, RGB bilgilerinin kaynaştırılmasının “doğrudan RGB girişinden akış hesaplanırken” çok önemli olduğunu bulmuşlardır. Bununla birlikte, ara gösterimlerin akışını hesaplarken CNN zaten çok fazla gösterim bilgisini soyutladığı için yararlı değildir.

🔹Flow-of-FLow

TV-L1 algoritmasını iki kez uygulamak, optik akış özniteliklerini parlaklık yoğunluğu varsayımını gerçekten tatmin etmediği için oldukça düşük performans sağlar. Gösterim akış katmanının iki kez uygulanması, TV-L1'den iki kat daha iyi performans gösterir. Ancak yine de bunu yapmaktan daha kötüdür. Bununla birlikte, birinci ve ikinci akış katmanı (flow-conv-flow; FcF) arasına katlamalı katman eklenirse, model daha uzun vadeli akış gösterimlerini daha iyi öğrenir. Yazarlar bunun en iyi sonucu verdiğini tespit etmiştir.

🔹3D CNN Özniteliklerinin Akışı
Yazarlar, akış katmanının, halihazırda bazı geçici bilgileri yakalayan 3D ve (2 + 1)D CNN’lerde bile performansı artırdığını bulmuşlardır.

✔️ Sonuç

Son teknoloji ürünü hareket sınıflarıyla karşılaştırılması. “HMDB (+ Kin)”, modelin HMDB ile eğitim / test yapmadan önce Kinetik konusunda önceden eğitildiği anlamına gelir. Eksik sonuçlar, bu ayarı bildirmeyen makalelerden kaynaklanmaktadır. En iyi performansları (veri seti başına) kalın metinlerle gösterilmektedir. Tüm modellerin tek bir akış tasarımına sahip olduğunu unutmayın.

💻 Bu makalenin uygulaması:

⚠️Bu makale incelemesi yazımda, optik akış algoritmasında bir takım bakış açılarını değiştirerek evrişimli sinir ağlarının öznitelik çıkarma gücünü kullanıp hem işlem yükünü azaltmış hem de hareket değişikliği özelliğinin nasıl yakalandığını tarif etmeye çalıştım. Makalenin uygulaması açık olduğu için kendi videolarınızda çalışmayı denerseniz lütfen yorum olarak paylaşın sizin reponuzu da yazıya eklemek isterim 😇

🎉 Yazıyla ilgili geri bildirimler veren Başak Buluz ’a çok teşekkür ederim.

--

--

Ayyüce Kızrak, Ph.D.

AI Specialist @Digital Transformation Office, Presidency of the Republic of Türkiye | Academics @Bahçeşehir University | http://www.ayyucekizrak.com/