overcome Graphdef kann im Tensorflow nicht größer als 2 GB sein.
Ich benutze Tensorflow'simageNet trainiertes Modell, um die Features der letzten Poolebene als Repräsentationsvektoren für einen neuen Bilddatensatz zu extrahieren.
Das Modell sieht auf einem neuen Bild wie folgt aus:
python classify_image.py --image_file new_image.jpeg
Ich habe die Hauptfunktion so bearbeitet, dass ich einen Ordner mit Bildern nehmen und die Vorhersage für alle Bilder gleichzeitig zurückgeben und die Merkmalsvektoren in eine CSV-Datei schreiben kann. So habe ich das gemacht:
def main(_):
maybe_download_and_extract()
#image = (FLAGS.image_file if FLAGS.image_file else
# os.path.join(FLAGS.model_dir, 'cropped_panda.jpg'))
#edit to take a directory of image files instead of a one file
if FLAGS.data_folder:
images_folder=FLAGS.data_folder
list_of_images = os.listdir(images_folder)
else:
raise ValueError("Please specify image folder")
with open("feature_data.csv", "wb") as f:
feature_writer = csv.writer(f, delimiter='|')
for image in list_of_images:
print(image)
current_features = run_inference_on_image(images_folder+"/"+image)
feature_writer.writerow([image]+current_features)
Es funktionierte gut für etwa 21 Bilder, stürzte dann aber mit folgendem Fehler ab:
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1912, in as_graph_def
raise ValueError("GraphDef cannot be larger than 2GB.")
ValueError: GraphDef cannot be larger than 2GB.
Ich dachte durch den Aufruf der Methoderun_inference_on_image(images_folder+"/"+image)
Die vorherigen Bilddaten würden überschrieben, um nur die neuen Bilddaten zu berücksichtigen, was anscheinend nicht der Fall ist. So beheben Sie dieses Problem: