object_detection_tutorial TypeError 실행 문제 : load ()에 2 개의 필수 위치 인수가 없습니다.


11

나는 tensorflow를 처음 접했고 object_detection_tutorial을 실행하려고합니다. TypeErrror를 받고 있는데 어떻게 고칠 지 모르겠습니다.

이것은 2 개의 인수를 놓치는 load_model 함수입니다.

tags : 필요한 MetaGraphDef를 식별하기위한 문자열 태그 세트. SavedModel save () API를 사용하여 변수를 저장할 때 사용되는 태그와 일치해야합니다.

export_dir : 저장된 모델 프로토콜 버퍼 및로드 할 변수가있는 디렉토리.

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'

이 문제를 해결하고 첫 번째 물체 탐지기를 실행할 수 있습니까?

답변:


14

나는 같은 문제가 있었고 지금은 1 주일 동안 이것을 해결하려고합니다. 해결책은 이것이어야한다고 생각합니다.

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

더 자세한 내용은 ( 공식 웹 사이트에서 );

export_dir에서 저장된 모델을로드하십시오.

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

별칭 :

tf.compat.v1.saved_model.load_v2

tf.compat.v2.saved_model.load

1
귀하의 솔루션을 사용하고 다른 오류가 발생했습니다. 내가 할 수있는 모든 것을 업데이트했고 작동합니다! 또한 pathlib가 istalled되지 않는 오류가 발생했습니다.
도미니크

@Dominik 더 구체적으로 할 수 있습니까? 어쩌면 나는이 tensorflow 모험 때문에 많은 문제를 해결하도록 이끌었습니다 .D
Onur Baskin

4
@OnurBaskin 나중에 오류가 있습니다 : TypeError : int () 인수는 'Tensor'가 아닌 문자열, 바이트와 같은 객체 또는 숫자
여야합니다.

@ Dominik 나는 그것이 Tensorflow 버전이라고 가정합니다. 버전 2.0이어야합니다 (안정적). 다음은 내가 당신에게 정확한 오류가있을 수 있습니다 질문에 대한 링크 입니다. 또한 'compat.v1'이 필요한 이전 가져 오기를 검색하십시오. 나중에 더 많은 오류가 발생하지만 이전 코드를 마이그레이션하는 방법입니다.
Onur Baskin

@OnurBaskin 꽤 혼란 스러워요. Object Detection API가 TensorFlow 1 버전과 만 호환된다고 생각했습니다.
Biiiiiird

0

나는 그것이 지점 문제라고 생각하고 tf_2_1_reference 지점을 사용하면 나를 위해 속임수를 썼다 .

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

그런 다음 튜토리얼의 각 목성 셀을 좋은 초보자처럼 실행했습니다!

이것은 내가 사용한 지점입니다 : https://github.com/tensorflow/models/tree/tf_2_1_reference

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.