![]() | ![]() | ![]() | ![]() | ![]() |
TensorFlow Lite Modeli Üretici kütüphanesi uyarlama ve cihaz üzerinde ML uygulamaları için, bu model dağıtırken, özellikle veri girmek için TensorFlow nöral ağ modeli dönüştürme işlemini basitleştirir.
Bu defter, çiçekleri bir mobil cihazda sınıflandırmak için yaygın olarak kullanılan bir görüntü sınıflandırma modelinin uyarlanmasını ve dönüştürülmesini göstermek için bu Model Oluşturucu kitaplığını kullanan uçtan uca bir örnek gösterir.
Önkoşullar
Bu örneği çalıştırmak için, biz GitHub'dan o Modeli Üretici paketinin dahil olmak üzere birçok gerekli paketleri, yüklemeniz gerekir Repo .
pip install -q tflite-model-maker
Gerekli paketleri içe aktarın.
import os
import numpy as np
import tensorflow as tf
assert tf.__version__.startswith('2')
from tflite_model_maker import model_spec
from tflite_model_maker import image_classifier
from tflite_model_maker.config import ExportFormat
from tflite_model_maker.config import QuantizationConfig
from tflite_model_maker.image_classifier import DataLoader
import matplotlib.pyplot as plt
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/pkg_resources/__init__.py:119: PkgResourcesDeprecationWarning: 0.18ubuntu0.18.04.1 is an invalid version and will not be supported in a future release PkgResourcesDeprecationWarning, /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/numba/core/errors.py:168: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9 warnings.warn(msg)
Basit Uçtan Uca Örnek
veri yolunu al
Bu basit uçtan uca örnekle oynamak için bazı resimler alalım. Yüzlerce görüntü, Model Oluşturucu için iyi bir başlangıçtır, ancak daha fazla veri daha iyi doğruluk sağlayabilir.
image_path = tf.keras.utils.get_file(
'flower_photos.tgz',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
extract=True)
image_path = os.path.join(os.path.dirname(image_path), 'flower_photos')
Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz 228818944/228813984 [==============================] - 1s 0us/step 228827136/228813984 [==============================] - 1s 0us/step
Sen yerini alabilir image_path
kendi görüntü klasörlerle. Colab'e veri yüklemeye gelince, aşağıdaki resimde gösterilen sol kenar çubuğunda kırmızı dikdörtgen ile yükle düğmesini bulabilirsiniz. Sadece bir zip dosyası yüklemeyi ve sıkıştırmayı açmayı deneyin. Kök dosya yolu, geçerli yoldur.
Eğer buluta resim yüklemek için tercih etmiyorsanız, aşağıdaki yerel kütüphane çalıştırmayı deneyebilirsiniz kılavuzunda GitHub'dan içinde.
Örneği çalıştır
Örnek, aşağıda gösterildiği gibi, her biri genel sürecin bir adımını temsil eden 4 satır koddan oluşur.
Adım 1. Bir cihazdaki makine öğrenimi uygulamasına özel giriş verilerini yükleyin. Bunu eğitim verileri ve test verileri olarak ayırın.
data = DataLoader.from_folder(image_path)
train_data, test_data = data.split(0.9)
INFO:tensorflow:Load image with size: 3670, num_label: 5, labels: daisy, dandelion, roses, sunflowers, tulips.
Adım 2. TensorFlow modelini özelleştirin.
model = image_classifier.create(train_data)
INFO:tensorflow:Retraining the models... Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= hub_keras_layer_v1v2 (HubKer (None, 1280) 3413024 _________________________________________________________________ dropout (Dropout) (None, 1280) 0 _________________________________________________________________ dense (Dense) (None, 5) 6405 ================================================================= Total params: 3,419,429 Trainable params: 6,405 Non-trainable params: 3,413,024 _________________________________________________________________ None Epoch 1/5 /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead. "The `lr` argument is deprecated, use `learning_rate` instead.") 103/103 [==============================] - 7s 35ms/step - loss: 0.8551 - accuracy: 0.7718 Epoch 2/5 103/103 [==============================] - 4s 35ms/step - loss: 0.6503 - accuracy: 0.8956 Epoch 3/5 103/103 [==============================] - 4s 34ms/step - loss: 0.6157 - accuracy: 0.9196 Epoch 4/5 103/103 [==============================] - 3s 33ms/step - loss: 0.6036 - accuracy: 0.9293 Epoch 5/5 103/103 [==============================] - 4s 34ms/step - loss: 0.5929 - accuracy: 0.9317
Adım 3. Modeli değerlendirin.
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 40ms/step - loss: 0.6282 - accuracy: 0.9019
Adım 4. TensorFlow Lite modeline aktarın.
Burada, birlikte TensorFlow Lite modeli ihraç meta veri modeli açıklamaları için bir standart sağlar. Etiket dosyası meta verilere gömülüdür. Varsayılan eğitim sonrası niceleme tekniği, görüntü sınıflandırma görevi için tam tamsayı nicemlemedir.
Kendi kullanımınız için yükleme kısmıyla aynı sol kenar çubuğundan indirebilirsiniz.
model.export(export_dir='.')
2021-11-02 11:34:05.568024: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them. INFO:tensorflow:Assets written to: /tmp/tmpkqikzotp/assets INFO:tensorflow:Assets written to: /tmp/tmpkqikzotp/assets 2021-11-02 11:34:09.488041: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format. 2021-11-02 11:34:09.488090: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency. fully_quantize: 0, inference_type: 6, input_inference_type: 3, output_inference_type: 3 WARNING:absl:For model inputs containing unsupported operations which cannot be quantized, the `inference_input_type` attribute will default to the original type. INFO:tensorflow:Label file is inside the TFLite model with metadata. INFO:tensorflow:Label file is inside the TFLite model with metadata. INFO:tensorflow:Saving labels in /tmp/tmpoblx4ed5/labels.txt INFO:tensorflow:Saving labels in /tmp/tmpoblx4ed5/labels.txt INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite
Bu basit 4 adımlardan sonra, daha ayrıntılı gibi Cihazdaki uygulamalarında TensorFlow Lite modeli dosyasını kullanabilirsiniz görüntü sınıflandırma referans app.
Detaylı Süreç
Şu anda EfficientNet-Lite* modelleri, MobileNetV2, ResNet50 gibi çeşitli modelleri görüntü sınıflandırması için önceden eğitilmiş modeller olarak destekliyoruz. Ancak bu kütüphaneye sadece birkaç satır kod ile yeni önceden eğitilmiş modeller eklemek çok esnektir.
Aşağıda, daha fazla ayrıntı göstermek için bu uçtan uca örnek adım adım anlatılmaktadır.
1. Adım: Bir Cihaz ML Uygulamasına Özel Girdi Verilerini Yükleyin
Çiçek veri seti, 5 sınıfa ait 3670 görüntü içermektedir. Veri kümesinin arşiv sürümünü indirin ve açın.
Veri kümesi aşağıdaki dizin yapısına sahiptir:
flower_photos |__ daisy |______ 100080576_f52e8ee070_n.jpg |______ 14167534527_781ceb1b7a_n.jpg |______ ... |__ dandelion |______ 10043234166_e6dd915111_n.jpg |______ 1426682852_e62169221f_m.jpg |______ ... |__ roses |______ 102501987_3cdb8e5394_n.jpg |______ 14982802401_a3dfb22afb.jpg |______ ... |__ sunflowers |______ 12471791574_bb1be83df4.jpg |______ 15122112402_cafa41934f.jpg |______ ... |__ tulips |______ 13976522214_ccec508fe7.jpg |______ 14487943607_651e8062a1_m.jpg |______ ...
image_path = tf.keras.utils.get_file(
'flower_photos.tgz',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
extract=True)
image_path = os.path.join(os.path.dirname(image_path), 'flower_photos')
Kullanım DataLoader
yük verilerine sınıfı.
Gelince from_folder()
yöntemiyle, bu klasöre veri yük olabilir. Aynı sınıfa ait görüntü verilerinin aynı alt dizinde olduğunu ve alt klasör adının sınıf adı olduğunu varsayar. Şu anda JPEG kodlu görüntüler ve PNG kodlu görüntüler desteklenmektedir.
data = DataLoader.from_folder(image_path)
INFO:tensorflow:Load image with size: 3670, num_label: 5, labels: daisy, dandelion, roses, sunflowers, tulips. INFO:tensorflow:Load image with size: 3670, num_label: 5, labels: daisy, dandelion, roses, sunflowers, tulips.
Bunu eğitim verileri (%80), doğrulama verileri (%10, isteğe bağlı) ve test verileri (%10) olarak ayırın.
train_data, rest_data = data.split(0.8)
validation_data, test_data = rest_data.split(0.5)
Etiketlerle birlikte 25 resim örneği gösterin.
plt.figure(figsize=(10,10))
for i, (image, label) in enumerate(data.gen_dataset().unbatch().take(25)):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(image.numpy(), cmap=plt.cm.gray)
plt.xlabel(data.index_to_label[label.numpy()])
plt.show()
2. Adım: TensorFlow Modelini Özelleştirin
Yüklenen verilere dayalı olarak özel bir görüntü sınıflandırıcı modeli oluşturun. Varsayılan model EfficientNet-Lite0'dır.
model = image_classifier.create(train_data, validation_data=validation_data)
INFO:tensorflow:Retraining the models... INFO:tensorflow:Retraining the models... Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= hub_keras_layer_v1v2_1 (HubK (None, 1280) 3413024 _________________________________________________________________ dropout_1 (Dropout) (None, 1280) 0 _________________________________________________________________ dense_1 (Dense) (None, 5) 6405 ================================================================= Total params: 3,419,429 Trainable params: 6,405 Non-trainable params: 3,413,024 _________________________________________________________________ None Epoch 1/5 /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead. "The `lr` argument is deprecated, use `learning_rate` instead.") 91/91 [==============================] - 6s 54ms/step - loss: 0.8689 - accuracy: 0.7655 - val_loss: 0.6941 - val_accuracy: 0.8835 Epoch 2/5 91/91 [==============================] - 5s 50ms/step - loss: 0.6596 - accuracy: 0.8949 - val_loss: 0.6668 - val_accuracy: 0.8807 Epoch 3/5 91/91 [==============================] - 5s 50ms/step - loss: 0.6188 - accuracy: 0.9159 - val_loss: 0.6537 - val_accuracy: 0.8807 Epoch 4/5 91/91 [==============================] - 5s 52ms/step - loss: 0.6050 - accuracy: 0.9210 - val_loss: 0.6432 - val_accuracy: 0.8892 Epoch 5/5 91/91 [==============================] - 5s 52ms/step - loss: 0.5898 - accuracy: 0.9348 - val_loss: 0.6348 - val_accuracy: 0.8864
Ayrıntılı model yapısına bir göz atın.
model.summary()
Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= hub_keras_layer_v1v2_1 (HubK (None, 1280) 3413024 _________________________________________________________________ dropout_1 (Dropout) (None, 1280) 0 _________________________________________________________________ dense_1 (Dense) (None, 5) 6405 ================================================================= Total params: 3,419,429 Trainable params: 6,405 Non-trainable params: 3,413,024 _________________________________________________________________
3. Adım: Özelleştirilmiş Modeli Değerlendirin
Modelin sonucunu değerlendirin, modelin kayıp ve doğruluğunu elde edin.
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 1s 27ms/step - loss: 0.6324 - accuracy: 0.8965
Tahmin edilen sonuçları 100 test görüntüsünde çizebiliriz. Kırmızı renkli tahmin edilen etiketler yanlış tahmin edilen sonuçlardır, diğerleri ise doğrudur.
# A helper function that returns 'red'/'black' depending on if its two input
# parameter matches or not.
def get_label_color(val1, val2):
if val1 == val2:
return 'black'
else:
return 'red'
# Then plot 100 test images and their predicted labels.
# If a prediction result is different from the label provided label in "test"
# dataset, we will highlight it in red color.
plt.figure(figsize=(20, 20))
predicts = model.predict_top_k(test_data)
for i, (image, label) in enumerate(test_data.gen_dataset().unbatch().take(100)):
ax = plt.subplot(10, 10, i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(image.numpy(), cmap=plt.cm.gray)
predict_label = predicts[i][0][0]
color = get_label_color(predict_label,
test_data.index_to_label[label.numpy()])
ax.xaxis.label.set_color(color)
plt.xlabel('Predicted: %s' % predict_label)
plt.show()
Doğruluk uygulaması ihtiyacını karşılamak değilse, bir de başvurabilirler Gelişmiş Kullanımı vb, daha büyük bir modele değişen yeniden eğitim parametrelerini ayarlamak gibi alternatifleri keşfetmeye
Adım 4: TensorFlow Lite Modeline Aktarın
İle TensorFlow Lite modeli biçimine eğitilmiş modeli dönüştürme meta veri daha sonra bir cihaz üzerinde ML uygulamasında kullanabilmesi. Etiket dosyası ve kelime bilgisi dosyası meta verilere gömülüdür. Varsayılan TFLite dosya adı model.tflite
.
Birçok cihaz üstü ML uygulamasında model boyutu önemli bir faktördür. Bu nedenle, modeli daha küçük ve potansiyel olarak daha hızlı çalıştırmak için kuantize etmeniz önerilir. Varsayılan eğitim sonrası niceleme tekniği, görüntü sınıflandırma görevi için tam tamsayı nicemlemedir.
model.export(export_dir='.')
INFO:tensorflow:Assets written to: /tmp/tmp6tt5g8de/assets INFO:tensorflow:Assets written to: /tmp/tmp6tt5g8de/assets 2021-11-02 11:35:40.254046: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format. 2021-11-02 11:35:40.254099: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency. fully_quantize: 0, inference_type: 6, input_inference_type: 3, output_inference_type: 3 WARNING:absl:For model inputs containing unsupported operations which cannot be quantized, the `inference_input_type` attribute will default to the original type. INFO:tensorflow:Label file is inside the TFLite model with metadata. INFO:tensorflow:Label file is inside the TFLite model with metadata. INFO:tensorflow:Saving labels in /tmp/tmpf601xty1/labels.txt INFO:tensorflow:Saving labels in /tmp/tmpf601xty1/labels.txt INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite
Bkz örnek uygulamaları ve görüntü sınıflandırma kılavuzları mobil uygulamalara girdi TensorFlow Lite modeli entegre etmek konusunda daha fazla ayrıntı için.
Bu model, bir Android veya kullanan bir iOS uygulaması entegre edilebilir ImageClassifier API arasında TensorFlow Lite Görev Kütüphanesi .
İzin verilen dışa aktarma biçimleri aşağıdakilerden biri veya bir listesi olabilir:
Varsayılan olarak, yalnızca TensorFlow Lite modelini meta verilerle dışa aktarır. Ayrıca farklı dosyaları seçerek dışa aktarabilirsiniz. Örneğin, yalnızca etiket dosyasını aşağıdaki gibi dışa aktarma:
model.export(export_dir='.', export_format=ExportFormat.LABEL)
INFO:tensorflow:Saving labels in ./labels.txt INFO:tensorflow:Saving labels in ./labels.txt
Ayrıca ile tflite modeli değerlendirebilir evaluate_tflite
yöntemiyle.
model.evaluate_tflite('model.tflite', test_data)
{'accuracy': 0.9019073569482289}
Gelişmiş Kullanım
create
fonksiyonu bu kütüphanenin kritik bir parçasıdır. Bu benzer bir pretrained modelle transferi öğrenme kullanır öğretici .
create
fonksiyonu aşağıdaki adımları içerir:
- Parametre göre verileri test, eğitim, doğrulama veri bölme
validation_ratio
vetest_ratio
. Varsayılan değerivalidation_ratio
vetest_ratio
olan0.1
ve0.1
. - Bir indirin Görüntü Özelliği Vector TensorFlow Hub'dan baz model olarak. Varsayılan önceden eğitilmiş model EfficientNet-Lite0'dır.
- İle Bırakma Katmanı bir sınıflandırıcı kafasını ekle
dropout_rate
baş katmanı ve önceden eğitilmiş model arasında. Varsayılandropout_rate
varsayılandropout_rate
gelen değer make_image_classifier_lib TensorFlow Hub tarafından. - Ham girdi verilerini önceden işleyin. Şu anda, giriş ölçeğini modellemek için her bir görüntü pikselinin değerini normalleştirmeyi ve onu model giriş boyutuna yeniden boyutlandırmayı içeren ön işleme adımları. EfficientNet-Lite0 giriş ölçeği
[0, 1]
ve giriş resim boyutu[224, 224, 3]
. - Verileri sınıflandırıcı modele besleyin. Varsayılan olarak, bu tür eğitim devirlerin, seri boyutu, öğrenme hızı, ivme olarak eğitim parametreleri varsayılan değerlerdir make_image_classifier_lib TensorFlow Hub tarafından. Sadece sınıflandırıcı kafası eğitilmiştir.
Bu bölümde, farklı bir görüntü sınıflandırma modeline geçiş, eğitim hiperparametrelerinin değiştirilmesi vb. dahil olmak üzere birkaç gelişmiş konuyu açıklıyoruz.
TensorFLow Lite modelinde eğitim sonrası nicelemeyi özelleştirin
Sonrası eğitim niceleme Ayrıca, CPU ve donanım hızlandırıcı çıkarım hızı arttırırken model doğruluğunun küçük bir bozulma ile, model boyutu ve çıkarım gecikmeyi azaltmak bir dönüşüm bir tekniktir. Bu nedenle, modeli optimize etmek için yaygın olarak kullanılır.
Model Maker kitaplığı, modeli dışa aktarırken varsayılan bir eğitim sonrası niceleme tekniği uygular. Eğer eğitim sonrası nicemlemesini özelleştirmek istiyorsanız, Model Maker kullanarak birden eğitim sonrası nicemleme seçeneklerini desteklemektedir QuantizationConfig sıra. Örnek olarak float16 nicelemeyi alalım. İlk olarak, niceleme yapılandırmasını tanımlayın.
config = QuantizationConfig.for_float16()
Ardından TensorFlow Lite modelini bu konfigürasyonla dışa aktarıyoruz.
model.export(export_dir='.', tflite_filename='model_fp16.tflite', quantization_config=config)
INFO:tensorflow:Assets written to: /tmp/tmpa528qeqj/assets INFO:tensorflow:Assets written to: /tmp/tmpa528qeqj/assets INFO:tensorflow:Label file is inside the TFLite model with metadata. 2021-11-02 11:43:43.724165: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format. 2021-11-02 11:43:43.724219: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency. INFO:tensorflow:Label file is inside the TFLite model with metadata. INFO:tensorflow:Saving labels in /tmp/tmpvlx_qa4j/labels.txt INFO:tensorflow:Saving labels in /tmp/tmpvlx_qa4j/labels.txt INFO:tensorflow:TensorFlow Lite model exported successfully: ./model_fp16.tflite INFO:tensorflow:TensorFlow Lite model exported successfully: ./model_fp16.tflite
CoLab olarak, adlandırılmış modeli indirebilecek model_fp16.tflite
yukarıda belirtilen yükleme parçası olarak aynı sol kenar çubuğundan.
Modeli değiştir
Bu kitaplıkta desteklenen modele geçin.
Bu kitaplık şimdiye kadar EfficientNet-Lite modellerini, MobileNetV2, ResNet50'yi desteklemektedir. EfficientNet-Lite Kenar cihazlar için state-of-art doğruluk ve uygun elde edebiliriz görüntü sınıflandırma modellerinin ailesidir. Varsayılan model EfficientNet-Lite0'dır.
Biz sadece parametre ayarlayarak MobileNetV2 modeli geçiş olabilir model_spec
içinde MobileNetV2 modeli şartnamesine create
yöntemi.
model = image_classifier.create(train_data, model_spec=model_spec.get('mobilenet_v2'), validation_data=validation_data)
INFO:tensorflow:Retraining the models... INFO:tensorflow:Retraining the models... Model: "sequential_2" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= hub_keras_layer_v1v2_2 (HubK (None, 1280) 2257984 _________________________________________________________________ dropout_2 (Dropout) (None, 1280) 0 _________________________________________________________________ dense_2 (Dense) (None, 5) 6405 ================================================================= Total params: 2,264,389 Trainable params: 6,405 Non-trainable params: 2,257,984 _________________________________________________________________ None Epoch 1/5 /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead. "The `lr` argument is deprecated, use `learning_rate` instead.") 91/91 [==============================] - 8s 53ms/step - loss: 0.9163 - accuracy: 0.7634 - val_loss: 0.7789 - val_accuracy: 0.8267 Epoch 2/5 91/91 [==============================] - 4s 50ms/step - loss: 0.6836 - accuracy: 0.8822 - val_loss: 0.7223 - val_accuracy: 0.8551 Epoch 3/5 91/91 [==============================] - 4s 50ms/step - loss: 0.6506 - accuracy: 0.9045 - val_loss: 0.7086 - val_accuracy: 0.8580 Epoch 4/5 91/91 [==============================] - 5s 50ms/step - loss: 0.6218 - accuracy: 0.9227 - val_loss: 0.7049 - val_accuracy: 0.8636 Epoch 5/5 91/91 [==============================] - 5s 52ms/step - loss: 0.6092 - accuracy: 0.9279 - val_loss: 0.7181 - val_accuracy: 0.8580
Test verilerindeki doğruluğu ve kaybı görmek için yeni yeniden eğitilen MobileNetV2 modelini değerlendirin.
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 35ms/step - loss: 0.6866 - accuracy: 0.8747
TensorFlow Hub'daki modele geçin
Ayrıca, TensorFlow Hub formatında bir görüntü giren ve bir özellik vektörü çıktısı veren diğer yeni modellere de geçebiliriz.
Şöyle Başlangıç V3 , örnek olarak model sonra, tanımlayabilir inception_v3_spec
bir amacı olan image_classifier.ModelSpec ve Başlangıç V3 modeli özelliklerini içerir.
Biz model adı belirtmeniz gerekir name
, TensorFlow Hub modeli url uri
. Bu arada, varsayılan değeri input_image_shape
olan [224, 224]
. Biz bunu değiştirmek gerekir [299, 299]
Başlangıç V3 modeli için.
inception_v3_spec = image_classifier.ModelSpec(
uri='https://tfhub.dev/google/imagenet/inception_v3/feature_vector/1')
inception_v3_spec.input_image_shape = [299, 299]
Ardından, ayarı tarafından parametre model_spec
için inception_v3_spec
içinde create
yöntemi, biz Inception V3 modelinin yeniden eğitmek olabilir.
Kalan adımlar tamamen aynıdır ve sonunda özelleştirilmiş bir InceptionV3 TensorFlow Lite modeli elde edebiliriz.
Kendi özel modelinizi değiştirin
Biz TensorFlow Hub değil özel modeli kullanmak isterseniz, biz oluşturmak ve ihracat gerekir ModelSpec TensorFlow Hub.
Daha sonra tanımlamak için başlangıç ModelSpec
Yukarıdaki işlem gibi bir nesne.
Eğitim hiper parametrelerini değiştirin
Biz de böyle bir eğitim hyperparameters değiştirebilecek epochs
, dropout_rate
ve batch_size
modeli doğruluğunu etkileyebilir. Ayarlayabileceğiniz model parametreleri şunlardır:
-
epochs
: o birleşir ama çok fazla dönemini eğitim aşırı uyuma sebep olabilmektedir kadar daha dönemini daha iyi doğruluk elde edebiliriz. -
dropout_rate
: terkine önlemek overfitting oranını. Varsayılan olarak hiçbiri. -
batch_size
: Numunelerin numaralı eğitim adımda kullanmak. Varsayılan olarak hiçbiri. -
validation_data
: Doğrulama verileri. Hiçbiri ise, doğrulama işlemini atlar. Varsayılan olarak hiçbiri. -
train_whole_model
: true ise Hub modül üstünde sınıflandırma katmanla birlikte eğitilmiştir. Aksi takdirde, yalnızca en üst sınıflandırma katmanını eğitin. Varsayılan olarak hiçbiri. -
learning_rate
: Taban öğrenme oranı. Varsayılan olarak hiçbiri. -
momentum
: optimizer iletilen bir Python şamandıra. Yalnızca kullanılanuse_hub_library
True. Varsayılan olarak hiçbiri. -
shuffle
: Boolean veri karıştırılır gerekip gerekmediğini. Varsayılan olarak yanlış. -
use_augmentation
: Ön için Boole, kullanım veri büyütme. Varsayılan olarak yanlış. -
use_hub_library
: Boolean, kullanımmake_image_classifier_lib
tensorflow göbekten modelini yeniden eğitmek. Bu eğitim hattı, birçok kategoriye sahip karmaşık veri kümesi için daha iyi performans sağlayabilir. Varsayılan olarak doğru. -
warmup_steps
: oranını öğrenmeye ısınma programı için ısınma adımların sayısı. Hiçbiri ise, iki çağdaki toplam eğitim adımları olan varsayılan ısınma_adımları kullanılır. Yalnızca kullanılanuse_hub_library
False. Varsayılan olarak hiçbiri. -
model_dir
: İsteğe bağlı, model, kontrol noktası dosyalarının konumu. Yalnızca kullanılanuse_hub_library
False. Varsayılan olarak hiçbiri.
Gibi varsayılan olarak Yok olan parametreler epochs
somut varsayılan parametreleri alacak make_image_classifier_lib TensorFlow Hub kütüphane ya gelen train_image_classifier_lib .
Örneğin, daha fazla dönemle antrenman yapabiliriz.
model = image_classifier.create(train_data, validation_data=validation_data, epochs=10)
INFO:tensorflow:Retraining the models... INFO:tensorflow:Retraining the models... Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= hub_keras_layer_v1v2_3 (HubK (None, 1280) 3413024 _________________________________________________________________ dropout_3 (Dropout) (None, 1280) 0 _________________________________________________________________ dense_3 (Dense) (None, 5) 6405 ================================================================= Total params: 3,419,429 Trainable params: 6,405 Non-trainable params: 3,413,024 _________________________________________________________________ None Epoch 1/10 91/91 [==============================] - 6s 53ms/step - loss: 0.8735 - accuracy: 0.7644 - val_loss: 0.6701 - val_accuracy: 0.8892 Epoch 2/10 91/91 [==============================] - 4s 49ms/step - loss: 0.6502 - accuracy: 0.8984 - val_loss: 0.6442 - val_accuracy: 0.8864 Epoch 3/10 91/91 [==============================] - 4s 49ms/step - loss: 0.6215 - accuracy: 0.9107 - val_loss: 0.6306 - val_accuracy: 0.8920 Epoch 4/10 91/91 [==============================] - 4s 49ms/step - loss: 0.5962 - accuracy: 0.9299 - val_loss: 0.6253 - val_accuracy: 0.8977 Epoch 5/10 91/91 [==============================] - 5s 52ms/step - loss: 0.5845 - accuracy: 0.9334 - val_loss: 0.6206 - val_accuracy: 0.9062 Epoch 6/10 91/91 [==============================] - 5s 50ms/step - loss: 0.5743 - accuracy: 0.9451 - val_loss: 0.6159 - val_accuracy: 0.9062 Epoch 7/10 91/91 [==============================] - 4s 48ms/step - loss: 0.5682 - accuracy: 0.9444 - val_loss: 0.6192 - val_accuracy: 0.9006 Epoch 8/10 91/91 [==============================] - 4s 49ms/step - loss: 0.5595 - accuracy: 0.9557 - val_loss: 0.6153 - val_accuracy: 0.9091 Epoch 9/10 91/91 [==============================] - 4s 47ms/step - loss: 0.5560 - accuracy: 0.9523 - val_loss: 0.6213 - val_accuracy: 0.9062 Epoch 10/10 91/91 [==============================] - 4s 45ms/step - loss: 0.5520 - accuracy: 0.9595 - val_loss: 0.6220 - val_accuracy: 0.8977
Yeni yeniden eğitilmiş modeli 10 eğitim dönemiyle değerlendirin.
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 1s 27ms/step - loss: 0.6417 - accuracy: 0.8883
Daha fazla oku
Bizim okuyabilir görüntü sınıflandırma teknik ayrıntılarını öğrenmek için örnek. Daha fazla bilgi için lütfen şu adrese bakın:
- TensorFlow Lite Modeli Üretici kılavuzu ve API başvuru .
- Görev Kütüphanesi: ImageClassifier dağıtımı için.
- Uçtan uca referans uygulamalar: Android , iOS ve Ahududu PI .