İnternet üzerinden önceden eğitilmiş ve kullanıma hazır makine öğrenimi modellerine ulaşmanızın 2 farklı yolu vardır. Bunlardan biri; microservice olarak sunuldukları bulut platformları üzerinden online kullanmaktır. Diğeri ise; çeşitli dağıtım kanalları ve model marketlerinden indirerek istediğiniz yerel ya da bulut ortamında kullanmaktır. Burada her ikisi için de örnek kaynaklar ve nasıl kullanacağınız ile ilgili ipuçları paylaşacağız. Ancak bu yazının kapsamı içinde, indirdiğiniz bir modeli detaylı bir şekilde adım adım nasıl kullanırsınız tarzında yönerge yer almayacak. Muhtemelen ileride bu şekilde bir içeriğimizde olacak ama burada makine öğrenimi modellerini nasıl kullanabileceğinizden ziyade bu modellere nasıl ulaşabileceğiniz üzerinde duracağız.

Bir önceki konuda da bahsettiğimiz gibi bir modeli sıfırdan eğitmek için gereken görevler büyük miktarda veri, emek, zaman ve kaynak gerektirir. Bu nedenle, istediğiniz sonuca ulaşma süresi oldukça uzun olabilir. Bu süreyi azaltmak için, belirli sorun türleri için önceden eğitilmiş modellerden yararlanmak, bir çözüm yolu olabilir. Bu önceden eğitilmiş makine öğrenimi modelleri hemen kullanıma hazır olabilir, veya eğitilmesi daha az zaman alabilir. 

Makine Öğrenimi Modelleri, hesaplama kaynakları ve etki alanı uzmanlığı kullanılarak bir model üzerinde veri yürütülerek oluşturulur. Araştırma, değerlendirme, test, eğitim ve doğrulama adımları tamamlandıktan sonra doğrulanmış bir modele sahip olursunuz.  

Bu kaynaklarda; nesne algılama, resim, ses, video ve metin sınıflandırması, adlandırılmış varlık tanıma, görüntüden metne çeviri, insan pozu algılama ve daha fazlası dahil olmak üzere çeşitli alanlar için bir çok model bulabilirsiniz. 

Tipik bir model yayınlama mikro hizmeti şu bileşenlerden oluşur; 

  • Önceden eğitilmiş bir derin öğrenme modeli,
  • Model tarafından analiz edilmeden önce girdiyi ön işleme tabi tutan kod,
  • Model çıktısını işlem sonrası işleyen kod,
  • Hizmet işlevselliğini uygulamalar için kullanılabilir hale getiren standartlaştırılmış bir genel API. 

Makine öğrenimi modelleri; uygulama, paketleme, belgeleme ve test adımlarını tamamlandıktan sonra bulut üzerinden bir mikro hizmet olarak sunulabilir. 

Model sunan mikro hizmetler, girdileri doğrulanmış bir model üzerinden çalıştırarak ve ardından çıktıyı bir rest API’si ile yayınlayarak oluşturulur. Bu API’ye çeşitli programlama dilleri ile erişip, kullanarak kendi uygulamanızı oluşturabilirsiniz.

Makine Öğrenimi Modelleri

En popüler kullanıma hazır makine öğrenimi modelerini şu kaynaklarda bulabilirsiniz;

Bunlardan IBM MAX’e göz atalım. IBM Developer platformundaki Model Asset eXchange veya kısa adıyla “MAX”, derin öğrenme modelleri için ücretsiz bir açık kaynak dağıtım merkezidir. Bu mikro hizmetler, yaygın iş sorunlarını çözmek için önceden eğitilmiş veya özel olarak eğitilebilir derin öğrenme modellerini kullanıma hazır şekilde yapılandırmışlardır. 

Bu makine öğrenimi modelleri önceden test edilmiştir ve yerel ve bulut ortamlarında hızlı bir şekilde devreye alınabilir. MAX’taki tüm modeller izin verilen açık kaynak lisansları altında mevcuttur. Bu da kişisel ve ticari amaçlarla kullanılmasını kolaylaştırır ve yasal yükümlülük riskini azaltır.

MAX’de model sunan mikro hizmetler, açık kaynaklı Docker imajları olarak sunulur. Docker, uygulama oluşturmayı ve dağıtmayı kolaylaştıran bir kapsayıcı(container) platformudur. 

Kapsayıcı platformlar ya da daha sık duyduğunuz terimsel ifadesi ile Konteyner(Container), bir uygulamanın üzerinde çalıştığı platformdan izole bir ortam içerisinde çalıştırılmasını sağlar.

Örneğin bir web uygulaması geliştirdiğinizi varsayalım. Bunun için Apache web sunucusu, MySQL veritabanı sunucusu, PHP, Python gibi yazılım dilleri ve destekleyici bir çok kütüphanenin ya da çerçevenin(framework) kurulumuna ihtiyacınız olacaktır. Bunları tek tek donanımınıza kurabilirsiniz tabii. Ama birden fazla geliştirme ortamı ile uygulama geliştiriyorsanız, kurup kullanmanız gereken onlarca sunucu, bileşen v.s olacaktır. Bunlar ortamınızı kısa zamanda çöplüğe çevirebileceği için güncellenmesi, yönetilmesi zordur. Ayrıca kullanılmadıkları zamanlarda dahi arkaplanda çalışmaya devam ederek kaynak tüketmeye devam ederler. İşte bu sorunu çözmenin yolu bir kapsayıcı ortam içinde bunları paketlemektir. Yani konteyner oluşturmaktır. Böylece hangi ortam(web, mobil, yapay zeka v.s) ile ilgili geliştirme yapacaksanız önce o ortamı çalıştırır, sonra üzerinde geliştirme yaparsınız. Bunlardan da en popüler olanları Docker ve Kubernetes’dir.

Docker imajları GitHub’da yayınlanır ve kişisel ya da ticari ortamlarda kullanılmak üzere indirilebilir ve özelleştirilebilir. Bu Docker imajlarının dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için Kubernetes açık kaynak sistemini kullanabilirsiniz. 

Kurumsal düzeyde popüler Kubernetes platformları;

Şimdi konumuza geri dönelim ve IBM MAX platformundan bir makine öğrenimi modelinin kullanımını örnek olarak inceleyelim.

İlk adım olarak ml-exchange.org adresine gidelim.

makine öğrenimi modelleri

Burada “Models” sayfasında önceden tanımlanmış birden fazla modeli görüntüleyebilir ve kullanabilirsiniz. Biz örneğimiz için önceden tanımlanmış nesne dedektörü modelini alalım. 

Kullanıma Hazır Makine Öğrenimi Modelleri 1

Bu model, verilen bir resimde yer alan nesneleri tanımak üzere eğitilmiş ve nesne algılamada uzmanlaşmış evrişimli katmanlar eklenmiş bir derin evrişimli(convolutional neural network) ağ temel modelidir. 

Model sayfasında bu model ile ilgili detaylı bilgilere ulaşabilirsiniz. Kullanım ipuçlarına bağlantılar ve modeli yerel bilgisayarınızda ya da bulut sunucular üzerinde nasıl yayınlayabileceğiniz ile ilgili bilgiler de bulabilirsiniz.

Kullanıma Hazır Makine Öğrenimi Modelleri 2

Bu modelin yaptığı işi kolayca görebilmeniz için, sizlere bir web uygulaması örneği hazırladım. https://www.obenseven.com.tr/nesne_tespiti/ adresinde ziyaret edip, kullanabilirsiniz.

Kullanıma Hazır Makine Öğrenimi Modelleri 3

Bu model, bir görüntüdeki nesneleri tanımlamak için eğitilmiştir ve görüntünün her pikselini denetleyerek eğitim verisi ile oluşan benzerliklerden yararlanarak belirli bir nesne olup olmadığını test eder.

Burada bir kişiye ait, ya da köpek, kedi, kamyon, veya araba gibi farklı resimler yükleyebilirsiniz. Hatta web kameranız aracılığıyla hemen deneyebilirsiniz. Canlı video görüntüsü üzerinde nesne tanıma özelliğine göz atabilirsiniz. 

Model daha önce etiketli görüntüler üzerinde eğitilmişti, bu nedenle artık etiketlenmemiş olsalar bile resimlerin içinde yer alan nesneleri tanıyabilir. Tabii tanıyabileceği nesneler eğitim verisi ile bağlantılıdır. Örneğin bir şişeyi tanırken bardağı tanımıyorsa eğer şaşırmayın. Ne kadar büyük eğitim verisi o kadar yüksek başarı oranı demek. 

Model tahmin uç noktasını çağırdığında ne olacağını görmek için bir resim yükleyelim.

Kullanıma Hazır Makine Öğrenimi Modelleri 4

Resmin alt tarafında yer alan 2 butondan sağda yer alan “Nesne Tahminlerini Göster”e tıklayın. Bu, tahmin için ilgili modelin çalıştığı sunucu URL’sinde yer alan uygulama API uç noktasını(API Endpoint) çağırır ve modelin tanımladığı nesneleri geri döndürür. 

Önceden oluşturulmuş TensorFlow.js modeli, giriş görüntüsünü ön işleme için hazırlar. 

Derin öğrenme modeli algoritması, görüntüdeki farklı nesneleri tanımlar. 

Tahmin sonuçlarını kullanarak yanıtını oluşturur ve sonucu uygulamaya döndürür. Burada yer alan Javascript uygulamasında API uç noktasından(endpoint) dönen cevapları aynı sayfa içerisinde görüntülüyoruz.

Kullanıma Hazır Makine Öğrenimi Modelleri 5

Model mevcut görüntü içinde tanımlayabildiği nesnelerin ayrı ayrı resimler halinde hangi nesne olduğunu üzerine etiketleyerek bize geri döndürüyor.

Bizim yüklediğimiz evdeki halının üzerinde uzanmış tembellik yapan “Kira”nın resminde ana görüntüyü arkaplan olarak etiketledi;

Kullanıma Hazır Makine Öğrenimi Modelleri 6

Hemen altında ise “Kira”yı Kedi olarak doğru bir şekilde tanımış;

Kullanıma Hazır Makine Öğrenimi Modelleri 7

Böylece modelin önceden tanımlanmış etiketler kullanmadan bir görüntü içindeki öğeleri tanımlayabildiğini görmüş olduk. 

Siz de web kameranız üzerinden ya da yükleyeceğiniz resimler ile kendi testlerinizi gerçekleştirebilirsiniz.