Yüz Algılama için Cihaz Üzerinde Derin Sinir Ağı

Giriş

Apple ilk olarak CIDetector sınıfı aracılığıyla Core Image çerçevesinde genel bir API’de yüz algılamayı yayınladı. Bu API, Fotoğraflar gibi Apple uygulamaları tarafından dahili olarak da kullanıldı. CIDetector’ın en eski sürümünde Viola-Jones algılama algoritmasına dayalı bir yöntem kullanıldı . CIDetector’da yapılan sonraki iyileştirmeleri, geleneksel bilgisayar görüşündeki gelişmelere dayandırdık.

Derin öğrenme gereksinimleri

Derin öğrenmenin ortaya çıkması ve bunun bilgisayarla görme problemlerine uygulanmasıyla, yüz algılama doğruluğundaki son teknoloji, büyük bir adım attı. Bu paradigma değişikliğinden yararlanabilmek için yaklaşımımızı tamamen yeniden düşünmemiz gerekiyordu. Geleneksel bilgisayar vizyonuyla karşılaştırıldığında, derin öğrenmedeki öğrenilmiş modeller, daha fazla bellek, çok daha fazla disk depolama ve daha fazla hesaplama kaynağı gerektirir.

Günümüzde Yüz Algılama Sistemleri

Günümüzün cep telefonları kadar yetenekli olduğu kadar, tipik ileri teknoloji cep telefonu derin öğrenme vizyon modelleri için uygun bir platform değildi. Sektörün çoğu, bulut tabanlı bir API aracılığıyla derin öğrenme çözümleri sağlayarak bu sorunu aştı. Bulut tabanlı bir çözümde, görüntüler, yüzleri algılamak için derin öğrenme çıkarımı kullanılarak analiz için bir sunucuya gönderilir. Bulut tabanlı hizmetler, genellikle büyük miktarda kullanılabilir belleğe sahip güçlü masaüstü sınıfı GPU’lar kullanır. Çok büyük ağ modelleri ve potansiyel olarak büyük model grupları sunucu tarafında çalışabilir ve istemcilerin (cep telefonları olabilir) yerel olarak çalıştırılması pratik olmayan büyük derin öğrenme mimarilerinden yararlanmalarına izin verir.

Apple’ın iCloud Fotoğraf Kitaplığı, fotoğraf ve video depolama için bulut tabanlı bir çözümdür. Ancak, kullanıcı gizliliği Apple’ın güçlü bir bağlılık nedeniyle, biz bilgisayarla görme hesaplamaları için iCloud sunucularını kullanamadı. İCloud Fotoğraf Kitaplığı’na gönderilen her fotoğraf ve video, bulut depolama alanına gönderilmeden önce aygıtta şifrelenir ve şifresi yalnızca iCloud hesabına kayıtlı aygıtlar tarafından çözülebilir. Bu nedenle, müşterilerimize derin öğrenme tabanlı bilgisayarla görme çözümleri sunuyoruz. Bunun için iPhone’da çalışan derin öğrenme algoritmalarını edinmenin zorluklarını doğrudan ele almalıydık.

Birkaç zorlukla karşılaştık. Derin öğrenme modellerinin, işletim sisteminin bir parçası olarak gönderilmesi ve değerli NAND depolama alanını kaplaması gerekir. Ayrıca RAM’e yüklenmesi gerekir ve GPU ve / veya CPU üzerinde önemli bir hesaplama süresi gerektirir. Kaynakları yalnızca bir görüntü sorununa adanabilen bulut tabanlı hizmetlerin aksine, bu sistem kaynaklarını diğer çalışan uygulamalarla paylaşırken cihaz üzerinde hesaplama gerçekleştirilmelidir. Son olarak, hesaplama, büyük bir Fotoğraflar kitaplığını oldukça kısa bir sürede işleyecek kadar verimli olmalı, ancak önemli güç kullanımı veya termal artış olmadan.

Yüz Algılamada Derin Sinir Ağı

Bu makalenin geri kalanı, derin öğrenmeye dayalı yüz tanıma konusundaki algoritmik yaklaşımımızı ve son teknoloji doğruluğa ulaşmak için zorlukları başarıyla nasıl aştığımızı tartışıyor. Tartışıyoruz:

  • GPU ve CPU’muzdan tam olarak nasıl yararlanıyoruz (BNNS ve Metal kullanarak)
  • ağ çıkarımı için bellek optimizasyonları ve görüntü yükleme ve önbelleğe alma
  • ağı iPhone’dan beklenen diğer eşzamanlı görevlerin çoğunu engellemeyecek şekilde nasıl uyguladığımızı.

Viola-Jones’tan Derin Öğrenmeye Geçiş

2014 yılında, görüntülerdeki yüzleri algılamaya yönelik derin öğrenme yaklaşımı üzerinde çalışmaya başladığımızda, derin evrişimli ağlar (DCN) nesne algılama görevlerinde umut verici sonuçlar vermeye yeni başlıyordu. Bunlardan en önemlisi , DCN’lerin bir nesne için bir görüntüyü taramada oldukça verimli olduğunu gösteren bazı basit fikirleri popüler hale getiren “OverFeat” adlı bir yaklaşımdı .

OverFeat, bir sinir ağının tamamen bağlı katmanları ile girdi olarak aynı uzamsal boyutlara sahip filtrelerin geçerli evrişimlerine sahip evrişimli katmanlar arasındaki denkliği çizdi. Bu çalışma, sabit bir alıcı alanın ikili bir sınıflandırma ağının (örneğin, 16 piksellik doğal bir adımla 32×32) uygun boyutta bir çıktı haritası (örneğin, 320×320) oluşturmak için rastgele boyutlandırılmış bir görüntüye verimli bir şekilde uygulanabileceğini açıkça ortaya koymuştur ( Bu örnekte 20×20). OverFeat kağıdı ayrıca, ağ adımını etkili bir şekilde azaltarak daha yoğun çıktı haritaları üretmek için akıllı tarifler sağladı.

İlk mimarimizi OverFeat kağıdındaki bazı içgörülere dayanarak oluşturduk ve aşağıdakilerden oluşan çoklu görev hedefiyle tamamen evrişimli bir ağ (bkz. Şekil 1) ortaya çıkardık:

  • girdide bir yüzün varlığını veya yokluğunu tahmin etmek için ikili bir sınıflandırma ve
  • girdideki yüzü en iyi yerelleştiren sınırlayıcı kutu parametrelerini tahmin etmek için bir regresyon.

Böyle bir ağı eğitmenin birkaç yolunu denedik. Örneğin, eğitim için basit bir prosedür, her bir kutucuk ağdan tek bir çıktı üretecek şekilde, ağa yönelik en küçük geçerli girdiye karşılık gelen sabit boyutta görüntü döşemelerinden oluşan büyük bir veri kümesi oluşturmaktır. Eğitim veri seti ideal olarak dengelenmiştir, böylece karoların yarısı bir yüz (pozitif sınıf) içerir ve diğer yarısı bir yüz (negatif sınıf) içermez. Her pozitif karo için, yüzün gerçek konumunu (x, y, w, h) sağlarız. Ağı, daha önce açıklanan çoklu görev hedefini optimize edecek şekilde eğitiyoruz. Ağ eğitildikten sonra bir döşemenin bir yüz içerip içermediğini tahmin edebilir ve eğer öyleyse, döşemedeki yüzün koordinatlarını ve ölçeğini de sağlar.

Örneklerle Derin Sinir Ağı ve Yüz Algılama

Şekil 1. Yüz algılama için revize edilmiş bir fotoğraf
Yüz Algılama için Cihaz Üzerinde Derin Sinir Ağı
Yüz algılama için cihaz üzerinde derin sinir ağı adlı makalemiz yayında. Bu makalede yapay sinir ağları ve derin öğrenme anlatıldı.

Ağ tamamen evrişimli olduğu için, rastgele boyutlandırılmış bir görüntüyü verimli bir şekilde işleyebilir ve bir 2D çıktı haritası oluşturabilir. Haritadaki her nokta, giriş görüntüsündeki bir kutucuğa karşılık gelir ve o başlıkta bir yüzün varlığı veya yokluğu ile ilgili ağın tahminini ve giriş döşemesindeki konumu / ölçeğini içerir (Şekil 1’de DCN’nin giriş ve çıkışlarına bakın) 1).

Böyle bir ağ göz önüne alındığında, yüz algılamayı gerçekleştirmek için çok ölçekli bir görüntü piramidi, yüz dedektör ağı ve bir son işlem modülünden oluşan oldukça standart bir işlem hattı oluşturabiliriz. Çok çeşitli boyutlarda yüzleri işlemek için çok ölçekli bir piramide ihtiyacımız vardı. Ağı piramidin her seviyesine uyguluyoruz ve her katmandan aday tespitler toplanıyor. (Bkz. Şekil 2.) Sonradan işleme modülü daha sonra bu aday algılamaları ölçeklerde birleştirerek ağın görüntüdeki yüzlerin nihai tahminine karşılık gelen sınırlayıcı kutuların bir listesini oluşturur.

Derin Sinir Ağları ve Duygu Analizi – Yüz Tanıma

Şekil 2. Yüz algılama duygu analizi
Yüz Algılama için Cihaz Üzerinde Derin Sinir Ağı
Yüz algılama için cihaz üzerinde derin sinir ağı adlı makalemiz yayında. Bu makalede yapay sinir ağları ve derin öğrenme anlatıldı.

Bu strateji, bir görüntüyü kapsamlı bir şekilde taramak için bizi cihazda derin evrişimli bir ağ çalıştırmaya yaklaştırdı. Ancak ağ karmaşıklığı ve boyutu, performansın önündeki temel darboğazlar olarak kaldı. Bu zorluğun üstesinden gelmek, yalnızca ağı basit bir topolojiyle sınırlamak değil, aynı zamanda ağ katmanlarının sayısını, katman başına kanal sayısını ve evrişimli filtrelerin çekirdek boyutunu da sınırlamak anlamına geliyordu. Bu kısıtlamalar çok önemli bir sorunu ortaya çıkardı: Kabul edilebilir doğruluk üreten ağlarımız basit olmaktan başka her şeydi, çoğu 20 katmanı geçiyor ve birkaç ağ içinde ağdan oluşuyordu modüller. Daha önce açıklanan görüntü tarama çerçevesinde bu tür ağların kullanılması tamamen mümkün olmayacaktır. Kabul edilemez performans ve güç kullanımına yol açtılar. Aslında, ağı belleğe bile yükleyemezdik. O zaman zorluk, doğru ancak oldukça karmaşık ağların davranışını taklit edebilecek basit ve kompakt bir ağın nasıl eğitileceğiydi.

Gayri resmi olarak “öğretmen-öğrenci” eğitimi olarak adlandırılan bir yaklaşımdan yararlanmaya karar verdik . Bu yaklaşım bize, ikinci bir ince ve derin ağı (“öğrenci”) eğitmek için bir mekanizma sağladı, öyle ki bu şekilde eğittiğimiz büyük karmaşık ağın (“öğretmen”) çıktılarıyla çok yakından eşleşti. daha önce anlatıldı. Öğrenci ağı, 3×3 evrişim ve havuz katmanlarından oluşan basit bir yinelenen yapıdan oluşuyordu ve mimarisi, sinir ağı çıkarım motorumuzdan en iyi şekilde yararlanmak için yoğun bir şekilde uyarlandı. (Bkz. Şekil 1.)

Şimdi, nihayet, cihaz üzerinde yürütme için uygun olan, yüz algılama için derin bir sinir ağı için bir algoritmamız vardı. İstenilen uygulamaları etkinleştirmek için yeterince doğru olan bir ağ modeli elde etmek için birkaç eğitim turunu yineledik. Bu ağ doğru ve uygulanabilir olsa da, milyonlarca kullanıcı cihazına dağıtımını pratik hale getirmek için hala muazzam miktarda çalışma kaldı.

