مشاهده در TensorFlow.org | در Google Colab اجرا شود | مشاهده منبع در GitHub | دانلود دفترچه یادداشت | مدل TF Hub را ببینید |
بررسی اجمالی
وظیفه بازیابی یک تصویر با وضوح بالا (HR) از همتای با وضوح پایین آن معمولاً به عنوان وضوح تصویر تک تصویر (SISR) شناخته می شود.
مدل مورد استفاده در اینجا این است ESRGAN ( ESRGAN: پیشرفته سوپر سایز تصویر زایشی خصمانه شبکه ). و ما قصد داریم از TensorFlow Lite برای اجرای استنتاج بر روی مدل از پیش آموزش دیده استفاده کنیم.
مدل TFLite از این تبدیل اجرای میزبانی شده بر روی TF توپی. توجه داشته باشید که مدلی که ما تبدیل کردیم یک تصویر با وضوح پایین 50x50 را به یک تصویر با وضوح بالا 200x200 (ضریب مقیاس = 4) نمونه میدهد. اگر میخواهید اندازه ورودی یا فاکتور مقیاس متفاوتی داشته باشید، باید مدل اصلی را مجدداً تبدیل یا آموزش دهید.
برپایی
بیایید ابتدا کتابخانه های مورد نیاز را نصب کنیم.
pip install matplotlib tensorflow tensorflow-hub
وابستگی های وارداتی
import tensorflow as tf
import tensorflow_hub as hub
import matplotlib.pyplot as plt
print(tf.__version__)
2.7.0
مدل ESRGAN را دانلود و تبدیل کنید
model = hub.load("https://tfhub.dev/captain-pool/esrgan-tf2/1")
concrete_func = model.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
@tf.function(input_signature=[tf.TensorSpec(shape=[1, 50, 50, 3], dtype=tf.float32)])
def f(input):
return concrete_func(input);
converter = tf.lite.TFLiteConverter.from_concrete_functions([f.get_concrete_function()], model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
# Save the TF Lite model.
with tf.io.gfile.GFile('ESRGAN.tflite', 'wb') as f:
f.write(tflite_model)
esrgan_model_path = './ESRGAN.tflite'
WARNING:absl:Found untraced functions such as restored_function_body, restored_function_body, restored_function_body, restored_function_body, restored_function_body while saving (showing 5 of 335). These functions will not be directly callable after loading. INFO:tensorflow:Assets written to: /tmp/tmpinlbbz0t/assets INFO:tensorflow:Assets written to: /tmp/tmpinlbbz0t/assets 2021-11-16 12:15:19.621471: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:363] Ignored output_format. 2021-11-16 12:15:19.621517: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:366] Ignored drop_control_dependency. WARNING:absl:Buffer deduplication procedure will be skipped when flatbuffer library is not properly loaded
دانلود تصویر آزمایشی (سر حشره).
test_img_path = tf.keras.utils.get_file('lr.jpg', 'https://raw.githubusercontent.com/tensorflow/examples/master/lite/examples/super_resolution/android/app/src/main/assets/lr-1.jpg')
Downloading data from https://raw.githubusercontent.com/tensorflow/examples/master/lite/examples/super_resolution/android/app/src/main/assets/lr-1.jpg 16384/6432 [============================================================================] - 0s 0us/step
با استفاده از TensorFlow Lite یک تصویر با وضوح فوق العاده ایجاد کنید
lr = tf.io.read_file(test_img_path)
lr = tf.image.decode_jpeg(lr)
lr = tf.expand_dims(lr, axis=0)
lr = tf.cast(lr, tf.float32)
# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path=esrgan_model_path)
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Run the model
interpreter.set_tensor(input_details[0]['index'], lr)
interpreter.invoke()
# Extract the output and postprocess it
output_data = interpreter.get_tensor(output_details[0]['index'])
sr = tf.squeeze(output_data, axis=0)
sr = tf.clip_by_value(sr, 0, 255)
sr = tf.round(sr)
sr = tf.cast(sr, tf.uint8)
نتیجه را تجسم کنید
lr = tf.cast(tf.squeeze(lr, axis=0), tf.uint8)
plt.figure(figsize = (1, 1))
plt.title('LR')
plt.imshow(lr.numpy());
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.title(f'ESRGAN (x4)')
plt.imshow(sr.numpy());
bicubic = tf.image.resize(lr, [200, 200], tf.image.ResizeMethod.BICUBIC)
bicubic = tf.cast(bicubic, tf.uint8)
plt.subplot(1, 2, 2)
plt.title('Bicubic')
plt.imshow(bicubic.numpy());
معیارهای عملکرد
تعداد معیار عملکرد با ابزار تولید در اینجا شرح داده .
نام مدل | اندازه مدل | دستگاه | CPU | پردازنده گرافیکی |
---|---|---|---|---|
وضوح فوق العاده (ESRGAN) | 4.8 مگابایت | پیکسل 3 | 586.8ms* | 128.6 میلیثانیه |
پیکسل 4 | 385.1 میلیثانیه* | 130.3 میلیثانیه |
* 4 موضوعات استفاده