DuplicateFlagError, wenn Sie versuchen zu trainieren tensorflow Objekt-Erkennung api auf google-collaboratory
Ich versuche zu trainieren Tensorflow Objekt-Erkennung API auf mein dataset mit äpfeln und Paprika. Für die, die ich generiert die benötigten Dateien (TFrecords und Bilder mit Anmerkungen) und setzte Sie in Modelle/Forschung/object_detection-Verzeichnis.
Dann habe ich die Gabel Objekt-Erkennung api von github und schob meine Dateien auf meine Gabel-repo.
Dann habe ich clone das repo in Google Collaboratory und führen Sie die train.py Datei, aber ich bekomme die DuplicateFlagError:master-Fehler.
---------------------------------------------------------------------------
DuplicateFlagError Traceback (most recent call last)
/content/models/research/object_detection/train.py in <module>()
56
57 flags = tf.app.flags
---> 58 flags.DEFINE_string('master', '', 'Name of the TensorFlow master to use.')
59 flags.DEFINE_integer('task', 0, 'task id')
60 flags.DEFINE_integer('num_clones', 1, 'Number of clones to deploy per worker.')
/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/flags.py in wrapper(*args, **kwargs)
56 'Use of the keyword argument names (flag_name, default_value, '
57 'docstring) is deprecated, please use (name, default, help) instead.')
---> 58 return original_function(*args, **kwargs)
59
60 return tf_decorator.make_decorator(original_function, wrapper)
/usr/local/lib/python3.6/dist-packages/absl/flags/_defines.py in DEFINE_string(name, default, help, flag_values, **args)
239 parser = _argument_parser.ArgumentParser()
240 serializer = _argument_parser.ArgumentSerializer()
--> 241 DEFINE(parser, name, default, help, flag_values, serializer, **args)
242
243
/usr/local/lib/python3.6/dist-packages/absl/flags/_defines.py in DEFINE(parser, name, default, help, flag_values, serializer, module_name, **args)
80 """
81 DEFINE_flag(_flag.Flag(parser, serializer, name, default, help, **args),
---> 82 flag_values, module_name)
83
84
/usr/local/lib/python3.6/dist-packages/absl/flags/_defines.py in DEFINE_flag(flag, flag_values, module_name)
102 # Copying the reference to flag_values prevents pychecker warnings.
103 fv = flag_values
--> 104 fv[flag.name] = flag
105 # Tell flag_values who's defining the flag.
106 if module_name:
/usr/local/lib/python3.6/dist-packages/absl/flags/_flagvalues.py in __setitem__(self, name, flag)
425 # module is simply being imported a subsequent time.
426 return
--> 427 raise _exceptions.DuplicateFlagError.from_flag(name, self)
428 short_name = flag.short_name
429 # If a new flag overrides an old one, we need to cleanup the old flag's
DuplicateFlagError: The flag 'master' is defined twice. First from object_detection/train.py, Second from object_detection/train.py. Description from first occurrence: Name of the TensorFlow master to use.
Um es zu lösen, ich habe versucht, zu kommentieren, dass die Linie, aber dann habe ich DuplicateFlagError auf die nächste Flagge ich.e auf der nächsten Zeile. Also, um zu versuchen, um das Problem zu lösen, habe ich kommentiert alle Zeilen in train.py das erklärt die Flaggen ich.e I kommentiert von Zeile 58 bis Zeile 82. Aber dann, ich habe den Fehler NotFoundError: ;
---------------------------------------------------------------------------
NotFoundError Traceback (most recent call last)
/content/models/research/object_detection/train.py in <module>()
165
166 if __name__ == '__main__':
--> 167 tf.app.run()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py in run(main, argv)
124 # Call the main function, passing through any arguments
125 # to the final program.
--> 126 _sys.exit(main(argv))
127
128
/content/models/research/object_detection/train.py in main(_)
105 ('input.config', FLAGS.input_config_path)]:
106 tf.gfile.Copy(config, os.path.join(FLAGS.train_dir, name),
--> 107 overwrite=True)
108
109 model_config = configs['model']
/usr/local/lib/python3.6/dist-packages/tensorflow/python/lib/io/file_io.py in copy(oldpath, newpath, overwrite)
390 with errors.raise_exception_on_not_ok_status() as status:
391 pywrap_tensorflow.CopyFile(
--> 392 compat.as_bytes(oldpath), compat.as_bytes(newpath), overwrite, status)
393
394
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg)
514 None, None,
515 compat.as_text(c_api.TF_Message(self.status.status)),
--> 516 c_api.TF_GetCode(self.status.status))
517 # Delete the underlying status object from memory otherwise it stays alive
518 # as there is a reference to status from this from the traceback due to
NotFoundError: ; No such file or directory
Wie soll ich es lösen?
Das ist mein Collab notebook - https://drive.google.com/file/d/1mZGOKX3JZXyG4XYkI6WHIXoNbRSpkE_F/view?usp=sharing
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem Sie durch Ihre colab notebook und Ihre geänderte Gabel von tensorflow/Modelle Github-repository, hier ist, wie ich es geschafft habe auf meiner lokalen Maschine.
Ich hab die neueste tensorflow version also 1.6 ist der gleiche wie der, auf Google Colab.
Dem angegebenen Pfad, indem Sie in
ssd_mobilenet_v1_coco.config
istdata/object-detection.pbtxt
. So führen train.py vonmodels/research/object_detection
Verzeichnis.train.py
erwartet--pipeline_config_path
als die parameter, die Sie angegeben haben--pipeline_config
. Also, wenn Sie gehen durchtrain.py
code, den Sie werden erkennen, dass, wenn--pipeline_config_path
ist nicht angegeben, dann wird standardmäßig der config-Datei, die als Namenmodels.config
und daher bekommen SieNotFoundError: ; No such file or directory
Also der Letzte Befehl sollte wie folgt sein:
Als Kommentar in obiger link schlägt vor: Entfernen Sie
dct_method=dct_method
imobject_detection/data_decoders/tf_example_decoder.py
um die Zeile 109.Hoffe, das hilft.