Görüntü Ardışık Düzenini Optimize Etme

Derin öğrenmeyle ilgili pratik düşünceler, geliştiricilere yönelik kullanımı kolay bir çerçeve için tasarım seçimlerimize büyük ölçüde etki etti, buna Vision adını verdik. Harika algoritmaların harika bir çerçeve oluşturmak için yeterli olmadığı hemen anlaşıldı. Son derece optimize edilmiş bir görüntüleme hattına sahip olmalıydık.

Geliştiricilerin ölçeklendirme, renk dönüştürme veya görüntü kaynakları hakkında düşünmesini istemedik. Yüz algılama, canlı kamera yakalama akışlarında, video işlemede veya görüntülerin diskten veya web’den işlenmesinde kullanılsa iyi çalışmalıdır. Görüntü temsili ve biçimi ne olursa olsun çalışmalıdır.

Özellikle akış ve görüntü yakalama için güç tüketimi ve bellek kullanımıyla ilgileniyorduk. 64 Megapiksellik bir panorama için gereken büyük bellek gibi bellek ayak izi konusunda endişeliydik. Bu endişeleri, tipik olmayan en boy oranlarında bile büyük görüntülerde bilgisayarla görme görevlerini gerçekleştirmek için kısmi alt örneklemeli kod çözme ve otomatik döşeme tekniklerini kullanarak ele aldık.

Görüntü Ardışık Düzenini Optimize Etme Devamı

Diğer bir zorluk, renk alanı eşleştirmesiydi. Apple, geniş bir renk alanı API setine sahiptir, ancak geliştiricilere renk eşleştirme görevini yüklemek istemedik. Vision çerçevesi, renk eşleştirmeyi yönetir, böylece bilgisayar vizyonunun herhangi bir uygulamaya başarılı bir şekilde benimsenmesi için eşiği düşürür.

Vision ayrıca ara ürünlerin verimli bir şekilde işlenmesi ve yeniden kullanılmasıyla optimize eder. Yüz algılama, yüzün dönüm noktası algılama ve diğer birkaç bilgisayarla görme görevi aynı ölçeklendirilmiş ara görüntüden çalışır. Arayüzü algoritmalara soyutlayarak ve işlenecek görüntü veya arabellek için bir sahiplik yeri bularak Vision, geliştiricinin herhangi bir iş yapmasına gerek kalmadan birden çok bilgisayar görme görevinin performansını artırmak için ara görüntüler oluşturabilir ve önbelleğe alabilir.

Kapak tarafı da doğruydu. Merkezi arayüz perspektifinden, algoritma geliştirmeyi ara ürünlerin daha iyi yeniden kullanımına veya paylaşımına izin veren yönlere yönlendirebiliriz. Vision, birkaç farklı ve bağımsız bilgisayar görme algoritmasına ev sahipliği yapıyor. Çeşitli algoritmaların birlikte iyi çalışması için uygulamalar, mümkün olduğunca çok sayıda algoritma arasında paylaşılan giriş çözünürlüklerini ve renk alanlarını kullanır.

Cihaz Üzerinde Performans için Optimizasyon

Yüz algılama API’miz hem gerçek zamanlı uygulamalarda hem de arka plan sistem işlemlerinde kullanılamazsa, kullanım kolaylığının keyfi hızla ortadan kalkardı. Kullanıcılar, fotoğraf kitaplıklarını yüz tanıma için işlerken veya bir çekimden hemen sonra bir resmi analiz ederken yüz tanımanın sorunsuz çalışmasını ister. Pilin boşalmasını veya sistemin performansının yavaşlamasını istemiyorlar. Apple’ın mobil cihazları, çok görevli cihazlardır. Bu nedenle arka plan bilgisayar görüşü işleme, sistemin geri kalan özelliklerini önemli ölçüde etkilememelidir.

Bellek ayak izini ve GPU kullanımını en aza indirmek için çeşitli stratejiler uyguluyoruz. Bellek ayak izini azaltmak için, hesaplama grafiğini analiz ederek sinir ağlarımızın ara katmanlarını ayırıyoruz. Bu, birden çok katmanı aynı arabelleğe almamızı sağlar. Tamamen belirleyici olmakla birlikte, bu teknik, performansı veya ayırmaların parçalanmasını etkilemeden bellek ayak izini azaltır ve CPU veya GPU’da kullanılabilir.

Vision için, dedektör 5 ağ çalıştırır (Şekil 2’de gösterildiği gibi her görüntü piramidi ölçeği için bir). Bu 5 ağ aynı ağırlıkları ve parametreleri paylaşır, ancak giriş, çıkış ve ara katmanları için farklı şekillere sahiptir. Ayak izini daha da azaltmak için, bu 5 ağ tarafından oluşturulan ortak grafik üzerinde canlılığa dayalı bellek optimizasyon algoritmasını çalıştırarak ayak izini önemli ölçüde azaltıyoruz. Ayrıca, çoklu ağlar aynı ağırlık ve parametre tamponlarını yeniden kullanır, böylece bellek ihtiyaçlarını azaltır.

Derin sinir ağının GPU ilişkisi

Daha iyi performans elde etmek için, ağın tamamen evrişimli doğasından yararlanıyoruz: Tüm ölçekler, giriş görüntüsünün çözünürlüğüne uyacak şekilde dinamik olarak yeniden boyutlandırılır. Görüntüyü kare ağ retinalarına (boşluk bantları ile doldurulmuş) sığdırmakla karşılaştırıldığında şu şekilde ilerler:

Ağı görüntünün boyutuna uydurmak, toplam işlem sayısını büyük ölçüde azaltmamızı sağlar. İşlemin topolojisi yeniden şekillendirme ve ayırıcının geri kalanının yüksek performansı ile değişmediğinden, dinamik yeniden şekillendirme, tahsis ile ilgili performans ek yükü getirmez.

Derin sinir ağları arka planda çalışırken kullanıcı ara yüzünün yanıt vermesini ve akıcılığını sağlamak için, GPU çalışma öğelerini ağın her katmanı için her bir zaman bir milisaniyeden az olana kadar böleriz. Bu, sürücünün bağlamları, UI animasyonları gibi zamanında daha yüksek öncelikli görevlere geçirmesine ve böylece kare düşüşünü azaltmasına ve bazen ortadan kaldırmasına olanak tanır.

Tüm bu stratejiler bir araya geldiğinde, kullanıcılarımızın, telefonlarının saniyede birkaç yüz gigaflop hızında sinir ağları çalıştırdığının farkında olmadan yerel, düşük gecikmeli, özel derin öğrenme çıkarımının keyfini çıkarmasını sağlar.

Anahtar Kelimeler

Derin öğrenme , yapay zeka, yüz analizi, derin öğrenme alanları, yüz dedektörü nedir, duygu problemleri analizi, yüz dedektör, yüz algılama. Cihaz üzerinde performans,deerin öğrenme ile ilgili pratik düşünceler,geliştirici ölçeklendirme. Megapiksel,derin sinir ağı algoritması, applenin mobil cihazları,android, instagram,iphone,iphone x. İphone 5, turkey ai,turkey,türkiye yapay zeka, GPU, apple.

 

“Yüz Algılama için Cihaz Üzerinde Derin Sinir Ağı” üzerine 3 yorum

  1. Yüz algılama sistemleri gayet güzel anlatılmış. Derin sinir ağı veya derin sinir ağları harika işlenmiş. Tebrikler

    Cevapla
  2. Makalenizi okudum gerçekten beğendim. Derin sinir ağı muhteşem anlatılmış. Ellerinize sağlık. Makaleyi okurken yüz algılama sistemleri ve derin sinir ağları hakkında detaylı bilgi sahibi oldum.
    Derin sinir ağı nedir ile ilgili makalenizi bekliyorum.
    Yüz algılama sistemleri ile ilgili ise uygulamali makalelerinizi bekliyorum.

    Cevapla
  3. Derin sinir ağları ile ilgili uygulama bekliyorum.
    Bilgilendirici makale için teşekkürler

    Cevapla

Yorum yapın