সাহায্য Kaggle উপর TensorFlow সঙ্গে গ্রেট বেরিয়ার রিফ রক্ষা চ্যালেঞ্জ যোগদান

টেন্সরফ্লো লাইট মডেল মেকারের সাথে ছবির শ্রেণিবিন্যাস

TensorFlow.org এ দেখুন গুগল কোলাবে চালান GitHub এ উৎস দেখুন নোটবুক ডাউনলোড করুন টিএফ হাব মডেল দেখুন

TensorFlow লাইট মডেল মেকার গ্রন্থাগার অভিযোজিত এবং বিশেষ ইনপুট ডেটা করার জন্য একটি TensorFlow নিউরাল নেটওয়ার্ক মডেল রূপান্তর গেলে কখন অন-ডিভাইস এম এল অ্যাপ্লিকেশনের জন্য এই মডেল মোতায়েন প্রক্রিয়া সহজসাধ্য।

এই নোটবুক একটি শেষ থেকে শেষ উদাহরণ দেখায় যা একটি মোবাইল ডিভাইসে ফুলের শ্রেণীবিন্যাস করার জন্য একটি সাধারণভাবে ব্যবহৃত ইমেজ শ্রেণীবিভাগ মডেলের অভিযোজন এবং রূপান্তরকে ব্যাখ্যা করার জন্য এই মডেল মেকার লাইব্রেরিকে ব্যবহার করে।

পূর্বশর্ত

এই উদাহরণে চালাতে, আমরা মডেল মেকার প্যাকেজ যে GitHub সহ বিভিন্ন প্রয়োজনীয় প্যাকেজ, ইনস্টল করতে হবে রেপো

pip install -q tflite-model-maker

প্রয়োজনীয় প্যাকেজ আমদানি করুন।

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)

সহজ থেকে শেষ উদাহরণ

তথ্য পাথ পান

আসুন এই সাধারণ এন্ড-টু-এন্ড উদাহরণের সাথে খেলার জন্য কিছু ছবি পাই। মডেল মেকারের জন্য শত শত ছবি একটি ভাল সূচনা, যখন আরও ডেটা ভাল নির্ভুলতা অর্জন করতে পারে।

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

আপনি প্রতিস্থাপন করতে পারে image_path আপনার নিজস্ব চিত্র ফোল্ডার সঙ্গে। কোলাবে ডেটা আপলোড করার জন্য, আপনি লাল আয়তক্ষেত্রের সাথে নীচের ছবিতে দেখানো বাম সাইডবারে আপলোড বোতামটি খুঁজে পেতে পারেন। শুধু একটি জিপ ফাইল আপলোড করার চেষ্টা করুন এবং এটি আনজিপ করুন। রুট ফাইল পাথ হল বর্তমান পথ।

ফাইল আপলোড করুন

আপনি ক্লাউড আপনার ইমেজ আপলোড পছন্দ না করেন, তাহলে আপনি স্থানীয়ভাবে নিম্নলিখিত গ্রন্থাগার চালানোর চেষ্টা করে দেখতে পারেন নির্দেশিকা GitHub হবে।

উদাহরণ চালান

উদাহরণটি নীচে দেখানো কোডের 4 টি লাইন নিয়ে গঠিত, যার প্রত্যেকটি সামগ্রিক প্রক্রিয়ার এক ধাপের প্রতিনিধিত্ব করে।

ধাপ 1. একটি অন-ডিভাইস ML অ্যাপের জন্য নির্দিষ্ট ইনপুট ডেটা লোড করুন। এটি প্রশিক্ষণ ডেটা এবং পরীক্ষার ডেটাতে বিভক্ত করুন।

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.

ধাপ 2. TensorFlow মডেল কাস্টমাইজ করুন।

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

ধাপ 3. মডেলটি মূল্যায়ন করুন।

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 40ms/step - loss: 0.6282 - accuracy: 0.9019

ধাপ 4. TensorFlow লাইট মডেল রপ্তানি।

এখানে, আমরা TensorFlow লাইট মডেল রপ্তানি মেটাডেটা যা মডেল বিবরণ একটি আদর্শ প্রদান করে। লেবেল ফাইলটি মেটাডেটাতে এম্বেড করা আছে। ডিফল্ট পোস্ট ট্রেনিং কোয়ানটাইজেশন টেকনিক হল ইমেজ ক্লাসিফিকেশন টাস্কের জন্য পূর্ণসংখ্যা কোয়ান্টাইজেশন।

আপনি আপনার নিজের ব্যবহারের জন্য আপলোড করা অংশের মতো বাম সাইডবারে এটি ডাউনলোড করতে পারেন।

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

এই সহজ 4 টি ধাপ করার পর, আমরা আরও মত-ডিভাইস অ্যাপ্লিকেশন TensorFlow লাইট মডেল ফাইল ব্যবহার পারে ইমেজ শ্রেণীবিন্যাস রেফারেন্স অ্যাপ্লিকেশান।

বিস্তারিত প্রক্রিয়া

বর্তমানে, আমরা ইমেজ শ্রেণিবিন্যাসের জন্য প্রাক-প্রশিক্ষিত মডেল হিসাবে EfficNet-Lite* মডেল, MobileNetV2, ResNet50 এর মতো বেশ কয়েকটি মডেল সমর্থন করি। কিন্তু এই লাইব্রেরিতে মাত্র কয়েক লাইন কোড সহ নতুন প্রাক-প্রশিক্ষিত মডেল যুক্ত করা খুবই নমনীয়।

আরও বিস্তারিত দেখানোর জন্য ধাপে ধাপে এই শেষ থেকে শেষ উদাহরণটি অনুসরণ করে।

ধাপ 1: অন-ডিভাইস এমএল অ্যাপের জন্য নির্দিষ্ট ইনপুট ডেটা লোড করুন

ফুলের ডেটাসেটে 5 টি শ্রেণীর 3670 টি চিত্র রয়েছে। ডেটাসেটের আর্কাইভ সংস্করণটি ডাউনলোড করুন এবং এটি আনটার করুন।

ডেটাসেটে নিম্নলিখিত ডিরেক্টরি কাঠামো রয়েছে:

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

ব্যবহারের DataLoader লোড ডেটাতে বর্গ।

হিসাবে from_folder() পদ্ধতি, এটা ফোল্ডার থেকে ডেটা লোড পারে। এটি অনুমান করে যে একই শ্রেণীর ইমেজ ডেটা একই সাবডিরেক্টরিতে এবং সাবফোল্ডারের নাম হল ক্লাসের নাম। বর্তমানে, JPEG- এনকোডেড ইমেজ এবং PNG- এনকোডেড ইমেজ সমর্থিত।

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.

এটি প্রশিক্ষণ ডেটা (80%), বৈধতা ডেটা (10%, alচ্ছিক) এবং পরীক্ষার ডেটা (10%) ভাগ করুন।

train_data, rest_data = data.split(0.8)
validation_data, test_data = rest_data.split(0.5)

লেবেল সহ 25 ছবির উদাহরণ দেখান।

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: TensorFlow মডেল কাস্টমাইজ করুন

লোড করা ডেটার উপর ভিত্তি করে একটি কাস্টম ইমেজ ক্লাসিফায়ার মডেল তৈরি করুন। ডিফল্ট মডেল হল EfficientNet-Lite0।

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

বিস্তারিত মডেল গঠন দেখুন।

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: কাস্টমাইজড মডেল মূল্যায়ন করুন

মডেলের ফলাফল মূল্যায়ন করুন, মডেলের ক্ষতি এবং নির্ভুলতা পান।

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 1s 27ms/step - loss: 0.6324 - accuracy: 0.8965

আমরা 100 টি পরীক্ষামূলক ছবিতে ভবিষ্যদ্বাণীকৃত ফলাফলগুলি চক্রান্ত করতে পারি। লাল রঙের পূর্বাভাসযুক্ত লেবেলগুলি ভুল ভবিষ্যদ্বাণী করা ফলাফল এবং অন্যগুলি সঠিক।

# 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

সঠিকতা অ্যাপ্লিকেশন প্রয়োজনীয়তা পূরণের না হয়, তাহলে এক পড়ুন পারে উন্নত ব্যবহারের যেমন একটি বড় মডেল পরিবর্তন পুনরায় প্রশিক্ষণ মাপদণ্ডগুলি সামঞ্জস্য ইত্যাদি বিকল্প অন্বেষণ করতে

ধাপ 4: TensorFlow লাইট মডেল রপ্তানি

সঙ্গে TensorFlow লাইট মডেল বিন্যাস প্রশিক্ষিত মডেল রূপান্তর করুন মেটাডেটা যাতে আপনি পরে একটি অন-ডিভাইস এমএল অ্যাপ্লিকেশনে ব্যবহার করতে পারেন। লেবেল ফাইল এবং ভোকাব ফাইল মেটাডেটাতে এম্বেড করা আছে। ডিফল্ট TFLite ফাইলের নাম হল model.tflite

অনেক অন-ডিভাইস এমএল অ্যাপ্লিকেশনে, মডেলের আকার একটি গুরুত্বপূর্ণ বিষয়। অতএব, এটি সুপারিশ করা হয় যে আপনি মডেলটিকে ছোট এবং সম্ভাব্য দ্রুত চালানোর জন্য কোয়ান্টাইজ প্রয়োগ করুন। ডিফল্ট পোস্ট ট্রেনিং কোয়ানটাইজেশন টেকনিক হল ইমেজ ক্লাসিফিকেশন টাস্কের জন্য পূর্ণসংখ্যা কোয়ান্টাইজেশন।

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

দেখুন উদাহরণ অ্যাপ্লিকেশন এবং ইমেজ শ্রেণী নির্দেশিকা মোবাইল অ্যাপসে TensorFlow লাইট মডেল সংহত সম্পর্কে আরো বিস্তারিত করে।

এই মডেল কোনো Android বা ব্যবহার করে একটি iOS অ্যাপ্লিকেশন একত্রিত করা যেতে পারে ImageClassifier এপিআই এর TensorFlow লাইট টাস্ক লাইব্রেরী

অনুমোদিত রপ্তানি ফরম্যাটগুলি নিম্নলিখিতগুলির একটি বা একটি তালিকা হতে পারে:

ডিফল্টরূপে, এটি মেটাডেটা সহ কেবল টেন্সরফ্লো লাইট মডেল রপ্তানি করে। আপনি বেছে বেছে বিভিন্ন ফাইল এক্সপোর্ট করতে পারেন। উদাহরণস্বরূপ, নিম্নরূপ শুধুমাত্র লেবেল ফাইল রপ্তানি:

model.export(export_dir='.', export_format=ExportFormat.LABEL)
INFO:tensorflow:Saving labels in ./labels.txt
INFO:tensorflow:Saving labels in ./labels.txt

এছাড়াও আপনি সঙ্গে tflite মডেল মূল্যায়ন করতে পারেন evaluate_tflite পদ্ধতি।

model.evaluate_tflite('model.tflite', test_data)
{'accuracy': 0.9019073569482289}

উন্নত ব্যবহার

create ফাংশন এই লাইব্রেরি সমালোচনা অংশ। এটা অনুরূপ একটি pretrained মডেলের স্থানান্তর শেখার ব্যবহার টিউটোরিয়াল

create ফাংশন নিম্নলিখিত পদক্ষেপগুলি রয়েছে:

  1. প্রশিক্ষণ, বৈধতা ডেটা বিভক্ত, প্যারামিটার অনুযায়ী ডেটা পরীক্ষা validation_ratio এবং test_ratio । ডিফল্ট মান validation_ratio এবং test_ratio হয় 0.1 এবং 0.1
  2. একটি ডাউনলোড চিত্র বৈশিষ্ট্য ভেক্টর TensorFlow হাব থেকে বেস মডেল হিসাবে। ডিফল্ট পূর্ব প্রশিক্ষিত মডেল হল EfficientNet-Lite0।
  3. সঙ্গে একটি ঝরে পড়া লেয়ার সঙ্গে একটি ক্লাসিফায়ার মাথা যোগ dropout_rate মাথা লেয়ার এবং প্রাক প্রশিক্ষণ মডেল মধ্যে। ডিফল্ট dropout_rate ডিফল্ট dropout_rate থেকে মান make_image_classifier_lib TensorFlow হাব দ্বারা।
  4. কাঁচা ইনপুট ডেটা প্রি -প্রসেস করুন। বর্তমানে, প্রতিটি ইমেজ পিক্সেলের মানকে ইনপুট স্কেলে স্বাভাবিক করা এবং মডেল ইনপুট আকারে এর আকার পরিবর্তন সহ প্রিপ্রোসেসিং পদক্ষেপ। EfficientNet-Lite0 ইনপুট স্কেল আছে [0, 1] এবং ইনপুট ইমেজ সাইজ [224, 224, 3]
  5. ক্লাসিফায়ার মডেলে ডেটা খাওয়ান। ডিফল্টরূপে, এই ধরনের প্রশিক্ষণ সময়কাল, ব্যাচ আকার, শেখার হার, ভরবেগ হিসাবে প্রশিক্ষণ পরামিতি থেকে ডিফল্ট মান make_image_classifier_lib TensorFlow হাব দ্বারা। শুধুমাত্র ক্লাসিফায়ার হেড প্রশিক্ষিত।

এই বিভাগে, আমরা বেশ কয়েকটি উন্নত বিষয় বর্ণনা করি, যার মধ্যে একটি ভিন্ন ইমেজ ক্লাসিফিকেশন মডেলে স্যুইচ করা, ট্রেনিং হাইপারপ্যারামিটার পরিবর্তন ইত্যাদি।

TensorFLow Lite মডেলে প্রশিক্ষণ-পরবর্তী কোয়ান্টাইজেশন কাস্টমাইজ করুন

পোস্ট-প্রশিক্ষণ quantization একটি রূপান্তর পন্থা যা মডেল আকার ও অনুমান লেটেন্সি কমে যায়, যখন এছাড়াও CPU- র এবং হার্ডওয়্যার বেগবর্ধক অনুমান গতি উন্নতি, মডেল সঠিকতা মধ্যে একটু অবনতি সাথে। এইভাবে, এটি মডেলটিকে অপ্টিমাইজ করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।

মডেল রপ্তানির সময় মডেল মেকার লাইব্রেরি একটি ডিফল্ট পোস্ট ট্রেনিং কোয়ানটাইজেশন টেকনিক প্রয়োগ করে। আপনি পোস্ট প্রশিক্ষণ quantization কাস্টমাইজ করতে চান, মডেল Maker ব্যবহার করে একাধিক পোস্ট প্রশিক্ষণ quantization অপশন সমর্থন QuantizationConfig পাশাপাশি। আসুন একটি উদাহরণ হিসাবে float16 পরিমাপ গ্রহণ করি। প্রথমে, কোয়ান্টাইজেশন কনফিগারেশনটি সংজ্ঞায়িত করুন।

config = QuantizationConfig.for_float16()

তারপর আমরা এই ধরনের কনফিগারেশন সহ TensorFlow Lite মডেল রপ্তানি করি।

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, আপনি মডেল নামে বিনামূল্যে ডাউনলোড করতে পারেন model_fp16.tflite বাম সাইডবার থেকে, আপলোড পক্ষ উপরে উল্লিখিত হিসাবে একই।

মডেল পরিবর্তন করুন

এই লাইব্রেরিতে সমর্থিত মডেলটিতে পরিবর্তন করুন।

এই লাইব্রেরীটি এখন পর্যন্ত EfficientNet-Lite মডেল, MobileNetV2, ResNet50 সমর্থন করে। EfficientNet-লাইট ইমেজ শ্রেণীবিন্যাস মডেলের যে এজ ডিভাইসের জন্য রাষ্ট্রীয় শিল্প সঠিকতা এবং উপযুক্ত অর্জন করতে পারে পরিবারে আছে। ডিফল্ট মডেল হল EfficientNet-Lite0।

আমরা শুধু পরামিতি সেটিং দ্বারা MobileNetV2 করার মডেল সুইচ করতে পারে model_spec মধ্যে MobileNetV2 মডেল স্পেসিফিকেশন create পদ্ধতি।

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

পরীক্ষার ডেটার নির্ভুলতা এবং ক্ষতি দেখতে নতুন প্রশিক্ষণপ্রাপ্ত MobileNetV2 মডেলটি মূল্যায়ন করুন।

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 35ms/step - loss: 0.6866 - accuracy: 0.8747

TensorFlow Hub এ মডেল পরিবর্তন করুন

তাছাড়া, আমরা অন্যান্য নতুন মডেলের দিকেও যেতে পারি যা একটি ইমেজ ইনপুট করে এবং TensorFlow Hub ফর্ম্যাট সহ একটি ফিচার ভেক্টর আউটপুট করে।

হিসাবে ইনসেপশন V3 একটি উদাহরণ হিসাবে মডেল, আমরা সংজ্ঞায়িত করতে পারে inception_v3_spec যা হল একটি অবজেক্ট image_classifier.ModelSpec এবং ইনসেপশন V3 মডেলের স্পেসিফিকেশন ধারণ করে।

আমরা মডেল নাম নির্দিষ্ট করতে হবে name , TensorFlow হাব মডেল URL টি uri । এদিকে, ডিফল্ট মান input_image_shape হয় [224, 224] । আমরা তা পরিবর্তন করতে হবে [299, 299] ইনসেপশন V3 মডেলের জন্য।

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]

এর পরে, সেটিংস এর দ্বারা প্যারামিটার model_spec করার inception_v3_spec মধ্যে create পদ্ধতি, আমরা ইনসেপশন V3 মডেলকে আবার শেখতে পারে।

অবশিষ্ট পদক্ষেপগুলি ঠিক একই এবং আমরা শেষ পর্যন্ত একটি কাস্টমাইজড ইনসেপশন ভি 3 টেন্সরফ্লো লাইট মডেল পেতে পারি।

আপনার নিজস্ব কাস্টম মডেল পরিবর্তন করুন

আমরা যে TensorFlow হাব নাই কাস্টম মডেল ব্যবহার করতে চান সেটি তাহলে আমরা তৈরি এবং এক্সপোর্ট করা উচিত ModelSpec TensorFlow হাব হবে।

তারপর সংজ্ঞায়িত করতে শুরু ModelSpec উপরে প্রক্রিয়া মত বস্তু।

প্রশিক্ষণ হাইপারপ্যারামিটার পরিবর্তন করুন

আমরাও মত ট্রেনিং hyperparameters পরিবর্তন হতে পারে epochs , dropout_rate এবং batch_size মডেলটির সঠিকতা প্রভাব ফেলতে পারে। আপনি যে মডেল পরামিতিগুলি সামঞ্জস্য করতে পারেন তা হল:

  • epochs : আরও সময়কাল ভাল সঠিকতা অর্জন করতে পারে না হওয়া পর্যন্ত এগোয় কিন্তু অনেকগুলি সময়কাল জন্য প্রশিক্ষণ overfitting হতে পারে।
  • dropout_rate : ঝরে পড়া, এড়ানোর overfitting জন্য হার। কোনটিই ডিফল্টরূপে নয়।
  • batch_size : নমুনার এক নম্বর প্রশিক্ষণ ধাপে ব্যবহার করতে। কোনটিই ডিফল্টরূপে নয়।
  • validation_data : ভ্যালিডেশন তথ্য। যদি না হয়, যাচাইকরণ প্রক্রিয়া এড়িয়ে যান। কোনটিই ডিফল্টরূপে নয়।
  • train_whole_model : সত্য হলে, হাব মডিউল একসঙ্গে উপরে শ্রেণীবিন্যাস স্তর প্রশিক্ষিত করা হয়। অন্যথায়, শুধুমাত্র শীর্ষ শ্রেণীবিভাগ স্তর প্রশিক্ষণ। কোনটিই ডিফল্টরূপে নয়।
  • learning_rate : বেজ শেখার হার। কোনটিই ডিফল্টরূপে নয়।
  • momentum : একটি পাইথন ভাসা অপটিমাইজার ফরোয়ার্ড। শুধু সময় ব্যবহৃত use_hub_library সত্য। কোনটিই ডিফল্টরূপে নয়।
  • shuffle : বুলিয়ান, ডাটা এলোমেলো করা হবে কিনা তা। ডিফল্টরূপে মিথ্যা।
  • use_augmentation : বুলিয়ান, প্রাক-প্রক্রিয়াকরণ ব্যবহারের ডেটা বৃদ্ধি। ডিফল্টরূপে মিথ্যা।
  • use_hub_library : বুলিয়ান, ব্যবহার make_image_classifier_lib tensorflow হাব থেকে মডেলকে আবার শেখতে। এই প্রশিক্ষণ পাইপলাইন অনেক বিভাগ সহ জটিল ডেটাসেটের জন্য ভাল পারফরম্যান্স অর্জন করতে পারে। ডিফল্টরূপে সত্য।
  • warmup_steps : রেট শেখার উপর warmup সময়সূচীর জন্য warmup ধাপের সংখ্যা। যদি না হয়, ডিফল্ট ওয়ার্মআপ_স্টেপ ব্যবহার করা হয় যা দুটি যুগের মোট প্রশিক্ষণের ধাপ। শুধু সময় ব্যবহৃত use_hub_library মিথ্যা। কোনটিই ডিফল্টরূপে নয়।
  • model_dir : ঐচ্ছিক, মডেল চেকপয়েন্ট ফাইলের অবস্থান। শুধু সময় ব্যবহৃত use_hub_library মিথ্যা। কোনটিই ডিফল্টরূপে নয়।

প্যারামিটারগুলি মত ডিফল্টরূপে কোনটি হয় epochs মধ্যে কংক্রিট ডিফল্ট পরামিতি পাবেন make_image_classifier_lib TensorFlow হাব লাইব্রেরি বা থেকে train_image_classifier_lib

উদাহরণস্বরূপ, আমরা আরও যুগের সাথে প্রশিক্ষণ দিতে পারি।

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

10 টি প্রশিক্ষণ যুগের সাথে নতুন প্রশিক্ষিত মডেলটির মূল্যায়ন করুন।

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 1s 27ms/step - loss: 0.6417 - accuracy: 0.8883

আরো পড়ুন

আপনি যদি আমাদের পড়তে পারেন ইমেজ শ্রেণীবিন্যাস প্রযুক্তিগত বিবরণ জানার জন্য উদাহরণ। আরো তথ্যের জন্য, দয়া করে পড়ুন: