-- derin öğrenme (deep learning)

Derin Öğrenme Modellerini Kullanan Bir Web Uygulamasının Geliştirilmesi

Merhaba,
Bu yazımızda Keras ile eğitilen bir derin öğrenme modelini kullanmak ve test etmek için bir web uygulamasını nasıl geliştirip ücretsiz olarak host edebiliriz birlikte görelim.

Python Flask ile Web Uygulaması

Flask, Python tabanlı web uygulamaları geliştirebileceğiniz mikroçatı(microframework)’dır.

Öncelikle Flask’ı yükleyelim.

Yeni bir app.py python dosyası oluşturalım ve aşağıdaki python kodlarını yazalım.

@app.route("/") ile  localhost:5000/ adresine istek gönderildiğinde ve def main(): fonksiyonu ile dönecek içerik için çağrılacak fonksiyon tanımlanıyor.

Terminalden oluşturduğumuz app.py kodumuzu çalıştıralım

Terminalde Running on http://127.0.0.1:5000/ çıktısını gördüğümüzde tarayıcımızdan http://localhost:5000/ adresine gittiğimizde main() fonksiyonunda döndüğümüz string değerini göreceğiz.

Flask ile HTML Template Kullanma

Yeni bir templates klasörü açalım ve templates klasörü içerisine bir index.html dosyası oluşturalım ve aşağıdaki html kodlarını yazalım.

app.py python dosyamızda render_template paketini import edelim ve main() fonksiyonunu, yeni oluşturduğumuz index.html’i çağırması için aşağıdaki şekilde yeniden düzenliyoruz.

Terminalden yeniden app.py’yi çalıştırdığımızda aşağıdaki gibi html sayfasını göreceğiz.

Python Flask ile basit bir web uygulamasınu bu şekilde geliştirebilirsiniz.

Derin Öğrenme Web Uygulaması Geliştirme

Şimdi web uygulamamızı geliştirerek derin öğrenme modelini nasıl çalıştırabileceğimize bakalım.

Gerekli Keras paketlerini, resim sınıflandırma için kullanacağımız ağımız olan ResNet50 paketini ve ön işlemler için gerekli diğer paketleri ekleyelim.

Resim sınıflandırma için ImageNet veriseti ile eğitilmiş modelimizi ve ağırlık dosyalarını yükleyelim.

Form post metodu ile gönderilen resim dosyasını modelin uygun giriş formata getiren bazı ön işlemler uygulandıktan sonra modele gönderilip tahmin (prediction) sonucunun alındığı ve json formatında geri döndürdüğümüz predict() fonksiyonunu aşağıdaki gibi tanımlayalım.

Son olarak geriye kalan bu servisi başlatmak.

Uygulamamızın bu hali ile bir REST API olarak kullanabilir durumdayız.

Terminalden uygulamamızı çalıştırdıktan sonra başka bir terminalden http://0.0.0.0:5000/predict adresine örnek bir resmimizi curl ile post ediyoruz.
Örnek olarak amerikan papağını resmini sınıflandırmaya çalışalım

Aşağıdaki gibi göndermiş olduğumuz resim modelde sınıflandırarak json sonucunu bize dönüyor.
Sonuçlar arasında en yüksek oranla %99 macaw olarak sınıflandırma yaptığını görüyoruz

Şimdi ise yazmış olduğumuz API’yi kullanarak web arayüzünden bir resim dosyayı seçerek sınıflandırmayı gerçekleştirelim.

Bunun için index.html sayfamıza kullanıcının resim yükleyebilmesi için bir form ve dosya yükleme elementleri ekleyelim.

Kullanıcı dosya yükleme elementi ile resim dosyasını seçtikten sonra ‘Gönder‘ buttonuna tıklandığında, jquery ajax ile seçilen dosyayı app.py python kodunda tanımladığımız predict() fonksiyonunu çağıran REST API’mize POST isteği gönderelim.

Uygulamanın tüm kaynak kodlarına buradan ulaşabilirsiniz.
Kaynak kodları Keras kütüphanesi yüklü bir bilgisayara indirerek çalıştırabilir veya online şekilde yayınlamak isterseniz yazıyı okumaya devam edebilirsiniz.

Web Uygulamasını Heroku Üzerinde Yayınlama

Heroku, birçok dil desteği olan, uygulama alt yapısı sağlayan bir bulut platformudur.

Heroku’ya uygun düzenlemeleri yapmak ve kendiniz heroku uygulaması oluşturmak isterseniz gerekli adımları Sıddık Açıl’ın aşağıdaki buradaki yazısına göz atabilirsiniz.

Veya herhangi bir işlem yapmadan Heroku üzerinden bir hesap oluşturarak bu uygulamaya özel olarak hazırladığım aşağıdaki button ile tek tıkla kendi heroku hesabınız altında hızlıca yayına alabilirsiniz.

Görüşlerinizi aşağıdaki yorum bölümüne yazabilirsiniz.

Kaynaklar:

Yorum Yaz

Yorum