Yardım Kaggle üzerinde TensorFlow ile Büyük Bariyer Resifi korumak Meydan Üyelik

TensorFlow Lite Model Maker ile görüntü sınıflandırması

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın Kaynağı GitHub'da görüntüleyin Not defterini indir TF Hub modeline bakın

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.

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.

Dosya yükleme

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()

png

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()

png

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:

  1. Parametre göre verileri test, eğitim, doğrulama veri bölme validation_ratio ve test_ratio . Varsayılan değeri validation_ratio ve test_ratio olan 0.1 ve 0.1 .
  2. Bir indirin Görüntü Özelliği Vector TensorFlow Hub'dan baz model olarak. Varsayılan önceden eğitilmiş model EfficientNet-Lite0'dır.
  3. İ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ılan dropout_rate varsayılan dropout_rate gelen değer make_image_classifier_lib TensorFlow Hub tarafından.
  4. 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] .
  5. 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ılan use_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ım make_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ılan use_hub_library False. Varsayılan olarak hiçbiri.
  • model_dir : İsteğe bağlı, model, kontrol noktası dosyalarının konumu. Yalnızca kullanılan use_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: