Google I/O'da TensorFlow'a katılın, 11-12 Mayıs Şimdi kaydolun

TensorFlow Lite Model Oluşturucu ile Nesne Algılama

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

Bu CoLab notebook, kullanmak öğreneceksiniz TensorFlow Lite Modeli Üretici bir mobil cihazda, resimlerdeki salata saptayabilen özel bir nesne algılama modelini eğitmek için kütüphane.

Model Maker kütüphane kullanımları özel bir veri kümesini kullanarak bir TensorFlow Lite modeli eğitim sürecini kolaylaştırmak için öğrenme aktarırlar. Bir TensorFlow Lite modelini kendi özel veri kümenizle yeniden eğitmek, gereken eğitim verisi miktarını azaltır ve eğitim süresini kısaltır.

Sen oluşturuldu kamuya açık Salatalar veri kümesi, kullanacağız Açık Görüntüler veri kümesi V4 .

Veri kümesindeki her görüntü, aşağıdaki sınıflardan biri olarak etiketlenmiş nesneleri içerir:

  • İyi pişmiş
  • Peynir
  • salata
  • Deniz ürünleri
  • Domates

Veri kümesi, nesnenin etiketiyle birlikte her nesnenin nerede bulunduğunu belirten sınırlayıcı kutuları içerir.

İşte veri kümesinden bir örnek resim:


Önkoşullar

Gerekli paketleri kurun

Dan Modeli Üretici paketinin dahil gerekli paketleri, yükleyerek başlayın GitHub repo ve değerlendirme için kullanacağız pycocotools kütüphanede.

pip install -q --use-deprecated=legacy-resolver tflite-model-maker
pip install -q pycocotools

Gerekli paketleri içe aktarın.

import numpy as np
import os

from tflite_model_maker.config import QuantizationConfig
from tflite_model_maker.config import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import object_detector

import tensorflow as tf
assert tf.__version__.startswith('2')

tf.get_logger().setLevel('ERROR')
from absl import logging
logging.set_verbosity(logging.ERROR)
/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:154: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9
  warnings.warn(msg)

Veri kümesini hazırlayın

Burada AutoML aynı veri kümesini kullanacağız hızlı başlangıç .

: Mevcuttur veri kümesi Salatalar gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv .

Eğitim için 175 resim, doğrulama için 25 resim ve test için 25 resim içerir. : Veri kümesi beş sınıfları vardır Salad , Seafood , Tomato , Baked goods , Cheese .


Veri kümesi CSV biçiminde sağlanır:

TRAINING,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Salad,0.0,0.0954,,,0.977,0.957,,
VALIDATION,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Seafood,0.0154,0.1538,,,1.0,0.802,,
TEST,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Tomato,0.0,0.655,,,0.231,0.839,,
  • Her satır, daha büyük bir görüntünün içinde yerelleştirilmiş bir nesneye karşılık gelir ve her nesne özel olarak test, eğitim veya doğrulama verileri olarak belirlenir. Bu not defterinin ilerleyen aşamalarında bunun ne anlama geldiği hakkında daha fazla bilgi edineceksiniz.
  • Buraya eklenen üç satır mevcut aynı görüntünün içinde bulunan üç farklı nesneleri göstermek gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg .
  • Her satır farklı bir etiket vardır: Salad , Seafood , Tomato vb
  • Sol üst ve sağ alt köşeler kullanılarak her görüntü için sınırlayıcı kutular belirlenir.

İşte bu üç satırın bir görselleştirmesi:


Kendi CSV dosyası ve geçerli bir veri kümesi oluşturmak için minimum gereksinimleri nasıl hazırlanacağı hakkında daha fazla bilgi edinmek istiyorsanız, bkz hazırlama eğitim veri Daha fazla detay için rehber.

Google Cloud yeni iseniz, merak edebilir gs:// URL araçları. Onlar saklanan dosyaların URL'lerdir Google Bulut Depolama (GCS). Eğer GCS halka dosyalarınızı yapmak veya Eğer müşterinize kimliğini , Model Maker benzer yerel dosyalara bu dosyaları okuyabilir.

Ancak, Model Maker'ı kullanmak için resimlerinizi Google Cloud'da tutmanız gerekmez. CSV dosyanızda yerel bir yol kullanabilirsiniz ve Model Maker sadece çalışacaktır.

Hızlı başlangıç

Bir nesne algılama modelini eğitmek için altı adım vardır:

Adım 1. Bir nesne algılama modeli mimarisi seçin.

Bu öğretici, EfficientDet-Lite0 modelini kullanır. EfficientDet-Lite [0-4] elde mobil / IOT uygun nesne algılama modelleri ailesidir EfficientDet mimari.

İşte her bir EfficientDet-Lite modelinin birbirine göre performansı.

Model mimarisi Boyut(MB)* Gecikme(ms)** Ortalama Hassasiyet***
EfficientDet-Lite0 4.4 37 %25.69
EfficientDet-Lite1 5.8 49 %30.55
EfficientDet-Lite2 7.2 69 %33.97
EfficientDet-Lite3 11.4 116 37.70%
EfficientDet-Lite4 19.9 260 %41.96

* Tamsayılı nicelenmiş modellerin boyutu.
** Gecikme, CPU'da 4 iş parçacığı kullanılarak Pixel 4'te ölçülmüştür.
*** Ortalama Hassasiyet, COCO 2017 doğrulama veri setindeki mAP'dir (ortalama Ortalama Hassasiyet).

spec = model_spec.get('efficientdet_lite0')

Adım 2. Veri kümesini yükleyin.

Model Maker, girdi verilerini CSV formatında alacaktır. Kullanım object_detector.DataLoader.from_csv veri kümesini yüklemek ve eğitim, doğrulama ve test görüntüleri bölünmeleri yöntemi.

  • Eğitim görüntüleri: Bu görüntüler, salata bileşenlerini tanımak için nesne algılama modelini eğitmek için kullanılır.
  • Doğrulama görüntüleri: Bunlar, eğitim sürecinde modelin görmediği görüntülerdir. Kaçınmak, eğitim biteceği siz karar için kullanırız aşırı oturma .
  • Test görüntüleri: Bu görüntüler, nihai model performansını değerlendirmek için kullanılır.

CSV dosyasını doğrudan Google Cloud Storage'dan yükleyebilirsiniz, ancak Model Maker'ı kullanmak için resimlerinizi Google Cloud'da tutmanız gerekmez. Bilgisayarınızda yerel bir CSV dosyası belirtebilirsiniz ve Model Maker gayet iyi çalışacaktır.

train_data, validation_data, test_data = object_detector.DataLoader.from_csv('gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv')

Adım 3. TensorFlow modelini eğitim verileriyle eğitin.

  • EfficientDet-Lite0 modeli kullanır epochs = 50 o eğitim veri kümesi içinden 50 kez gidecek araçlar, varsayılan olarak,. Eğitim sırasında doğrulama doğruluğuna bakabilir ve fazla takmayı önlemek için erken durabilirsiniz.
  • Set batch_size = 8 burada çok bunu eğitim veri kümesi içinde 175 görüntülere geçmesi 21 adımlar atması olduğunu göreceksiniz.
  • Set train_whole_model=True sadece doğruluğunu geliştirmek için kafa tabakasını eğitim yerine ince ayar için tüm modeli. Takas, modeli eğitmenin daha uzun sürebilmesidir.
model = object_detector.create(train_data, model_spec=spec, batch_size=8, train_whole_model=True, validation_data=validation_data)
Epoch 1/50
21/21 [==============================] - 48s 455ms/step - det_loss: 1.7625 - cls_loss: 1.1351 - box_loss: 0.0125 - reg_l2_loss: 0.0635 - loss: 1.8260 - learning_rate: 0.0090 - gradient_norm: 0.7406 - val_det_loss: 1.6586 - val_cls_loss: 1.1076 - val_box_loss: 0.0110 - val_reg_l2_loss: 0.0635 - val_loss: 1.7221
Epoch 2/50
21/21 [==============================] - 9s 452ms/step - det_loss: 1.6224 - cls_loss: 1.0936 - box_loss: 0.0106 - reg_l2_loss: 0.0635 - loss: 1.6860 - learning_rate: 0.0100 - gradient_norm: 0.8392 - val_det_loss: 1.5282 - val_cls_loss: 1.0231 - val_box_loss: 0.0101 - val_reg_l2_loss: 0.0635 - val_loss: 1.5917
Epoch 3/50
21/21 [==============================] - 11s 566ms/step - det_loss: 1.4834 - cls_loss: 1.0031 - box_loss: 0.0096 - reg_l2_loss: 0.0635 - loss: 1.5469 - learning_rate: 0.0099 - gradient_norm: 1.4031 - val_det_loss: 1.7022 - val_cls_loss: 1.2259 - val_box_loss: 0.0095 - val_reg_l2_loss: 0.0636 - val_loss: 1.7657
Epoch 4/50
21/21 [==============================] - 11s 541ms/step - det_loss: 1.2898 - cls_loss: 0.8467 - box_loss: 0.0089 - reg_l2_loss: 0.0636 - loss: 1.3534 - learning_rate: 0.0099 - gradient_norm: 1.8163 - val_det_loss: 1.5550 - val_cls_loss: 1.1171 - val_box_loss: 0.0088 - val_reg_l2_loss: 0.0636 - val_loss: 1.6185
Epoch 5/50
21/21 [==============================] - 20s 970ms/step - det_loss: 1.1272 - cls_loss: 0.7315 - box_loss: 0.0079 - reg_l2_loss: 0.0636 - loss: 1.1908 - learning_rate: 0.0098 - gradient_norm: 1.7106 - val_det_loss: 1.4876 - val_cls_loss: 1.0551 - val_box_loss: 0.0087 - val_reg_l2_loss: 0.0636 - val_loss: 1.5512
Epoch 6/50
21/21 [==============================] - 7s 364ms/step - det_loss: 1.0534 - cls_loss: 0.6823 - box_loss: 0.0074 - reg_l2_loss: 0.0636 - loss: 1.1170 - learning_rate: 0.0097 - gradient_norm: 1.8554 - val_det_loss: 1.1807 - val_cls_loss: 0.7640 - val_box_loss: 0.0083 - val_reg_l2_loss: 0.0636 - val_loss: 1.2443
Epoch 7/50
21/21 [==============================] - 12s 602ms/step - det_loss: 1.0153 - cls_loss: 0.6592 - box_loss: 0.0071 - reg_l2_loss: 0.0636 - loss: 1.0789 - learning_rate: 0.0096 - gradient_norm: 1.8227 - val_det_loss: 1.0752 - val_cls_loss: 0.6828 - val_box_loss: 0.0078 - val_reg_l2_loss: 0.0636 - val_loss: 1.1388
Epoch 8/50
21/21 [==============================] - 11s 519ms/step - det_loss: 0.9751 - cls_loss: 0.6304 - box_loss: 0.0069 - reg_l2_loss: 0.0636 - loss: 1.0387 - learning_rate: 0.0094 - gradient_norm: 1.7939 - val_det_loss: 1.0385 - val_cls_loss: 0.6612 - val_box_loss: 0.0075 - val_reg_l2_loss: 0.0636 - val_loss: 1.1021
Epoch 9/50
21/21 [==============================] - 12s 601ms/step - det_loss: 0.8982 - cls_loss: 0.5847 - box_loss: 0.0063 - reg_l2_loss: 0.0636 - loss: 0.9618 - learning_rate: 0.0093 - gradient_norm: 1.8244 - val_det_loss: 1.0142 - val_cls_loss: 0.6526 - val_box_loss: 0.0072 - val_reg_l2_loss: 0.0636 - val_loss: 1.0778
Epoch 10/50
21/21 [==============================] - 14s 691ms/step - det_loss: 0.9462 - cls_loss: 0.5986 - box_loss: 0.0070 - reg_l2_loss: 0.0636 - loss: 1.0098 - learning_rate: 0.0091 - gradient_norm: 1.9298 - val_det_loss: 0.9879 - val_cls_loss: 0.6335 - val_box_loss: 0.0071 - val_reg_l2_loss: 0.0636 - val_loss: 1.0515
Epoch 11/50
21/21 [==============================] - 11s 519ms/step - det_loss: 0.8871 - cls_loss: 0.5824 - box_loss: 0.0061 - reg_l2_loss: 0.0636 - loss: 0.9507 - learning_rate: 0.0089 - gradient_norm: 1.9898 - val_det_loss: 1.0021 - val_cls_loss: 0.6509 - val_box_loss: 0.0070 - val_reg_l2_loss: 0.0636 - val_loss: 1.0658
Epoch 12/50
21/21 [==============================] - 11s 549ms/step - det_loss: 0.8640 - cls_loss: 0.5624 - box_loss: 0.0060 - reg_l2_loss: 0.0636 - loss: 0.9277 - learning_rate: 0.0087 - gradient_norm: 1.9360 - val_det_loss: 1.0265 - val_cls_loss: 0.6728 - val_box_loss: 0.0071 - val_reg_l2_loss: 0.0636 - val_loss: 1.0901
Epoch 13/50
21/21 [==============================] - 11s 523ms/step - det_loss: 0.8405 - cls_loss: 0.5484 - box_loss: 0.0058 - reg_l2_loss: 0.0636 - loss: 0.9042 - learning_rate: 0.0085 - gradient_norm: 2.1855 - val_det_loss: 1.0291 - val_cls_loss: 0.6903 - val_box_loss: 0.0068 - val_reg_l2_loss: 0.0636 - val_loss: 1.0927
Epoch 14/50
21/21 [==============================] - 12s 572ms/step - det_loss: 0.8082 - cls_loss: 0.5297 - box_loss: 0.0056 - reg_l2_loss: 0.0636 - loss: 0.8718 - learning_rate: 0.0082 - gradient_norm: 1.9138 - val_det_loss: 0.9104 - val_cls_loss: 0.5838 - val_box_loss: 0.0065 - val_reg_l2_loss: 0.0636 - val_loss: 0.9740
Epoch 15/50
21/21 [==============================] - 14s 696ms/step - det_loss: 0.8106 - cls_loss: 0.5221 - box_loss: 0.0058 - reg_l2_loss: 0.0636 - loss: 0.8743 - learning_rate: 0.0080 - gradient_norm: 2.0386 - val_det_loss: 0.9510 - val_cls_loss: 0.6047 - val_box_loss: 0.0069 - val_reg_l2_loss: 0.0636 - val_loss: 1.0146
Epoch 16/50
21/21 [==============================] - 10s 474ms/step - det_loss: 0.7988 - cls_loss: 0.5177 - box_loss: 0.0056 - reg_l2_loss: 0.0636 - loss: 0.8624 - learning_rate: 0.0077 - gradient_norm: 2.1009 - val_det_loss: 0.9642 - val_cls_loss: 0.6307 - val_box_loss: 0.0067 - val_reg_l2_loss: 0.0637 - val_loss: 1.0278
Epoch 17/50
21/21 [==============================] - 12s 601ms/step - det_loss: 0.8057 - cls_loss: 0.5239 - box_loss: 0.0056 - reg_l2_loss: 0.0637 - loss: 0.8694 - learning_rate: 0.0075 - gradient_norm: 2.1718 - val_det_loss: 0.9152 - val_cls_loss: 0.5938 - val_box_loss: 0.0064 - val_reg_l2_loss: 0.0637 - val_loss: 0.9789
Epoch 18/50
21/21 [==============================] - 12s 609ms/step - det_loss: 0.7801 - cls_loss: 0.4993 - box_loss: 0.0056 - reg_l2_loss: 0.0637 - loss: 0.8437 - learning_rate: 0.0072 - gradient_norm: 2.1518 - val_det_loss: 0.9262 - val_cls_loss: 0.5967 - val_box_loss: 0.0066 - val_reg_l2_loss: 0.0637 - val_loss: 0.9899
Epoch 19/50
21/21 [==============================] - 12s 614ms/step - det_loss: 0.7595 - cls_loss: 0.4977 - box_loss: 0.0052 - reg_l2_loss: 0.0637 - loss: 0.8232 - learning_rate: 0.0069 - gradient_norm: 2.3707 - val_det_loss: 0.8870 - val_cls_loss: 0.5698 - val_box_loss: 0.0063 - val_reg_l2_loss: 0.0637 - val_loss: 0.9506
Epoch 20/50
21/21 [==============================] - 13s 632ms/step - det_loss: 0.7826 - cls_loss: 0.5115 - box_loss: 0.0054 - reg_l2_loss: 0.0637 - loss: 0.8463 - learning_rate: 0.0066 - gradient_norm: 2.4091 - val_det_loss: 0.8975 - val_cls_loss: 0.5811 - val_box_loss: 0.0063 - val_reg_l2_loss: 0.0637 - val_loss: 0.9611
Epoch 21/50
21/21 [==============================] - 9s 454ms/step - det_loss: 0.7434 - cls_loss: 0.4903 - box_loss: 0.0051 - reg_l2_loss: 0.0637 - loss: 0.8070 - learning_rate: 0.0063 - gradient_norm: 2.3592 - val_det_loss: 0.8526 - val_cls_loss: 0.5450 - val_box_loss: 0.0062 - val_reg_l2_loss: 0.0637 - val_loss: 0.9163
Epoch 22/50
21/21 [==============================] - 12s 600ms/step - det_loss: 0.7349 - cls_loss: 0.4803 - box_loss: 0.0051 - reg_l2_loss: 0.0637 - loss: 0.7986 - learning_rate: 0.0060 - gradient_norm: 2.3296 - val_det_loss: 0.8977 - val_cls_loss: 0.5602 - val_box_loss: 0.0068 - val_reg_l2_loss: 0.0637 - val_loss: 0.9614
Epoch 23/50
21/21 [==============================] - 12s 591ms/step - det_loss: 0.7190 - cls_loss: 0.4670 - box_loss: 0.0050 - reg_l2_loss: 0.0637 - loss: 0.7826 - learning_rate: 0.0056 - gradient_norm: 2.2218 - val_det_loss: 0.8986 - val_cls_loss: 0.5744 - val_box_loss: 0.0065 - val_reg_l2_loss: 0.0637 - val_loss: 0.9623
Epoch 24/50
21/21 [==============================] - 11s 553ms/step - det_loss: 0.7025 - cls_loss: 0.4588 - box_loss: 0.0049 - reg_l2_loss: 0.0637 - loss: 0.7661 - learning_rate: 0.0053 - gradient_norm: 2.4710 - val_det_loss: 0.8835 - val_cls_loss: 0.5701 - val_box_loss: 0.0063 - val_reg_l2_loss: 0.0637 - val_loss: 0.9472
Epoch 25/50
21/21 [==============================] - 14s 700ms/step - det_loss: 0.7462 - cls_loss: 0.4776 - box_loss: 0.0054 - reg_l2_loss: 0.0637 - loss: 0.8099 - learning_rate: 0.0050 - gradient_norm: 2.5728 - val_det_loss: 0.8594 - val_cls_loss: 0.5605 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.9231
Epoch 26/50
21/21 [==============================] - 10s 482ms/step - det_loss: 0.7219 - cls_loss: 0.4731 - box_loss: 0.0050 - reg_l2_loss: 0.0637 - loss: 0.7856 - learning_rate: 0.0047 - gradient_norm: 2.4891 - val_det_loss: 0.8701 - val_cls_loss: 0.5630 - val_box_loss: 0.0061 - val_reg_l2_loss: 0.0637 - val_loss: 0.9338
Epoch 27/50
21/21 [==============================] - 11s 543ms/step - det_loss: 0.6914 - cls_loss: 0.4505 - box_loss: 0.0048 - reg_l2_loss: 0.0637 - loss: 0.7551 - learning_rate: 0.0044 - gradient_norm: 2.3125 - val_det_loss: 0.8986 - val_cls_loss: 0.5850 - val_box_loss: 0.0063 - val_reg_l2_loss: 0.0637 - val_loss: 0.9623
Epoch 28/50
21/21 [==============================] - 13s 630ms/step - det_loss: 0.7018 - cls_loss: 0.4516 - box_loss: 0.0050 - reg_l2_loss: 0.0637 - loss: 0.7655 - learning_rate: 0.0040 - gradient_norm: 2.7033 - val_det_loss: 0.8693 - val_cls_loss: 0.5590 - val_box_loss: 0.0062 - val_reg_l2_loss: 0.0637 - val_loss: 0.9330
Epoch 29/50
21/21 [==============================] - 11s 529ms/step - det_loss: 0.6712 - cls_loss: 0.4463 - box_loss: 0.0045 - reg_l2_loss: 0.0637 - loss: 0.7349 - learning_rate: 0.0037 - gradient_norm: 2.3739 - val_det_loss: 0.8901 - val_cls_loss: 0.5790 - val_box_loss: 0.0062 - val_reg_l2_loss: 0.0637 - val_loss: 0.9538
Epoch 30/50
21/21 [==============================] - 15s 735ms/step - det_loss: 0.6619 - cls_loss: 0.4346 - box_loss: 0.0045 - reg_l2_loss: 0.0637 - loss: 0.7256 - learning_rate: 0.0034 - gradient_norm: 2.3940 - val_det_loss: 0.8855 - val_cls_loss: 0.5565 - val_box_loss: 0.0066 - val_reg_l2_loss: 0.0637 - val_loss: 0.9492
Epoch 31/50
21/21 [==============================] - 10s 499ms/step - det_loss: 0.6752 - cls_loss: 0.4406 - box_loss: 0.0047 - reg_l2_loss: 0.0637 - loss: 0.7389 - learning_rate: 0.0031 - gradient_norm: 2.6153 - val_det_loss: 0.8728 - val_cls_loss: 0.5536 - val_box_loss: 0.0064 - val_reg_l2_loss: 0.0637 - val_loss: 0.9365
Epoch 32/50
21/21 [==============================] - 11s 547ms/step - det_loss: 0.6605 - cls_loss: 0.4393 - box_loss: 0.0044 - reg_l2_loss: 0.0637 - loss: 0.7242 - learning_rate: 0.0028 - gradient_norm: 2.2926 - val_det_loss: 0.8503 - val_cls_loss: 0.5434 - val_box_loss: 0.0061 - val_reg_l2_loss: 0.0637 - val_loss: 0.9140
Epoch 33/50
21/21 [==============================] - 12s 573ms/step - det_loss: 0.6700 - cls_loss: 0.4388 - box_loss: 0.0046 - reg_l2_loss: 0.0637 - loss: 0.7337 - learning_rate: 0.0025 - gradient_norm: 2.4563 - val_det_loss: 0.8520 - val_cls_loss: 0.5442 - val_box_loss: 0.0062 - val_reg_l2_loss: 0.0637 - val_loss: 0.9157
Epoch 34/50
21/21 [==============================] - 12s 596ms/step - det_loss: 0.6754 - cls_loss: 0.4314 - box_loss: 0.0049 - reg_l2_loss: 0.0637 - loss: 0.7391 - learning_rate: 0.0023 - gradient_norm: 2.5527 - val_det_loss: 0.8223 - val_cls_loss: 0.5216 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8860
Epoch 35/50
21/21 [==============================] - 13s 623ms/step - det_loss: 0.6499 - cls_loss: 0.4243 - box_loss: 0.0045 - reg_l2_loss: 0.0637 - loss: 0.7136 - learning_rate: 0.0020 - gradient_norm: 2.3485 - val_det_loss: 0.8405 - val_cls_loss: 0.5408 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.9042
Epoch 36/50
21/21 [==============================] - 12s 574ms/step - det_loss: 0.6290 - cls_loss: 0.4186 - box_loss: 0.0042 - reg_l2_loss: 0.0637 - loss: 0.6927 - learning_rate: 0.0018 - gradient_norm: 2.3488 - val_det_loss: 0.8436 - val_cls_loss: 0.5452 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.9073
Epoch 37/50
21/21 [==============================] - 13s 631ms/step - det_loss: 0.6446 - cls_loss: 0.4157 - box_loss: 0.0046 - reg_l2_loss: 0.0637 - loss: 0.7083 - learning_rate: 0.0015 - gradient_norm: 2.3455 - val_det_loss: 0.8361 - val_cls_loss: 0.5410 - val_box_loss: 0.0059 - val_reg_l2_loss: 0.0637 - val_loss: 0.8998
Epoch 38/50
21/21 [==============================] - 12s 595ms/step - det_loss: 0.6640 - cls_loss: 0.4317 - box_loss: 0.0046 - reg_l2_loss: 0.0637 - loss: 0.7277 - learning_rate: 0.0013 - gradient_norm: 2.5982 - val_det_loss: 0.8390 - val_cls_loss: 0.5402 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.9027
Epoch 39/50
21/21 [==============================] - 13s 623ms/step - det_loss: 0.6280 - cls_loss: 0.4117 - box_loss: 0.0043 - reg_l2_loss: 0.0637 - loss: 0.6916 - learning_rate: 0.0011 - gradient_norm: 2.3441 - val_det_loss: 0.8396 - val_cls_loss: 0.5415 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.9033
Epoch 40/50
21/21 [==============================] - 15s 721ms/step - det_loss: 0.6398 - cls_loss: 0.4240 - box_loss: 0.0043 - reg_l2_loss: 0.0637 - loss: 0.7035 - learning_rate: 9.0029e-04 - gradient_norm: 2.6224 - val_det_loss: 0.8326 - val_cls_loss: 0.5328 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8963
Epoch 41/50
21/21 [==============================] - 10s 484ms/step - det_loss: 0.6361 - cls_loss: 0.4179 - box_loss: 0.0044 - reg_l2_loss: 0.0637 - loss: 0.6998 - learning_rate: 7.2543e-04 - gradient_norm: 2.4665 - val_det_loss: 0.8264 - val_cls_loss: 0.5282 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8901
Epoch 42/50
21/21 [==============================] - 13s 654ms/step - det_loss: 0.6565 - cls_loss: 0.4141 - box_loss: 0.0048 - reg_l2_loss: 0.0637 - loss: 0.7202 - learning_rate: 5.6814e-04 - gradient_norm: 2.5693 - val_det_loss: 0.8190 - val_cls_loss: 0.5205 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8827
Epoch 43/50
21/21 [==============================] - 12s 577ms/step - det_loss: 0.6390 - cls_loss: 0.4156 - box_loss: 0.0045 - reg_l2_loss: 0.0637 - loss: 0.7027 - learning_rate: 4.2906e-04 - gradient_norm: 2.6238 - val_det_loss: 0.8214 - val_cls_loss: 0.5218 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8851
Epoch 44/50
21/21 [==============================] - 11s 543ms/step - det_loss: 0.6325 - cls_loss: 0.4210 - box_loss: 0.0042 - reg_l2_loss: 0.0637 - loss: 0.6962 - learning_rate: 3.0876e-04 - gradient_norm: 2.5348 - val_det_loss: 0.8233 - val_cls_loss: 0.5214 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8870
Epoch 45/50
21/21 [==============================] - 14s 712ms/step - det_loss: 0.6318 - cls_loss: 0.4115 - box_loss: 0.0044 - reg_l2_loss: 0.0637 - loss: 0.6955 - learning_rate: 2.0774e-04 - gradient_norm: 2.3124 - val_det_loss: 0.8264 - val_cls_loss: 0.5243 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8901
Epoch 46/50
21/21 [==============================] - 11s 518ms/step - det_loss: 0.6508 - cls_loss: 0.4240 - box_loss: 0.0045 - reg_l2_loss: 0.0637 - loss: 0.7145 - learning_rate: 1.2641e-04 - gradient_norm: 2.5532 - val_det_loss: 0.8275 - val_cls_loss: 0.5252 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8912
Epoch 47/50
21/21 [==============================] - 13s 630ms/step - det_loss: 0.6284 - cls_loss: 0.4146 - box_loss: 0.0043 - reg_l2_loss: 0.0637 - loss: 0.6921 - learning_rate: 6.5107e-05 - gradient_norm: 2.5420 - val_det_loss: 0.8269 - val_cls_loss: 0.5248 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8906
Epoch 48/50
21/21 [==============================] - 11s 539ms/step - det_loss: 0.6273 - cls_loss: 0.4124 - box_loss: 0.0043 - reg_l2_loss: 0.0637 - loss: 0.6910 - learning_rate: 2.4083e-05 - gradient_norm: 2.4386 - val_det_loss: 0.8249 - val_cls_loss: 0.5233 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8886
Epoch 49/50
21/21 [==============================] - 13s 627ms/step - det_loss: 0.6412 - cls_loss: 0.4040 - box_loss: 0.0047 - reg_l2_loss: 0.0637 - loss: 0.7049 - learning_rate: 3.5074e-06 - gradient_norm: 2.4736 - val_det_loss: 0.8231 - val_cls_loss: 0.5223 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8868
Epoch 50/50
21/21 [==============================] - 15s 721ms/step - det_loss: 0.6425 - cls_loss: 0.4205 - box_loss: 0.0044 - reg_l2_loss: 0.0637 - loss: 0.7062 - learning_rate: 3.4629e-06 - gradient_norm: 2.4394 - val_det_loss: 0.8218 - val_cls_loss: 0.5215 - val_box_loss: 0.0060 - val_reg_l2_loss: 0.0637 - val_loss: 0.8855

Adım 4. Modeli test verileriyle değerlendirin.

Eğitim veri kümesindeki görüntüleri kullanarak nesne algılama modelini eğittikten sonra, modelin daha önce hiç görmediği yeni verilere karşı nasıl performans gösterdiğini değerlendirmek için test veri kümesindeki kalan 25 görüntüyü kullanın.

Varsayılan toplu iş boyutu 64 olduğundan, test veri kümesindeki 25 görüntünün üzerinden geçmek 1 adım alacaktır.

Değerlendirme ölçütleri ile aynıdır COCO .

model.evaluate(test_data)
1/1 [==============================] - 7s 7s/step
{'AP': 0.23457745,
 'AP50': 0.38357082,
 'AP75': 0.25038385,
 'APs': -1.0,
 'APm': 0.43640736,
 'APl': 0.234312,
 'ARmax1': 0.1664717,
 'ARmax10': 0.33019942,
 'ARmax100': 0.37375557,
 'ARs': -1.0,
 'ARm': 0.5416667,
 'ARl': 0.37200606,
 'AP_/Baked Goods': 0.07057314,
 'AP_/Salad': 0.53682375,
 'AP_/Cheese': 0.20270571,
 'AP_/Seafood': 0.08837805,
 'AP_/Tomato': 0.2744066}

Adım 5. TensorFlow Lite modeli olarak dışa aktarın.

Nicelenmiş modeli dışa aktarmak istediğiniz klasörü belirterek eğitilmiş nesne algılama modelini TensorFlow Lite formatına aktarın. Varsayılan eğitim sonrası niceleme tekniği, tam tamsayı nicemlemedir.

model.export(export_dir='.')
2021-12-02 12:28:49.181926: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
2021-12-02 12:29:09.650356: W tensorflow/core/common_runtime/graph_constructor.cc:803] Node 'resample_p7/PartitionedCall' has 1 outputs but the _output_shapes attribute specifies shapes for 3 outputs. Output shapes may be inaccurate.
2021-12-02 12:29:20.773150: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:363] Ignored output_format.
2021-12-02 12:29:20.773204: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:366] Ignored drop_control_dependency.
2021-12-02 12:29:20.773213: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:372] Ignored change_concat_input_ranges.
fully_quantize: 0, inference_type: 6, input_inference_type: 3, output_inference_type: 0

Adım 6. TensorFlow Lite modelini değerlendirin.

TFLite'a dışa aktarırken model doğruluğunu birkaç faktör etkileyebilir:

  • Quantization bazı doğruluk damla pahasına 4 kat modeli boyutu küçülen yardımcı olur.
  • Orijinal TensorFlow modeli kullanır başına sınıfında olmayan max baskılama (NMS) post-processing için, TFLite modeli çok daha hızlı ancak daha az kesin sonuç küresel NMS kullanır iken. Keras, maksimum 100 algılama çıktısı verirken tflite maksimum 25 algılama çıktısı verir.

Bu nedenle, dışa aktarılan TFLite modelini değerlendirmeniz ve doğruluğunu orijinal TensorFlow modeliyle karşılaştırmanız gerekir.

model.evaluate_tflite('model.tflite', test_data)
25/25 [==============================] - 60s 2s/step
{'AP': 0.22160971,
 'AP50': 0.36216733,
 'AP75': 0.24560829,
 'APs': -1.0,
 'APm': 0.52389216,
 'APl': 0.21991307,
 'ARmax1': 0.16296011,
 'ARmax10': 0.2850546,
 'ARmax100': 0.29889038,
 'ARs': -1.0,
 'ARm': 0.6166667,
 'ARl': 0.29492828,
 'AP_/Baked Goods': 0.06930693,
 'AP_/Salad': 0.5064266,
 'AP_/Cheese': 0.1904948,
 'AP_/Seafood': 0.074257426,
 'AP_/Tomato': 0.26756287}

Colab'ın sol kenar çubuğunu kullanarak TensorFlow Lite model dosyasını indirebilirsiniz. Sağ tıklayın model.tflite dosyası ve seçim Download yerel bilgisayarınıza indirmek için.

Bu model, bir Android veya kullanan bir iOS uygulaması entegre edilebilir ObjectDetector API arasında TensorFlow Lite Görev Kütüphanesi .

Bkz TFLite Nesne Algılama örnek uygulamasını modeli bir çalışma uygulamasında nasıl kullanıldığı hakkında daha fazla ayrıntı için.

(İsteğe bağlı) TFLite modelini resminizde test edin

Eğitimli TFLite modelini internetten görüntüleri kullanarak test edebilirsiniz.

  • Değiştir INPUT_IMAGE_URL istediğiniz giriş görüntü ile aşağıda.
  • Ayarlayın DETECTION_THRESHOLD modelinin hassasiyetini değiştirmek için. Daha düşük bir eşik, modelin daha fazla nesne alacağı, ancak daha fazla yanlış algılama olacağı anlamına gelir. Bu arada, daha yüksek bir eşik, modelin yalnızca güvenle algıladığı nesneleri alacağı anlamına gelir.

Modeli şu anda Python'da çalıştırmak için bazı ortak kodlar gerektirse de, modeli bir mobil uygulamaya entegre etmek yalnızca birkaç satır kod gerektirir.

Eğitilmiş TFLite modelini yükleyin ve bazı görselleştirme işlevlerini tanımlayın

Nesne algılamayı çalıştırın ve algılama sonuçlarını gösterin

png

(İsteğe bağlı) Edge TPU için Derleme

Şimdi bir kuvantalaması EfficientDet Lite modeli olduğunu, derlemek ve bir karşı dağıtmak mümkündür Mercan EdgeTPU .

