1. Başlamadan önce
Önceki codelab'de, Android ve iOS için birkaç yüz görüntü sınıfını tanıyan temel bir görüntü etiketleme modeli kullanan bir uygulama oluşturmuştunuz. Bir çiçeğin resmini taç yapraklar, çiçek, bitki ve gökyüzü gibi çok genel bir şekilde değerlendirdi.
Örneğin, uygulamayı belirli çiçekleri, papatyaları veya gülleri tanıyacak şekilde güncellemek için, tanımak istediğiniz her çiçek türünden çok sayıda örnekle eğitilmiş özel bir modele ihtiyacınız vardır.
Ön koşullar
- Bu öğrenme rotasındaki önceki Codelab.
Neler geliştirip öğreneceksiniz?
- TensorFlow Lite Model Maker kullanarak Resim Sınıflandırıcı özel modelini eğitme.
Gerekenler
- Belirli bir donanım gerekmez. Tarayıcıda Google Colab kullanılarak tüm işlemler tamamlanabilir.
2. Başlayın
Uygulanacak tüm kodlar sizin için hazırlanmıştır ve Google Colab'i kullanarak yürütmek üzere buradan yararlanabilirsiniz. Google Colab'e erişiminiz yoksa depoyu klonlayıp ImageClassificationMobile->colab
dizininde bulunan CustomImageClassifierModel.ipynb
adlı not defterini kullanabilirsiniz.
Belirli çiçeklere ilişkin çok sayıda örneğiniz varsa bir modeli TensorFlow Lite Model maker ile eğiterek bu çiçekleri tanımak nispeten kolay olacaktır.
Bunu yapmanın en kolay yolu, resimleri içeren, dizinlere ayrılmış bir .zip veya .tgz dosyası oluşturmaktır. Örneğin, papatya, karahindiba, gül, ayçiçeği ve lale resimlerini kullanıyorsanız bu resimleri şu şekilde dizinler halinde organize edebilirsiniz:
Zip dosyasını sıkıştırıp bir sunucuda barındırın, böylece modelleri bu araçla eğitebilirsiniz. Bu laboratuvarın geri kalanında sizin için hazırlanan bir uygulamayı kullanacaksınız.
Bu laboratuvarda, modeli eğitmek için Google Colab'i kullandığınız varsayılır. Colab'i colab.research.google.com adresinde bulabilirsiniz. Başka bir ortam kullanıyorsanız TensorFlow da dahil olmak üzere çok sayıda bağımlılık yüklemeniz gerekebilir.
3. Bağımlıları yükleme ve içe aktarma
- TensorFlow Lite Model Maker'ı yükleyin. Bunu pip yükleme ile yapabilirsiniz. &> /dev/null at the end just suppresses the output. Model Maker, hemen alakalı olmayan birçok öğe üretir. Şu an elinizdeki göreve odaklanabilmeniz için azaltıldı.
# Install Model maker
!pip install -q tflite-model-maker &> /dev/null
- Ardından, kullanmanız gereken kitaplıkları içe aktarmanız ve TensorFlow 2.x kullandığınızdan emin olmanız gerekir:
# Imports and check that we are using TF2.x
import numpy as np
import os
from tflite_model_maker import configs
from tflite_model_maker import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import image_classifier
from tflite_model_maker.image_classifier import DataLoader
import tensorflow as tf
assert tf.__version__.startswith('2')
tf.get_logger().setLevel('ERROR')
Ortam hazır olduğuna göre sıra, modelinizi oluşturmaya geldi.
4. Verilerinizi İndirme ve Hazırlama
Resimleriniz klasörler halinde organize edilmişse ve bu klasörler sıkıştırılmışsa; zip dosyasını indirip sıkıştırılmış olarak açarsanız resimleriniz, bulundukları klasöre göre otomatik olarak etiketlenir. Bu dizine data_path
olarak referans verilir.
data_path = tf.keras.utils.get_file(
'flower_photos',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
Bu veri yolu daha sonra TensorFlow Lite Model Maker'ın ImageClassifierDataLoader
sınıfıyla eğitim için bir nöral ağ modeline yüklenebilir. Bunun için klasöre işaret etmeniz yeterlidir.
Modelleri makine öğrenimiyle eğitmenin önemli unsurlarından biri, verilerinizin tümünü eğitim için kullanmamaktır. Biraz basılı tutarak modeli daha önce görmediği verilerle test edin. Bu işlemi, ImageClassifierDataLoader
alanından alınan veri kümesinin bölme yöntemi ile kolayca yapabilirsiniz. Ona 0, 9 yazarak% 90'ını eğitim verileriniz, %10'unu ise test verileriniz olarak alırsınız:
data = DataLoader.from_folder(data_path)
train_data, test_data = data.split(0.9)
Verileriniz hazır olduğuna göre artık bu verileri kullanarak bir model oluşturabilirsiniz.
5. Resim Sınıflandırıcı Modelini Oluşturma
Model Maker, nöral ağı tasarlamaya ilişkin birçok ayrıntıyı soyutladığından, ağ tasarımıyla ve kıvrımlar, yoğun, belirsizlik, düzleştirme, kayıp işlevleri ve optimize ediciler gibi konularla uğraşmak zorunda kalmazsınız. Varsayılan bir model için, sağlanan verilerle nöral ağı eğiterek yalnızca tek bir kod satırı kullanarak model oluşturabilirsiniz:
model = image_classifier.create(train_data)
Bu komut dosyasını çalıştırdığınızda aşağıdakine benzer bir çıkış görürsünüz:
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
hub_keras_layer_v1v2_2 (HubK (None, 1280) 3413024
_________________________________________________________________
dropout_2 (Dropout) (None, 1280) 0
_________________________________________________________________
dense_2 (Dense) (None, 5) 6405
=================================================================
Total params: 3,419,429
Trainable params: 6,405
Non-trainable params: 3,413,024
_________________________________________________________________
None
Epoch 1/5
103/103 [===] - 15s 129ms/step - loss: 1.1169 - accuracy: 0.6181
Epoch 2/5
103/103 [===] - 13s 126ms/step - loss: 0.6595 - accuracy: 0.8911
Epoch 3/5
103/103 [===] - 13s 127ms/step - loss: 0.6239 - accuracy: 0.9133
Epoch 4/5
103/103 [===] - 13s 128ms/step - loss: 0.5994 - accuracy: 0.9287
Epoch 5/5
103/103 [===] - 13s 126ms/step - loss: 0.5836 - accuracy: 0.9385
İlk bölüm, model mimarinizi gösterir. Model Maker'ın perde arkasında yaptığı şey Öğrenimi Aktar. Bu işlem,başlangıç noktası olarak mevcut bir modelin kullanıldığı modeldir. Modelin, resimlerin nasıl oluşturulduğuna dair öğrendiklerini alıp bunları 5 çiçeğin anlaşılmasına uygulamak için de kullanabilirsiniz. Bunu, şu ilk satırda görebilirsiniz:
hub_keras_layer_v1v2_2 (HubK (None, 1280) 3413024
Buradaki kilit nokta, bu modelin TensorFlow Hub'dan geldiğini gösteren "Hub" kelimesi. TensorFlow Lite Model Maker varsayılan olarak "MobileNet" adlı bir model kullanır 1000 resim türünü tanıyacak şekilde tasarlanmıştır. Buradaki mantık, modelin "özellikleri" öğrenerek kullandığı metodolojinin birbirinden ayırabilmenizi sağlar. Aynı "özellikler" 5 çiçek sınıfımızla eşleştirilebiliyor. Böylece, bunların sıfırdan öğrenilmesi gerekmiyor.
Model 5 dönemden geçti. Burada dönem, nöral ağın görüntüleri etiketleriyle eşleştirmeye çalıştığı tam bir eğitim döngüsüdür. 5 dönem boyunca, yaklaşık 1 dakika içinde eğitim verileri% 93, 85 oranında doğruydu. 5 sınıf olduğu düşünüldüğünde, rastgele bir tahmin% 20 doğru olacaktır. (Ayrıca bir "kayıp" numarası da bildirir, ancak şimdilik bu sayıyı güvenli bir şekilde göz ardı edebilirsiniz.)
Daha önce verileri eğitim ve test verilerine böldünüz. Böylece, ağın daha önce görmediği veriler üzerindeki performansına ilişkin bir ölçüm elde edebilirsiniz. Bu, test verilerinde model.evaluate
kullanarak ağın gerçek dünyada nasıl performans gösterebileceğine dair daha iyi bir göstergedir:
loss, accuracy = model.evaluate(test_data)
Bu komut şuna benzer bir çıktı verir:
12/12 [===] - 5s 115ms/step - loss: 0.6622 - accuracy: 0.8801
Bu bilgilerin doğruluğuna dikkat edin. Bu oran %88,01'dir.Yani gerçek dünyada varsayılan model kullanılırken bu doğruluk düzeyi beklenmelidir. Bu, yaklaşık bir dakika boyunca eğittiğiniz varsayılan model için fena değil. Elbette modeli iyileştirmek için birçok ince ayar yapabilirsiniz ve bu başlı başına bir bilimdir.
6. Modeli Dışa Aktarma
Model eğitildi. Bir sonraki adım, modeli bir mobil uygulamanın kullanabileceği .tflite biçiminde dışa aktarmaktır. Model oluşturucu, kullanabileceğiniz kolay bir dışa aktarma yöntemi sağlar. Çıkışın yapılacağı dizini belirtmeniz yeterlidir.
Kod:
model.export(export_dir='/mm_flowers')
Bunu Google Colab'de çalıştırıyorsanız ekranın solundaki klasör simgesini tıklayarak modeli görebilirsiniz:
Burada geçerli dizinin bir listesini görürsünüz. "Yukarı" taşımak için belirtilen düğmeyi kullanın dizin:
Kodunuzda, mm_flowers dizinine dışa aktarmayı belirttiğiniz yer. Bu dosyayı açtığınızda "model.tflite
" adlı bir dosya göreceksiniz. Bu, eğitilen modelinizdir.
Dosyayı seçtiğinizde sağda 3 nokta pop-up'ını görürsünüz. İçerik menüsünü görmek için bunları tıklayın. Ardından, modeli buradan indirebilirsiniz.
Birkaç saniye sonra modeliniz, indirilenler klasörünüze indirilir.
7. Tebrikler
Artık bu uygulamayı mobil uygulamanıza entegre etmeye hazırsınız. Bu işlemi bir sonraki laboratuvarda yapacaksınız.