Masalah dengan menjalankan object_detection_tutorial TypeError: load () hilang 2 argumen posisi yang diperlukan

11

Saya cukup baru untuk tensorflow dan saya mencoba menjalankan object_detection_tutorial. Saya mendapatkan TypeErrror dan tidak tahu cara memperbaikinya.

Ini adalah fungsi load_model yang merindukan 2 argumen:

tag: Set tag string untuk mengidentifikasi MetaGraphDef yang diperlukan. Ini harus sesuai dengan tag yang digunakan saat menyimpan variabel menggunakan API SavedModel save ().

export_dir: Direktori tempat buffer protokol SavedModel dan variabel yang akan dimuat berada.

def load_model(model_name):
  base_url = 'http://download.tensorflow.org/models/object_detection/'
  model_file = model_name + '.tar.gz'
  model_dir = tf.keras.utils.get_file(
    fname=model_name, 
    origin=base_url + model_file,
    untar=True)

  model_dir = pathlib.Path(model_dir)/"saved_model"

  model = tf.saved_model.load(str(model_dir))
  model = model.signatures['serving_default']

  return model
WARNING:tensorflow:From <ipython-input-9-f8a3c92a04a4>:11: load (from tensorflow.python.saved_model.loader_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.loader.load or tf.compat.v1.saved_model.load. There will be a new function for importing SavedModels in Tensorflow 2.0.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-e10c73a22cc9> in <module>
      1 model_name = 'ssd_mobilenet_v1_coco_2017_11_17'
----> 2 detection_model = load_model(model_name)

<ipython-input-9-f8a3c92a04a4> in load_model(model_name)
      9   model_dir = pathlib.Path(model_dir)/"saved_model"
     10 
---> 11   model = tf.saved_model.load(str(model_dir))
     12   model = model.signatures['serving_default']
     13 

~/.local/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
    322               'in a future version' if date is None else ('after %s' % date),
    323               instructions)
--> 324       return func(*args, **kwargs)
    325     return tf_decorator.make_decorator(
    326         func, new_func, 'deprecated',

TypeError: load() missing 2 required positional arguments: 'tags' and 'export_dir'

Bisakah Anda membantu saya memperbaiki ini dan menjalankan detektor objek pertama saya: D?

Dominik
sumber

Jawaban:

14

Saya memiliki masalah yang sama dan saya mencoba menyelesaikannya selama 1 minggu sekarang. Saya kira solusinya adalah ini;

model = tf.compat.v2.saved_model.load(str(model_dir), None)

Lebih detail akan (dari situs web resmi );

Load a SavedModel dari export_dir.

tf.saved_model.load(
    export_dir,
    tags=None
)

Alias:

tf.compat.v1.saved_model.load_v2

tf.compat.v2.saved_model.load
Onur Baskin
sumber
1
Saya menggunakan solusi Anda dan mendapat kesalahan lain. Saya memperbarui semua yang saya bisa dan berfungsi! Saya juga memiliki kesalahan dengan pathlib tidak sedang istalled.
Dominik
@Dominik dapatkah Anda lebih spesifik? mungkin saya bisa membantu karena petualangan tensorflow ini saya telah menuntun saya untuk menyelesaikan banyak masalah: D
Onur Baskin
4
@OnurBaskin Ada kesalahan nanti: TypeError: int () argumen harus berupa string, objek seperti byte atau angka, bukan 'Tensor'
kaitsu
@Dominik Saya menganggap itu versi Tensorflow Anda. Itu harus versi 2.0 (stabil). Inilah tautan untuk pertanyaan yang saya ajukan, mungkin Anda mengalami kesalahan yang sebenarnya. Juga, cari impor lama yang membutuhkan 'compat.v1'. nanti Anda akan mendapatkan lebih banyak kesalahan, tetapi beginilah cara Anda memigrasi kode lama.
Onur Baskin
@ OnurBaskin saya cukup bingung. Saya pikir Object Detection API hanya kompatibel dengan versi TensorFlow 1.
Biiiiiird
0

Saya menduga itu adalah masalah cabang dan menggunakan cabang tf_2_1_reference melakukan trik untuk saya:

igian@iGians-MBP models % git checkout tf_2_1_reference
M   research/object_detection/object_detection_tutorial.ipynb
Branch 'tf_2_1_reference' set up to track remote branch 'tf_2_1_reference' from 'origin'.
Switched to a new branch 'tf_2_1_reference'
igians@iGians-MBP models % jupyter notebook

Kemudian dieksekusi setiap sel jupiter dari tutorial seperti pemula yang baik!

Ini adalah cabang yang saya gunakan: https://github.com/tensorflow/models/tree/tf_2_1_reference

iGian
sumber