TensorFlow.js, web geliştiricilerin tarayıcı tabanlı Yapay Zeka uygulamalarını yalnızca JavaScript kullanarak kolayca oluşturmasını ve çalıştırmasını sağlar.
“Yapay Zeka (YZ) ile ilgilenen bir web geliştiriciyseniz ve sıkıcı kurulumların baş ağrısı dayanılmaz bir hal aldıysa, bulut servislerinde barındırılabilen JavaScript ile Yapay Zeka uygulamalarını kolayca oluşturmak fikri cazip gelmez miydi? O zaman TensorFlow.js’i denemek için böyle buyrun.”
Geliştiriciler, bu JavaScript kütüphanesi sayesinde gerçek zamanlı olarak ses veya yüz ifadesi gibi kullanıcı girişlerine tepki veren akıllı uygulamalar oluşturmak için kolay bir şekilde kullanabilirler. İçerik önerisi, sesli komutlar veya jestler yoluyla etkileşim, ürünleri veya yerleri tanımlamak için cep telefonu kamerasını kullanma ve kullanıcıya günlük görevlerde yardımcı olmayı öğrenme gibi uygulama örnekleri verebiliriz.
Tensorflow.js’nin geleneksel sunucu (backend) odaklı Python tabanlı yaklaşımlara göre avantajlarına birlikte bakalım.
JavaScript ile Yapay Zeka Uygulamaları Geliştirmenin Avantajları
Geçmişte, en iyi makine öğrenmesi ve derin öğrenme frameworklerinin çoğu Python ve ilgili kütüphane ekosistemine hakimiyet gerektiriyordu. Derin öğrenme modellerini verimli bir şekilde eğitmek için NVIDIA GPU’larına ve CUDA gibi özel amaçlı donanım ve yazılımların kullanılmasını gerekiyordu. Bugüne kadar, makine öğrenmesini JavaScript uygulamalarına entegre etmek, makine öğrenmesi bölümünü AWS Sagemaker gibi veya Algorithmia gibi bulut hizmetlerine dağıtmak ve API istekleri yoluyla mümkün oluyordu. Şimdilerde ise TensorFlow.js ile makine öğrenmesi çözümlerine erişmek hızlı, kolay ve eğlenceli! 🕺
Ayrıca Tensorflow.JS JavaScript’te kod yazmanıza izin vermenin yanı sıra, her şeyi kullanıcı tarafında yapmanıza da olanak sağlar.
⭐️ Uygulamaları paylaşmak kolaydır
Makine öğrenmesi modelinizle etkileşime girebilmek için kullanıcıya bir URL vermeniz yeterli. Modeller, ek dosyalar veya kurulumlar olmadan doğrudan tarayıcıda çalıştırılır. Artık JavaScript’i bulutta çalışan bir Python dosyasına bağlamak zorunda değilsiniz. Sanal ortamlarla veya paket yöneticileriyle mücadele etmek yerine, tüm bağımlılıklar js dosyası olarak uygulamanıza dahil edilebilir. Bu, verimli bir şekilde birlikte çalışma yapmanızı, hızlı bir şekilde prototip oluşturmanızı ve kolay bir şekilde dağıtmanızı sağlar.
⭐️ İstemci (client) işlem gücü sağlar
Eğitim ve tahminler kullanıcının donanımına yüklenmektedir. Bu, geliştirici için önemli maliyet ve çabayı ortadan kaldırır. Potansiyel olarak pahalı olan bir uzak makineyi çalışır durumda tutmak, değişen kullanımı temel alan hesaplama gücünü ayarlamak veya servis başlatma zamanları konusunda endişelenmenize gerek yoktur. Ancak, müşterinin donanımının YZ modellerimizin talepler doğrultusunda tatmin edici bir deneyim sağlayacak kadar güçlü olmasına dikkat etmeliyiz.
⭐️ Veriler asla müşterinin cihazından ayrılmaz!
Son zamanlardaki büyük veri skandallarının ve güvenlik ihlallerinin ardından, hassas bilgileri korumak konusunda endişelerin arttığı bir gerçek! TensorFlow.js ile, kullanıcılar kişisel verilerini bir ağ üzerinden göndermeden ve bir üçüncü tarafla paylaşmadan YZ’den faydalanabilirler. Bu, veri güvenliği düzenlemelerini karşılayan, giyilebilir tıbbi sensörlere bağlı sağlık uygulamaları gibi güvenli uygulamalar oluşturmayı kolaylaştırır.
⭐️ Zengin sensör verilerine daha kolay erişim
Doğrudan JavaScript entegrasyonu, modelinizi mikrofon veya web kamerası gibi cihaz girişlerine bağlamayı kolaylaştırır. Tarayıcıda çalışan aynı kod mobil cihazlarda da çalıştığından ivmeölçer, GPS ve jiroskop verilerini de kullanabilirsiniz. Mobil işlemci üreticileri YZ ile optimize edilmiş yeni işlemciler üretmeye başladıklarında cihaz üzerinde derin öğrenme modellerinin eğitimi önümüzdeki birkaç yıl içinde daha kolay olacak gibi gözüküyor.
⭐️ Son derece etkileşimli ve uyarlanabilir deneyimler
İstemci tarafında gerçek zamanlı çıkarım, web kamerası hareketleri gibi kullanıcı girişlerine hemen yanıt veren uygulamalar yapmanıza olanak tanır. Örneğin, Google, kullanıcının başını hareket ettirerek Pacman oynamasına izin veren bir web kamerası oyunu yayınladı. Model, kullanıcının kafa hareketlerini belirli klavye kontrolleriyle ilişkilendirmek için eğitilmiştir. Önceden eğitilmiş modeller yüklenebilir ve daha sonra bunları belirli kullanıcılara uyarlamak için transfer öğrenmeyi kullanarak tarayıcıda ince ayar (fine-tuning) yapılabilir.
⭐️ Önceden eğitilmiş modellerin kullanımı
Tarayıcıya önceden eğitilmiş güçlü modeller yükleyerek karmaşık görevleri hızla gerçekleştirebilirsiniz. 🌠 Tekerleği yeniden icat etmeye veya sıfırdan başlamaya gerek yok. Buradan, artan sayıda mevcut model arasından seçim yapın veya TensorFlow dönüştürücü aracını kullanarak TensorFlow Python modellerinin Tensorflow.js için uygun formata dönüştürüp kullanabilirsiniz. TensorFlow.js, bu modelleri sensör verileri üzerinde yeniden eğitmenize ve bunları transfer öğrenimi yoluyla kendi uygulamanıza göre ayarlamanıza izin veren genişletilmiş öğrenmeyi de destekler. Tarayıcıda tek başına çoğu kişinin erişemeyeceği hesaplama kaynaklarını kullanarak genellikle büyük veri setlerinde eğitilen önceden eğitilmiş modellerin üzerine, kullanıcılarınızın ihtiyaçlarına göre ince ayar yaparak kullanmanıza olanak sağlar.
⭐️ Tüm GPU’lar için Donanım Hızlandırma
TensorFlow.js, WebGL kullanımı sayesinde model eğitimini ve çıkarımı hızlandırmak için yerleşik GPU cihazlarından yararlanıyor. Bir modeli eğitmek için CUDA yüklü olan bir NVIDIA GPU’ya ihtiyacınız yoktur. Bu sayede derin öğrenme modellerini AMD GPU’larda da eğitebilirsiniz!
⭐️ Node.js desteği
TensorFlow.js, Node.js’de CUDA desteğiyle de çalışır. Bu anlamda, JavaScript ile hem istemcide hem de sunucuda yayınlama konusundaki geleneksel faydasını yapay zeka alanına genişletir.
❗️️Gereksinimler
TensorFlow.js (TFJS), özellikle görüntü veya video verileri söz konusu olduğunda, tipik JS uygulamalarınızdan çok daha fazla kaynak kullanabilir.
En iyi performans için WebGL desteği ve GPU desteği olan tarayıcılar gerekir. Bu bağlantıyı ziyaret ederek WebGL’nin desteklenip desteklenmediğini kontrol edebilirsiniz. WebGL’de bile, kullanıcıların güncel video sürücülerinin olması gerekliliği nedeniyle GPU desteği eski cihazlarda kullanılamayabilir.
Modern donanım ve güncellenmiş yazılımın optimum performans elde etme gereklilikleri, kullanıcı deneyiminin cihazlar arasında büyük ölçüde değişmesine neden olabilir. Bu nedenle, bir TFJS uygulamasını dağıtmadan önce, çok çeşitli cihazlarda kapsamlı performans testi yapılmalıdır.
👾 Örnekler
Kullanmaya başlamak için kendi resmi sitesindeki dökümantasyonları ve örnekleri inceleyebilirsiniz.
Bazı eğlenceli örnekler;
🔹 Emoji Scavenger Hunt (Google) — Emoji ile gösterilen nesneleri kameranızdan fotoğraflamanız gereken eğlenceli bir oyun.
🔹 Teachable Machine (Google) — bir sinir ağını tarayıcı üzerinde eğiterek, çıktı olarak bir sese veya görüntüye bağlayabilirsiniz.
🔹 Emotion Extractor (Brendan Sudol) — yüz ifadelerinden duygu tanıyan ve bu duyguya karşılık emoji yerleştiren bir uygulama
🔹 Move Mirror (Google) — İnsan vücudunun iskeletini gerçek zamanlı olarak algılayan uygulama
🔹 Taş-Kağıt-Makas Oyunu (Yavuz Kömeçoğlu)— önce tarayıcı üzerinde taş-kağıt-makas ‘a karşılık örneklerle eğitip daha sonra oyunu başlatarak bilgisayara karşı hamlenizi yapıp oynayabilirsiniz.
💎 Developer Summit 2019 etkinliğinde yapmış olduğum sunum dosyasına ve taş-kağıt-makas oyununun kaynak kodlarına erişebilirsiniz.
Oyunlara ve uygulamalara ek olarak, TensorFlow.js, makine öğrenmede ve derin öğrenmede temel kavramları veya yeni yöntemleri iletmek üzere etkileşimli öğretim araçları oluşturmak için kullanılabilir:
🔹 GAN Lab — Çekişmeli Üretici Ağlar’ı (GAN) daha iyi anlamak için geliştirilmiş interaktif bir uygulama.
🔹 GAN Showcase — Çekişmeli Üretici Ağlar’lar (GAN) ile yüz resimleri üreten bir uygulama.
🔹 Web için tSNE — Çok boyutlu veri analizi için tSNE algoritmasının demosu.
🔹 Neural Network Playground: Yapay Sinir Ağları’nın yapısını anlamak için görselleştirilmiş çok güzel bir uygulama.
😲 TensorFlow.js’de daha da şaşırtıcı projeler görmek için bu galeriyi inceleyin!
🔗 Orjinal kaynak: Bringing Artificial Intelligence to the Browser with TensorFlow.js by Ryan Marchildon, Jan Scholz