Lei Feng Net Not: Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur, orijinal başlık PyTorch ve Keras Modellerini TensorFlow Mobile ile Android'e Dağıtmaktır ve yazar John Olafenwa'dır.
Tercüme | Düzenleyen Yu Zhipeng | MY
Bu yıl itibariyle 2 milyardan fazla aktif Android cihaz var. Android telefonların hızlı popülaritesi büyük ölçüde haritalardan görüntü düzenleyicilere kadar çeşitli akıllı uygulamalardan kaynaklanmaktadır. Derin öğrenmenin ortaya çıkmasıyla mobil uygulamalarımız daha akıllı hale gelecektir. Derin öğrenmeye dayalı yeni nesil mobil uygulamalar öğrenebilecek ve özellikleri sizin için özelleştirebilecek. Dikkate değer bir örnek, yaygın olarak kullandığınız kelimeleri ve cümleleri öğrenerek hızlı bir şekilde yazmanıza yardımcı olabilecek bir klavye uygulaması olan "Microsoft Swiftkey" dir.
Bilgisayarla görme, doğal dil işleme, konuşma tanıma ve konuşma sentezi gibi teknolojiler, mobil uygulamalarda kullanıcı deneyimini büyük ölçüde geliştirebilir. Neyse ki, mobil uygulamalarda derin öğrenme modellerinin dağıtımını ve yönetimini basitleştirmek için geliştirilmiş birçok araç bulunmaktadır. Bu yazıda, PyTorch ve Keras'ın TensorFlow mobil kullanarak mobil cihazlara nasıl dağıtılacağını açıklayacağım.
TensorFlow mobil ile Android cihazlara bir model dağıtmanın üç adımı vardır:
Egzersiz modunuzu TensorFlow'a dönüştürün
TensorFlow mobile'ı Android uygulamasına ek bir özellik olarak ekleyin
Çıkarım yapmak üzere Java kodu yazmak için uygulamanızda TensorFlow modunu kullanın.
Bu yazıda, tüm süreci tanıtacağım ve sonunda görüntü tanıma işlevine sahip bir Android uygulamasını tamamlayacağım.
Kurulum
Bu eğitici, PyTorch ve Keras'ın iki çerçevesini kullanacaktır - kullanmak istediğiniz makine öğrenimi çerçevesini kurmak için aşağıdaki talimatları izleyin. Hangisini kuracağınızı siz seçersiniz.
İlk olarak, TensorFlow'u kurun:
PyTorch geliştiriciyseniz , PyTorch'un en son sürümünü yüklediğinizden emin olun. PyTorch'u yükleme talimatları için lütfen önceki makaleme bakın.
Keras geliştiriciyseniz , Yüklemek için aşağıdaki komutu kullanın:
Android Studio (en az sürüm 3.0)
https://developer.android.com/studio
PyTorch modunu Keras moduna dönüştürme
Bu bölüm yalnızca PyTorch geliştiricileri içindir. Keras kullanıyorsanız, "Keras modunu TensorFlow moduna dönüştürme" bölümüne geçebilirsiniz.
Yapmamız gereken ilk şey, PyTorch modu parametrelerimizi Keras'taki eşdeğer parametrelere dönüştürmektir.
Bu süreci basitleştirmek için, dönüşümü otomatik olarak çalıştıracak bir komut dosyası oluşturdum. Bu eğitimde Squeezenet kullanacağız. Bu, makul doğrulukta küçük bir mobil mimaridir. Eğitim öncesi modunu buradan indirin (sadece 5M!).
Ağırlıkları dönüştürmeden önce, Squeezenet modelini PyTorch ve Keras'ta tanımlamamız gerekir.
Aşağıdaki şekilde gösterildiği gibi, Squeezenet'i bu iki çerçeve altında tanımlayın ve ardından PyTorch ağırlıklarını Keras'a dönüştürün.
Convert.py dosyasını oluşturun, aşağıdaki kodu ekleyin ve komut dosyasını çalıştırın.
Ağırlıklar yukarıda dönüştürülmüştür, tek yapmanız gereken Keras modelini squeezenet.h5 olarak kaydetmek. Bu noktada PyTorch modelini atıp bir sonraki adıma geçebiliriz.
Keras'ı TensorFlow moduna dönüştürme
Bu noktada, PyTorch'tan dönüştürülmüş veya doğrudan Keras ile eğitilmiş olsun, Keras moduna zaten sahipsiniz. Önceden eğitilmiş Keras Squeezenet modunu buradan indirebilirsiniz. Bir sonraki adım, tüm model mimarimizi ve ağırlıklarımızı çalıştırılabilir bir TensorFlow modeline dönüştürmektir.
Yeni bir ConvertToTensorflow.py dosyası oluşturun ve aşağıdaki kodu ekleyin.
Yukarıdaki kod bizim squeezenet.pb'mizi output_dir'e kaydeder. Ve aynı klasörde TensorBoard olayları oluşturdu.
Modelinizi daha net anlamak için TensorBoard'u kullanarak görselleştirebilirsiniz.
Komut satırını açın ve girin
tensorboard logdir = output_dir_path
output_dir_path, output_dir yolunuzdur.
TensorBoard başarıyla başlatıldığında, şu url'yi açmanızı isteyen bir istem göreceksiniz: COMPUTER_NAME: 6006
URL adresini tarayıcıya girin ve aşağıdaki arayüz görüntülenecektir.
Modunuzu görselleştirmek için İÇERİ AKTAR'a çift tıklayın.
Modele daha yakından bakın ve giriş ve çıkış düğümlerinin adlarını not edin (çerçevedeki ilk ve sonuncu).
Adınız önceki kodumla aynıysa, bunlar girdi_1 ve çıktı_1 olmalıdır.
Bu noktada modelimiz çağrılabilir.
TensorFlow Mobile'ı projenize ekleyin
TensorFlow, mobil cihazlar için "TensorFlow Mobile" ve "TensorFlow Lite" olmak üzere iki kitaplığa sahiptir. Lite sürümü çok küçük olacak şekilde tasarlanmıştır ve tüm bağımlı kitaplıklar yalnızca yaklaşık 1M'dir. Modeli de daha optimize edilmiştir. Ek olarak, Android 8 ve üzeri cihazlarda hızlandırma için sinir ağı API'leri de kullanılabilir. "TensorFlow Mobile" dan farklı olarak, "TensorFlow Lite." Şu anda mükemmel değildir ve bazı katmanlar beklenen sonuçları elde edemez. Ek olarak, Windows sistemi henüz kitaplıkları derleme ve modları yerel biçimlere dönüştürme işlemlerini desteklemiyor. Bu nedenle, bu eğiticide TensorFlow Mobile'a bağlı kaldım.
Mevcut proje yoksa, yeni bir Android projesi oluşturmak için Android Studio'yu kullanın. Ardından TensorFlow Mobile bağımlılık kitaplığını build.gradle dosyanıza ekleyin.
uygulama "org.tensorflow: tensorflow-android: +"
Android studio, gradle'ı senkronize etmenizi, Şimdi Senkronize Et'i tıklamanızı ve senkronizasyonun tamamlanmasını beklemenizi ister.
Bu noktada proje oluşturulur.
Mobil uygulamanızda çıkarım yapın
Kodla çıkarım yapmadan önce, dönüştürülmüş modu (squeezenet.pb) uygulamanızın kaynak klasörüne eklemeniz gerekir.
Android Studio'da projenize sağ tıklayın, fareyi "Klasör Ekle" seçeneğine getirin ve "Kaynak Klasörü" seçeneğini seçin. Şu anda, uygulama dizininizde bir kaynak klasörü oluşturulacaktır. Ardından kalıbınızı bu dizine kopyalayın.
Etiket sınıfını indirmek ve dosyayı kaynak dizinine kopyalamak için burayı tıklayın.
Artık projeniz, görüntüleri sınıflandırmak için tüm araçları içeriyor.
Projenizin ana paketine yeni bir Java sınıfı ekleyin, ImageUtils olarak adlandırın ve aşağıdaki kodu içine kopyalayın.
Yukarıdaki kodu anlamamanız önemli değil, bunlar çekirdek TensorFlow-Mobile kitaplığında uygulanmayan bazı işlevlerdir. Bu nedenle, bazı resmi örneklere atıfta bulunduktan sonra, takip çalışmasını kolaylaştırmak için bu kodları yazdım.
Ana etkinliğinizde, görüntüyü ve tahmin sonuçlarını görüntülemek için kullanılacak bir ImageView ve TextView oluşturun.
Ana etkinliğinizde, TensorFlow çıkarım kitaplığını yüklemeniz ve bazı sınıf değişkenlerini başlatmanız gerekir. OnCreate yönteminizden önce aşağıdakileri ekleyin:
Tahmin sınıfını hesaplamak için bir işlev ekleyin:
Görüntü Bit Eşlemini almak ve üzerinde çıkarım yapmak için bir işlev ekleyin:
Yukarıdaki kod, tahmini bir arka plan iş parçacığında çalıştırır ve tahmin edilen sınıfı ve değerlendirme puanını daha önce tanımladığımız TextView'a yazar.
Ana UI iş parçacığında çıkarım yaparken askıda kalabileceğini unutmayın. Bir prensibi hatırlayın: "Her zaman arka plan iş parçacığınız üzerinde çıkarım yapın!"
Bu öğreticinin odak noktası, kaynak klasörüne bir kuş görüntüsünü eklediğim görüntü tanıma. Standart bir uygulamada, görüntüyü dosya sisteminden yüklemek için kodu kullanırsınız.
Tahmin yapmak istediğiniz tüm görüntüleri kaynak klasörüne ekleyin. Algoritmayı rahatça çalıştırmak için aşağıdaki kodda bir butona tıklama monitörü ekledik. Dinleyici, görüntüyü yükleyebilir ve tahmin işlevini çağırabilir.
iyi! Tüm adımlar tamamlandı! Sorun olup olmadığını kontrol etmek için çift tıklayın. "Toplu APK" düğmesini tıklayın.
APK hızlı bir şekilde oluşturulur ve ardından Uygulama cihaza yüklenir ve çalıştırılır.
Sonuç aşağıda gösterilmiştir:
Yenileyici bir deneyim elde etmek için, Uygulamanızın Android dosya sisteminden görüntüleri yüklemesi veya kaynak klasöründen yüklemek yerine görüntüleri yakalamak için kamerayı kullanması gerekir.
sonuç olarak
Mobil derin öğrenme çerçevesi, nihayetinde uygulamaları geliştirme ve kullanma şeklimizi değiştirecek. Yukarıdaki kodu kullanarak, eğitimli PyTorch ve Keras modellerinizi TensorFlow'a kolayca aktarabilirsiniz. TensorFlow Mobile'ı ve bu makalede anlatılan adımları kullanarak, mükemmel AI işlevlerini mobil uygulamalarınıza mükemmel şekilde entegre edebilirsiniz.
Android projesi için eksiksiz kod ve model dönüştürme aracı GitHub'ımda bulunabilir.
Orijinal bağlantı: https://heartbeat.fritz.ai/deploying-pytorch-and-keras-models-to-android-with-tensorflow-mobile-a16a1fb83f2
Lei Feng Ağı Lei Feng Ağı