paint-brush
Yüz Verisi Artırma - Bölüm 1: Geometrik Dönüşümile@ainur
278 okumalar

Yüz Verisi Artırma - Bölüm 1: Geometrik Dönüşüm

ile Ainur Gainetdinov3m2024/10/27
Read on Terminal Reader

Çok uzun; Okumak

Derin sinir ağlarının performansı son yirmi yılda büyük bir adım attı. Her yıl, en son teknoloji sonuçlarını geride bırakan yeni mimariler tasarlanıyor. Ancak, yalnızca mimarileri geliştirmek kaliteli bir veri kümesi olmadan işe yaramayacaktır. Veri kümesinin nihai performans üzerinde büyük bir etkisi vardır. Çeşitli, doğru veri kümelerini toplamak ve etiketlemek zahmetli ve pahalı olabilir ve mevcut veri kümeleri genellikle gerçek veri dağıtımının tüm çeşitliliğini kapsamaz, bu nedenle veri artırma teknikleri kullanılır.
featured image - Yüz Verisi Artırma - Bölüm 1: Geometrik Dönüşüm
Ainur Gainetdinov HackerNoon profile picture

Derin sinir ağlarının performansı son yirmi yılda büyük bir adım attı. Her yıl, en son teknoloji sonuçlarını geride bırakan yeni mimariler tasarlanıyor. Ancak, yalnızca mimarileri geliştirmek kaliteli bir veri kümesi olmadan işe yaramayacaktır. Veri kümesinin nihai performans üzerinde büyük bir etkisi vardır. Çeşitli, doğru veri kümelerini toplamak ve etiketlemek zahmetli ve pahalı olabilir ve mevcut veri kümeleri genellikle gerçek veri dağıtımının tüm çeşitliliğini kapsamaz, bu nedenle veri artırma teknikleri kullanılır.


Bu makalede, modelinizin performansını iyileştirmek için insan yüzleri veri kümenizin 3B geometri dönüşümüyle nasıl zenginleştirilebileceğini göstereceğim. Açık kaynak kod uygulaması aşağıda verilmiştir[1].


Veri artırma, örneklere farklı değişiklikler uygulayarak veri miktarını artıran bir tekniktir. Genel görüntü artırma iki kategoriye ayrılabilir: geometrik dönüşümler ve renk dönüşümleri. Geometrik dönüşümler ölçekleme, kırpma, çevirme, döndürme, çevirme vb. içerir. Renk dönüşümleri ise renk titremesi, gürültü ekleme, gri tonlama, parlaklık/kontrast ayarlama vb. içerir.


Bir insan yüzü olduğunu biliyorsak bir görüntüyü nasıl artırabileceğimizi düşünelim. Bir kişiyi diğerinden nasıl ayırt ederiz? Cilt rengi, yüz şekli, saç kesimi, kırışıklıklar, göz rengi vb. gibi kimliği oluşturan yüz özellikleri vardır. En ayırt edilebilir olanlardan biri yüz şeklidir.


Yani, giriş yüz görüntüsünün şeklini değiştirirsek, eğitilebilir bir model için biraz farklı bir kişi olacaktır. O halde, bu özelliği veri setimizi genişletmek için kullanalım.


3D Morphable Model (3DMM), özellikle FLAME[2] modelini kullanarak bir yüzün geometrisini değiştireceğiz. 3DMM, şeklini, pozunu ve ifadesini değiştirmek için parametrelere sahip üç boyutlu bir ağdır. 3DMM, gerçek kişiler tarafından kaydedilen üç boyutlu ağlardan oluşturulmuştur.


Böylece gerçek yüz şekillerinin dağılımını temsil edebilir. Perdenin altında, ortalama şekil ve şekil ve ifade için değişim yönlerini belirten bir dizi temel bileşenden oluşur. Alfa ve beta, modelin parametreleridir.


Yüz şeklini değiştirmeden önce, giriş fotoğrafımıza karşılık gelen 3DMM parametrelerini bulmamız gerekir. Bunu yapmak için çeşitli yöntemler vardır, örneğin dönüm noktalarına optimizasyon, fotometrik optimizasyon veya parametreleri tek adımda tahmin etmek için regresyon modelleri. Basit bir uygulaması olduğu ve makul bir sürede doğru sonuçlar verdiği için 2D dönüm noktası optimizasyonunu kullandım.


Giriş görüntüsünde Dlib yüz algılama modeliyle yüz işaretleri tespit edildi. 3DMM'yi yüz görüntüsüne uydurmak için işaretler için MSE kaybıyla Adam optimizasyon algoritması kullanıldı. Birleşmek yaklaşık 150 yineleme aldı.


Şimdi, yüzün geometrisini değiştirmeye hazırız. Öncelikle, yüz görüntümüzle hizalanmış üç boyutlu bir ağımız var. 3DMM'nin şekil parametrelerini değiştirmek, görüntü uzayındaki ağ köşelerinin kaymasına yol açar. Bu kaymaları bilerek, onu görüntünün piksellerini hareket ettirmek için kullanabiliriz.


Kaymaların yoğun bir haritasını elde etmek için, tepe rengi yerine x ve y yönlerinde kaymalarla 3DMM mesh oluşturduğum OpenGL kütüphanesini kullandım. Dikkate alınması gereken bir şey kaldı, yüz mesh alanının dışında olan piksellerin nasıl ele alınacağı.


Bu amaçla, değiştirilen yüzü statik bir arka planla düzgün bir şekilde bağlayan ekstrapolasyon kullandım. x ve y yönleri için yoğun kaydırma haritalarımız olduğu sürece, bunları yüz işaretleri, segmentasyon maskeleri veya eşleştirilmiş görüntüler gibi herhangi bir etiket türüne uygulayabiliriz. Aşağıdaki şekilde geometrik dönüşümle yüz artırmanın örneklerini görebilirsiniz. Daha fazla ayrıntı öğrenmek istiyorsanız, kaynak koduna [1] davet ediyorum.



Şimdi, bunu veri kümelerinizde deneyebilirsiniz. Bu artırma tekniği, bir modeli girdi varyasyonlarına karşı kararlı hale getirerek geliştirmenize yardımcı olacaktır. Bu makalede, 3B geometrik dönüşüm hakkında bilgi edindik, ancak bunun dışında, yüz veri kümelerinin daha fazla iyileştirilmesi olan doku değişiklikleri de var, ki bunlar bir sonraki makalede.


Referanslar

[1] GitHub kodu. https://github.com/ainur699/face_data_augmentation

[2] ALEV modeli. https://flame.is.tue.mpg.de/index.html