Bu makale, AI Araştırma Enstitüsü tarafından, bilgisayarınıza komuta etmek için gözlerinizi ve Derin Öğrenme'yi kullanın - A.I. Odyssey bölümü 2 ve yazarı Julien Despois ile derlenen teknik bir blogdur. Tercüme | Tao Yulong, Lao Zhao redaksiyon | Lamaric incelemesi | Lamaric
Hiç bu deneyimi yaşadınız mı, yemek yerken, filmin sesini ayarlamak veya ekranın parlaklığını ayarlamak için fazladan eliniz olmadığını fark ettiniz mi? Bu yazımızda bu sorunu çözmek için en gelişmiş yapay zeka teknolojisini nasıl kullanacağımızı ve buna karşılık gelen komutları göz hareketleri ile bilgisayarınıza göndereceğiz.
Not: Bu makaleyi okumayı bitirdikten sonra, sizi uygulama ayrıntılarına adanmış bu takip gönderilerini okumaya davet ediyorum (https://medium.com/@juliendespois/ai-odyssey-part-2-implementation-details-f126f18bd320# .t4gpenon3).
Giriş
Neye ulaşmak istiyoruz
Bu projenin amacı, bilgisayardaki eylemleri tetiklemek için gözlerimizi kullanmaktır. Bu çok kapsamlı bir soru, bu yüzden önce neyi başarmak istediğimizi açıklamamız gerekiyor.
Örneğin, gözlerin belirli bir köşeye baktığını algılayabilir ve ardından o açıdan çalışabiliriz. Ancak, bu çok sınırlı ve çok esnek değil, ayrıca köşeleri birleştirmemizi gerektiriyor. Bunun yerine, tam göz hareketlerini tanımayı öğrenmek için tekrarlayan bir sinir ağı kullanıyoruz.
veri
Çalışmalarımız için harici veri setleri kullanmak istemiyoruz, bunun yerine veri setlerini kendimiz yapıyoruz. Modelin eğitim ve tahmin aşamalarında da aynı veri kaynaklarını ve işleme yöntemlerini kullandık, bu da projemize büyük fayda sağladı.
Şüphesiz, gözlerimizden bilgi almanın en etkili yolu, özel bir yakın çekim lensi kullanmaktır. Bu tür donanımların yardımıyla, çeşitli şaşırtıcı veriler elde etmek için doğrudan öğrencinin merkezini izleyebiliriz.
Harici bir kamera kullanmak istemiyorum, bu yüzden dizüstü bilgisayarımın aşınmış 720P kamerasını kullanmaya karar verdim.
iş süreci
Doğrudan teknik tartışmaya geçmeden önce, bu sürecin adımlarını gözden geçirelim. İşte önerdiğim süreç:
Kamera ile bir fotoğraf çekin ve gözleri bulun.
Görüntüyü önceden işleyin ve önemli özellikleri çıkarın (sinir ağları kullanılarak uygulandığını mı söylemeye çalışıyorsunuz?).
Özellik çıkarmanın son birkaç karesinin kayıtlarını çalıştırmaya devam edin.
Çalışan kayıtlara dayalı olarak göz hareketi tahminini gerçekleştirin.
Görüntüyü işlemek için boru hattı yöntemini kullanacağız.
Bunu bu makaledeki aşağıdaki adımlarla yapacağız, hadi başlayalım!
Göz resimleri çek
Gözleri algıla
Doğrudan kamera aracılığıyla, görüntüyü alt örnekleyin ve gri tonlamalı bir görüntüye dönüştürün (birden çok renk kanalı çok sayıda yedek bilgi üretir), bu da sonraki işlemleri daha hızlı hale getirir ve modelin gerçek zamanlı çalışmasına yardımcı olur.
Tespit için, HAAR Cascades'i (Haar özelliği tabanlı kademeli sınıflandırıcılar) ( kullanacağız, çünkü bunlar hızlı ve basit ayarlamalarla İyi sonuçlar elde edilir, ancak gözleri doğrudan tespit ederken birçok yanlış alarma neden olur. Bu etkileri ortadan kaldırmak için görüntüde gözler yerine insan yüzlerini tespit ediyoruz ve sonra insan yüzündeki gözleri bulabiliyoruz.
Gözleri içeren sınırlayıcı kutu elde edildiğinde, görüntüyü ilk tam boyutlu kamera çekiminden çıkarabiliriz, böylece hiçbir bilgi kaybolmaz.
Ön işlenmiş veriler
Gözleri bulduğumuzda, onları veri setimiz için işlememiz gerekir. Bunu yapmak için, gözleri 24px boyutunda sabit bir kare şeklinde yeniden şekillendirebilir ve gölgeleri ortadan kaldırmak için histogram normalleştirmesini kullanabiliriz.
Gözleri çıkarmak için adımlar
O zaman girdi olarak standartlaştırılmış resimleri doğrudan kullanabiliriz, ancak daha faydalı işler yapma fırsatımız da var. Göz resimlerini kullanmak yerine, mevcut karedeki gözler ile önceki kare arasındaki farkı hesaplıyoruz. Bu, eylemleri kodlamanın çok etkili bir yoludur ve nihayetinde ihtiyacımız olan şey budur.
** Aşağıdaki GIF haricindeki tüm grafikler için, ekrandaki farklılıklar korkunç göründüğü için göz farklılıklarını temsil etmek için göz resimleri kullanacağım. **
Standart çerçeveler ve çerçeve farklılıkları arasında karşılaştırma
Artık gözleri işlediğimize göre, onlara aynı sınıftan iki temsilci olarak ayrı ayrı muamele edebilir veya tek bir resimmiş gibi birlikte kullanmayı seçebiliriz. İkincisini seçtim çünkü gözler aynı hareketi takip etse bile, her iki girdi de modeli daha sağlam hale getirecek.
* Yine de, yapmamız gereken şey, görüntüleri birbirine dikmekten daha akıllı.
Gözlerini birleştir
Bir veri kümesi oluşturun
kayıt
İki ayrı işlem için 50 örnek kaydettim (biri "gama" ve diğeri "Z" gibi görünüyor). Modelin tanıtımına yardımcı olması için örneklemin konumunu, ölçeğini ve hızını değiştirmeye çalıştım. Ayrıca kabaca desensiz göz hareketleri ve sabit çerçeveler içeren 50 "boşta" örnek ekledim.
Eylem örneği - "gama", "bağlama", "Z", "boşta"
Ne yazık ki, böyle bir görev için 150 örnek küçük, bu nedenle veri setini yeni örneklerle genişletmemiz gerekiyor.
Veri genişletme
Yapabileceğimiz ilk şey, herhangi bir dizi uzunluğunu (100 kare) sabitlemektir. Oradan daha kısa örnekleri yavaşlatabilir ve daha uzun örnekleri hızlandırabiliriz. Hız, hareketi tanımlayamadığı için bu mümkündür.
Aynı zamanda 100 kareden daha az olan dizi 100 kare pencerede herhangi bir zamanda tespit edilebildiğinden, doldurma örnekleri ekleyebiliriz.
Kayan pencereyi 100 karenin altındaki örneklerle doldurmak için kullanılır.
Bu tekniklerle veri setini yaklaşık 1000-2000 örneğe genişletebiliriz.
Nihai veri seti
......
Okumaya devam etmek için lütfen AI Araştırma Topluluğu topluluğumuza gidin: https://club.leiphone.com/page/TextTranslation/756
AI Araştırma Enstitüsü'nde daha heyecan verici içerikler mevcuttur.
Farklı alanlar arasında bilgisayar görüşü, konuşma semantiği, blok zinciri, otonom sürüş, veri madenciliği, akıllı kontrol, programlama dilleri ve diğer günlük güncellemeler bulunur.
Leifeng.com Leifeng.com (Resmi Hesap: Leifeng.com (Resmi Hesap: Leifeng.com))