ARKit: Face Tracking
Yüz algılama olarak geçen Face Tracking özelliği, AR uygulamalarında kullanıcıların yüzlerini algılamak için kullanılan özelliktir.
Merhaba TurkishKit okuyucuları!🖖 Apple’ın ARKit kütüphanesindeki en ilginç özelliklerinden biri olan Face Tracking ile ilgili bir makale ile karşınızdayız.
Yazı Önerisi 😎
Swift serimizin “Completion Handler” yazısını aşağıdaki linke tıklayarak okuyabilirsiniz.
Face Tracking
Yüz algılama olarak geçen Face Tracking özelliği, AR uygulamalarında kullanıcıların veya etraftaki insanların yüzlerini algılamak için kullanılan özelliktir. 🎭
Yüz algılama özelliği ARKit dışında, birçok alanda kullanılır. Snapchat, Instagram gibi basit uygulamaların kamera lenslerinden sokak kameralarından suçlu aramaya kadar her yerde karşımıza çıkabilir. Daha komplike işler için bu özellik, yapay zeka kütüphaneleriyle birleştirilip yüz tanımaya genişletilebilir.
ARFaceTrackingConfiguration
Aşağıdaki gibi iki şekilde tanımlanabilir ve kodunuza eklenebilir:
class ARFaceTrackingConfiguration: ARConfiguration
let configuration = ARFaceTrackingConfiguration()
ARFaceTrackingConfiguration sadece True Depth özelliği olan cihazlarla uyumludur. iPhone X ve üstü, iPad Pro 11 inch ve üstü, iOS 11.0 ve Xcode 10.0 veya üstü cihazlar ve sürümlerde mevcuttur. 📱
Bu özellik, çevredeki yüzleri algılar ve her yüz için ARFaceAnchor objesi oluşturmak için kullanılır.
Herhangi bir metodu yoktur ancak uygulamanızda kullanacağınız diğer sınıflar ve metodlar için taban oluşturur. ARConfiguration özelliğinin yüz algılama kütüphanesine çevrilmiş halidir.
isLightEstimationEnabled: Bu metodu eklediğinizde algılanan yüzün daha belirgin olabilmesi için etrafa otomatik olarak ışık eklenir. 💡
Not: ARFaceTrackingConfiguration özelliği algıladığı yüzlerin hatlarını ve kişisel özelliklerini hafızaya saklar ondan bu özellik kullanılmadan önce kullanıcıdan gizlilik izni alınması gerekir.
ARFaceAnchor
Aşağıdaki gibi iki şekilde kodunuza ekleyebilirsiniz:
class ARFaceAnchor : ARAnchor
let detectedFace = ARFaceAnchor()
ARFaceTrackingConfiguration ile yüz algılandığında oluşturulan yüz objesidir. ARFaceAnchor objesini yüzünüzün resminin bir ovale yapıştırılmış hali gibi düşünebilirsiniz. Bu obje oluşturulduktan sonra kullanıcının yüz hatlarıyla değişiklikler yapabilir, yüzünün üstüne farklı objeler ekleyebilir veya bir veri tabanı oluşturup daha önce kaydedilmiş yüzlerden hangi kişi olduğunu tanıyan bir uygulama yapabilirsiniz.
transform: Bu özellik, algılanan yüzün dünyadaki pozisyonunu belirler. Yüze eklenilen objeleri belirlediği pozisyon üzerinden ekler. Aşağıdaki figürdeki gibi yüzün koordinatlarını belirler bu koordinatları baz alarak yüzdeki değişiklikleri yapar. 🧭
Aşağıdaki gibi kullanılabilir:
detectedFace.transform...
geometry: Bu özellik, algılanan yüzün fiziksel özelliklerini baz alarak mesh (üçgenlerden yaratılmış) olan bir ARFaceGeometry objesi çıkarır. Bu obje tam anlamıyla yüzün topolojik haritasıdır diyebiliriz: tüm çıkıntılarını ve çukurlarını hafızaya kaydeder. Bu özellik yüze eklenecek objelerin hangi noktalara eklenmesi gerektiğini belirler ve aynı zamanda yüzdeki duyu organlarının nerelerde olabileceği hakkında tahmini pozisyon verir.
Aşağıdaki gibi kullanılabilir:
detectedFace.geometry...
var geometry: ARFaceGeometry
class ARFaceGeometry: NSObject
blendShape: Bu özellik, yüzün nötr halinin topografik haritasını çıkardıktan sonra duyu organlarında veya mimiklerde küçük farklılıklar yaparak kullanıcının yüzündeki ifadeyi değiştirebilirsiniz. Bu özellik ile aynı zamanda kullanıcının ifadelerini takip edip ona göre yüzüne yerleştirilen objeleri değiştirebilirsiniz.
Aşağıdaki gibi kullanılabilir:
var blendShapes: [ARFaceAnchor.BlendShapeLocation: NSNumber]
struct ARFaceAnchor.BlendShapeLocation
Göz Hareketlerini Algılamak
ARFaceAnchor objesinin sınırsız özellikleri vardır. Kullanıcının gözleri, duygusal ifadelerin ve mimiklerin en önemli kısmıdır. Apple, göz hareketlerini algılama özelliğini bu kütüphaneden eksik etmemiştir.
Gözlerin hareketini algılayarak uygulamanızın yüze eklenen objeleri değiştirmesini sağlayabilirsiniz.
Sol göz, sağ göz ve herhangi bir yöne bakan gözleri algılayabilmek için aşağıdaki kodları uygulamanıza entegre edebilirsiniz:
var leftEyeTransform: simd_float4x4 { get }
var rightEyeTransform: simd_float4x4 { get }
var lookAtPoint: simd_float3 { get }
ARFaceTrackingConfiguration Başlatmak
Son olarak, bütün bu bilgi yüklemesinden sonra uygulamamıza ARFaceTrackingConfiguration özelliğinin nasıl ekleneceğini gösterelim. Gelecekte yüz algılama üzerine bir uygulama yaparsanız bu kodları eklemeyi unutmayın!
guard ARFaceTrackingConfiguration.isSupported else { return }
let configuration = ARFaceTrackingConfiguration()
configuration.isLightEstimationEnabled = truesceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
Bir ARKit makalesinin daha sonuna geldik. Bu makalemizde ARKit kütüphanesinin Face Tracking yani yüz algılama özelliğini nasıl uygulamalarımızda kullanabileceğimizi öğrendik. Bir sonraki makalede görüşmek üzere iyi kodlamalar!🥳