Adım 1. EdgeTPU Derleyicisini Kurun

 curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

 echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

 sudo apt-get update

 sudo apt-get install edgetpu-compiler
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2537  100  2537    0     0   130k      0 --:--:-- --:--:-- --:--:--  130k
OK
deb https://packages.cloud.google.com/apt coral-edgetpu-stable main
Hit:1 http://asia-east1.gce.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://asia-east1.gce.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://asia-east1.gce.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  InRelease
Get:5 https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/amd64  InRelease [1481 B]
Get:6 https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64  InRelease [1474 B]
Ign:7 http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  InRelease
Hit:8 http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Release
Get:9 http://packages.cloud.google.com/apt google-cloud-logging-wheezy InRelease [5483 B]
Hit:10 http://archive.canonical.com/ubuntu bionic InRelease
Hit:11 http://security.ubuntu.com/ubuntu bionic-security InRelease
Get:13 https://packages.cloud.google.com/apt coral-edgetpu-stable InRelease [6722 B]
Get:14 https://packages.cloud.google.com/apt eip-cloud-bionic InRelease [5419 B]
Ign:15 https://packages.cloud.google.com/apt coral-edgetpu-stable/main amd64 Packages
Get:15 https://packages.cloud.google.com/apt coral-edgetpu-stable/main amd64 Packages [2327 B]
Fetched 22.9 kB in 1s (18.7 kB/s)




The following packages were automatically installed and are no longer required:
  linux-gcp-5.4-headers-5.4.0-1040 linux-gcp-5.4-headers-5.4.0-1043
  linux-gcp-5.4-headers-5.4.0-1044 linux-gcp-5.4-headers-5.4.0-1049
  linux-headers-5.4.0-1049-gcp linux-image-5.4.0-1049-gcp
  linux-modules-5.4.0-1044-gcp linux-modules-5.4.0-1049-gcp
  linux-modules-extra-5.4.0-1049-gcp
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  edgetpu-compiler
0 upgraded, 1 newly installed, 0 to remove and 119 not upgraded.
Need to get 7913 kB of archives.
After this operation, 31.2 MB of additional disk space will be used.
Get:1 https://packages.cloud.google.com/apt coral-edgetpu-stable/main amd64 edgetpu-compiler amd64 16.0 [7913 kB]
Fetched 7913 kB in 1s (11.2 MB/s)
Selecting previously unselected package edgetpu-compiler.
(Reading database ... 283192 files and directories currently installed.)
Preparing to unpack .../edgetpu-compiler_16.0_amd64.deb ...
Unpacking edgetpu-compiler (16.0) ...
Setting up edgetpu-compiler (16.0) ...
Processing triggers for libc-bin (2.27-3ubuntu1.2) ...

Adım 2. Edge TPU'larının sayısını seçin, Derleyin

EdgeTPU modeli parametrelerinin (önbelleğe alma için SRAM 8MB sahiptir fazla bilgiye ). Bu, 8MB'den büyük modeller için, model parametrelerinin aktarılması için çıkarım süresinin artacağı anlamına gelir. Bunu önlemek için bir yoldur Modeli Pipelining özel bir EdgeTPU olabilir segmentler halinde bölme modeli -. Bu, gecikmeyi önemli ölçüde artırabilir.

Aşağıdaki tablo, kullanılacak Edge TPU'larının sayısı için bir referans olarak kullanılabilir - ara tensörler çip üzerindeki belleğe sığamayacağından daha büyük modeller tek bir TPU için derlenmez.

Model mimarisi Minimum TPU'lar Önerilen TPU'lar
EfficientDet-Lite0 1 1
EfficientDet-Lite1 1 1
EfficientDet-Lite2 1 2
EfficientDet-Lite3 2 2
EfficientDet-Lite4 2 3

Edge TPU Compiler version 16.0.384591198
Started a compilation timeout timer of 180 seconds.

Model compiled successfully in 4410 ms.

Input model: model.tflite
Input size: 4.24MiB
Output model: model_edgetpu.tflite
Output size: 5.61MiB
On-chip memory used for caching model parameters: 4.24MiB
On-chip memory remaining for caching model parameters: 3.27MiB
Off-chip memory used for streaming uncached model parameters: 0.00B
Number of Edge TPU subgraphs: 1
Total number of operations: 267
Operation log: model_edgetpu.log

Model successfully compiled but not all operations are supported by the Edge TPU. A percentage of the model will instead run on the CPU, which is slower. If possible, consider updating your model to use only operations supported by the Edge TPU. For details, visit g.co/coral/model-reqs.
Number of operations that will run on Edge TPU: 264
Number of operations that will run on CPU: 3
See the operation log file for individual operation details.
Compilation child process completed within timeout period.
Compilation succeeded!

Adım 3. İndirin, Modeli Çalıştırın

Derlenen model(ler) ile artık nesne tespiti için EdgeTPU(lar) üzerinde çalıştırılabilirler. İlk olarak, Colab'ın sol kenar çubuğunu kullanarak derlenmiş TensorFlow Lite model dosyasını indirin. Sağ tıklayın model_edgetpu.tflite dosyası ve seçim Download yerel bilgisayarınıza indirmek için.

Artık modeli tercih ettiğiniz şekilde çalıştırabilirsiniz. Algılama örnekleri şunları içerir:

Gelişmiş Kullanım

Bu bölüm, modelin ayarlanması ve eğitim hiperparametreleri gibi ileri düzey kullanım konularını kapsar.

Veri kümesini yükleyin

Kendi verilerinizi yükleyin

Bu eğitimde çalışmak için kendi veri kümenizi yükleyebilirsiniz. Colab'da sol kenar çubuğunu kullanarak veri kümenizi yükleyin.

Dosya yükleme

Eğer buluta veri kümesi yüklemek istemiyorsanız, ayrıca lokal olarak takip ederek kütüphane çalıştırabilirsiniz kılavuzu .

Verilerinizi farklı bir veri biçimiyle yükleyin

Modeli Üretici kütüphanesi aynı zamanda destekler object_detector.DataLoader.from_pascal_voc yük verilerine yöntem PASCAL VOC biçimi. makesense.ai ve LabelImg resimde açıklama ve PASCAL VOC veri formatında XML dosyaları olarak ek açıklamaları kaydedebilir araçlardır:

object_detector.DataLoader.from_pascal_voc(image_dir, annotations_dir, label_map={1: "person", 2: "notperson"})

EfficientDet modeli hiper parametrelerini özelleştirin

Ayarlayabileceğiniz model ve eğitim hattı parametreleri şunlardır:

  • model_dir : konum modeli denetim noktası dosyaları kaydetmek için. Ayarlanmazsa, geçici bir dizin kullanılacaktır.
  • steps_per_execution : Eğitim yürütme başına adımların sayısı.
  • moving_average_decay : Float. Eğitilmiş parametrelerin hareketli ortalamalarını korumak için kullanılacak bozulma.
  • var_freeze_expr : değişkenlerin önek adını eşleştirmek için düzenli ifade eğitim sırasında aynı kalan hangi araçlar dondurulacak. Daha spesifik, kullanım re.match(var_freeze_expr, variable_name) değişkenleri eşleştirmek için kod temeli dondurulacak.
  • tflite_max_detections : varsayılan olarak tamsayı, 25. TFLite modelinde maksimum çıktı algılama sayısı.
  • strategy : Bir dize belirten hangi dağıtım stratejisini kullanımına. Kabul edilen değerler "tpu", "gpus", Yoktur. tpu', TPUStrategy kullanmak anlamına gelir. 'gpus', çoklu gpus için MirroredStrategy kullanmak anlamına gelir. Hiçbiri ise, OneDeviceStrategy ile TF varsayılanını kullanın.
  • tpu : Bulut TPU eğitimi için kullanılacak. Bu, Cloud TPU oluşturulurken kullanılan ad veya bir grpc://ip.address.of.tpu:8470 url'si olmalıdır.
  • use_xla : Kullanım XLA bile strateji TPU değildir. Strateji tpu ise, her zaman XLA kullanın ve bu bayrağın hiçbir etkisi yoktur.
  • profile : profil modunu etkinleştirin.
  • debug : ayıklama modunu etkinleştirin.

Ayarlanabilir Diğer parametreler gösterilmektedir hparams_config.py .

Örneğin, ayarlayabilirsiniz var_freeze_expr='efficientnet' adıyla değişkenleri önek donar hangi efficientnet (varsayılan '(efficientnet|fpn_cells|resample_p6)' ). Bu, modelin eğitilemez değişkenleri dondurmasına ve eğitim yoluyla değerlerini aynı tutmasına olanak tanır.

spec = model_spec.get('efficientdet_lite0')
spec.config.var_freeze_expr = 'efficientnet'

Model Mimarisini Değiştirin

Sen değiştirerek modeli mimarisini değiştirebilir model_spec . Örneğin, değiştirmek model_spec EfficientDet-Lite4 modeline.

spec = model_spec.get('efficientdet_lite4')

Eğitim hiper parametrelerini ayarlayın

create fonksiyonu Modeli Üretici kütüphane kullandığı modelleri oluşturmak için o sürücü fonksiyonudur. model_spec parametre modeli özelliklerini tanımlar. object_detector.EfficientDetSpec sınıfı şu anda desteklenmektedir. create aşağıdaki adımlardan fonksiyonu olarak aşağıdakileri içermesidir:

  1. Uygun nesne tespiti için bir model oluşturur model_spec .
  2. Modeli eğitir. Varsayılan çağlardan ve varsayılan parti boyutu tarafından belirlenir epochs ve batch_size değişkenler model_spec nesne. Sen ayar da yapabilirsiniz gibi eğitim hyperparameters epochs ve batch_size modeli doğruluğunu etkileyebilir. Örneğin,
  • epochs : Tamsayı, varsayılan olarak 50. Daha fazla çağ daha iyi doğruluk sağlayabilir, ancak fazla uydurmaya neden olabilir.
  • batch_size : Tamsayı, 64 varsayılan olarak. Bir eğitim adımında kullanılacak örnek sayısı.
  • train_whole_model : varsayılan olarak False Boolean. Doğruysa, tüm modeli eğitin. Aksi takdirde, sadece eşleşmeyen katmanları eğitmek var_freeze_expr .

Örneğin, daha az dönem ve sadece kafa katmanı ile antrenman yapabilirsiniz. Daha iyi sonuçlar için dönem sayısını artırabilirsiniz.

model = object_detector.create(train_data, model_spec=spec, epochs=10, validation_data=validation_data)

Farklı biçimlerde dışa aktarma

Dışa aktarma biçimleri aşağıdakilerden biri veya bir listesi olabilir:

Varsayılan olarak, modelin içeren tek TensorFlow Lite model dosyası ihraç meta Sonradan bir Cihazdaki ML uygulamasında kullanabilmesi. Etiket dosyası meta verilere gömülüdür.

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 nicelleştirmeniz önerilir. EfficientDet-Lite modellerinde olduğu gibi, modeli varsayılan olarak nicelemek için tam tamsayı nicemleme kullanılır. Bakınız Sonrası eğitim Nicemlemenin Daha fazla ayrıntı için.

model.export(export_dir='.')

Daha iyi incelemek için modelle ilgili diğer dosyaları da dışa aktarmayı seçebilirsiniz. Örneğin, hem kaydedilen modeli hem de etiket dosyasını aşağıdaki gibi dışa aktarın:

model.export(export_dir='.', export_format=[ExportFormat.SAVED_MODEL, ExportFormat.LABEL])

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)

Daha fazla oku

Bizim okuyabilir nesne algılama teknik ayrıntılarını öğrenmek için örnek. Daha fazla bilgi için lütfen şu adrese bakın: