...
 
Commits (5)
    https://gitcode.net/opencv/opencv_extra/-/commit/06b913606bae304026a9e542278906d8f6bf4dd7 Add test for Pack from TFLite 2023-07-17T16:23:32+03:00 Dmitry Kurtaev dmitry.kurtaev@gmail.com https://gitcode.net/opencv/opencv_extra/-/commit/89d03b0500d9e1b34b4e5f57418baf7da681ed21 Update test data 2023-07-18T09:32:44+03:00 Dmitry Kurtaev dmitry.kurtaev@gmail.com https://gitcode.net/opencv/opencv_extra/-/commit/9d760cc6b432ab91dcda0750d27a4daa227ce640 Merge pull request #1076 from dkurt:tflite_new_layers 2023-07-21T12:25:11+03:00 Alexander Smorkalov 2536374+asmorkalov@users.noreply.github.com Add test for Pack from TFLite https://gitcode.net/opencv/opencv_extra/-/commit/da67e69c869b86f16a8330e72066a0c336ce2e78 Test data for PReLU from TensorFlow 2 with non-zero scales 2023-07-25T20:25:03+03:00 Dmitry Kurtaev dmitry.kurtaev@gmail.com https://gitcode.net/opencv/opencv_extra/-/commit/7c077a7e69b52e3d594070fea02e198aed36bcf1 Merge pull request #1077 from dkurt:eltwise_prelu 2023-07-27T16:38:15+03:00 Alexander Smorkalov 2536374+asmorkalov@users.noreply.github.com Test data for PReLU from TensorFlow 2 with non-zero scales
...@@ -76,9 +76,9 @@ model = tf.keras.models.Sequential([ ...@@ -76,9 +76,9 @@ model = tf.keras.models.Sequential([
save(model, 'tf2_dense', flatten_input=tf.TensorSpec(shape=[None, 1, 2, 3], dtype=tf.float32)) save(model, 'tf2_dense', flatten_input=tf.TensorSpec(shape=[None, 1, 2, 3], dtype=tf.float32))
################################################################################ ################################################################################
model = tf.keras.models.Sequential([ model = tf.keras.models.Sequential([
tf.keras.layers.PReLU(input_shape=(1, 2, 3)), tf.keras.layers.PReLU(input_shape=(1, 4, 6), alpha_initializer='random_normal'),
]) ])
save(model, 'tf2_prelu', p_re_lu_input=tf.TensorSpec(shape=[None, 1, 2, 3], dtype=tf.float32)) save(model, 'tf2_prelu', p_re_lu_input=tf.TensorSpec(shape=[None, 1, 4, 6], dtype=tf.float32))
################################################################################ ################################################################################
model = tf.keras.models.Sequential([ model = tf.keras.models.Sequential([
tf.keras.layers.AveragePooling2D(input_shape=(4, 6, 3), pool_size=(2, 2)), tf.keras.layers.AveragePooling2D(input_shape=(4, 6, 3), pool_size=(2, 2)),
......
...@@ -45,3 +45,33 @@ run_tflite_model("face_landmark", (192, 192)) ...@@ -45,3 +45,33 @@ run_tflite_model("face_landmark", (192, 192))
run_tflite_model("face_detection_short_range", (128, 128)) run_tflite_model("face_detection_short_range", (128, 128))
run_mediapipe_solution(mp.solutions.selfie_segmentation.SelfieSegmentation(model_selection=0), (256, 256)) run_mediapipe_solution(mp.solutions.selfie_segmentation.SelfieSegmentation(model_selection=0), (256, 256))
# Save TensorFlow model as TFLite
def save_tflite_model(model, inp, name):
func = model.get_concrete_function()
converter = tf.lite.TFLiteConverter.from_concrete_functions([func])
tflite_model = converter.convert()
interpreter = tf.lite.Interpreter(model_content=tflite_model)
with open(f'{name}.tflite', 'wb') as f:
f.write(tflite_model)
out = model(inp)
np.save(f'{name}_inp.npy', inp.transpose(0, 3, 1, 2))
np.save(f'{name}_out_Identity.npy', np.array(out).transpose(0, 3, 1, 2))
@tf.function(input_signature=[tf.TensorSpec(shape=[1, 3, 3, 1], dtype=tf.float32)])
def replicate_by_pack(x):
pack_1 = tf.stack([x, x], axis=3)
reshape_1 = tf.reshape(pack_1, [1, 3, 6, 1])
pack_2 = tf.stack([reshape_1, reshape_1], axis=2)
reshape_2 = tf.reshape(pack_2, [1, 6, 6, 1])
scaled = tf.image.resize(reshape_2, size=(3, 3), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR)
return scaled + x
inp = np.random.standard_normal((1, 3, 3, 1)).astype(np.float32)
save_tflite_model(replicate_by_pack, inp, 'replicate_by_pack')