PyTorch ve Keras TensorFlow mobil kullanılarak mobil cihazlara nasıl dağıtılır

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ğı

Popülerlik, bu hayatta asla iş değiştirmeyeceğini iddia eden Da Sima ile karşılaştırılabilir! Netizen: Yılan Kardeş de bunu söyledi!
önceki
6 cep telefonu markası Android P push planını açıkladı, en vicdanlı Nokia!
Sonraki
Hyundai'nin yeni enerji pazarı IONIQ önümüzdeki yıl Çin'e girecek
"Crazy Alien", Huang Bo Shen Teng'in uzaylılar tarafından kaçırıldığı önizlemesinin kaçırma versiyonunu ortaya koyuyor
Haier Zhao Feng: İnternet ve endüstriyel üretim gerçekten Nesnelerin İnterneti çağında birleşmeye başladı, IoT + AI akıllı evleri güçlendiriyor CCF-GAIR 2018
Düşük maliyetli şekillendirme aracı Bir cep telefonu kılıfını özelleştirmek, yeni kıyafetler satın almaktan çok daha uygun maliyetlidir!
Nubia Z18, yılın ikinci yarısında ana akıma liderlik ediyor ve çeşitli yeni "su damlası ekranları" ortaya çıkıyor!
Sao Nan sabah 1: 00'de panik içinde yayınlandı ve kız arkadaşının yedinci erkek kardeşi: Daha fazla çocuk istiyor musun? Netizenler saniyeler içinde anlar!
MIUI 9 sürüm süresi maruziyeti: sadece yeni özellikler kadar basit değil!
Haziran ayında AI etki faktörü envanteri, Megvii Technology ve Ali Dharma Institute lider
"Dünyadaki Son Gece" sadece bir öpücük değil, aynı zamanda bir ritüel duygusu da satar
Ya da 360N7 Pro ile aynı alanda çıkacak, hedef Lenovo Z5!
Tokyo'daki yerel kaykay grubu XK'yi takip edin, kaykayın üzerinde durun ve Tokyo sokaklarını fırçalayın!
LOL: Sao Nan ve küçük kardeşinden daha güçlü kim? Kör keşiş SOLO, Sao Nan açıkça kardeşinin suyu bırakmadığını söyledi!
To Top