Я использую shadoworflow образченную модель imageNet, чтобы извлечь последние функции уровня пула в качестве векторов представления для нового набора данных изображений.
Модель, как предсказывает на новом изображении, выглядит следующим образом:
python classify_image.py --image_file new_image.jpeg
Я отредактировал основную функцию, чтобы я мог взять папку с изображениями и сразу вернуть предсказание на все изображения и написать векторы объектов в файле csv. Вот как я это сделал:
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)
Он работал отлично для около 21 изображения, но затем разбился со следующей ошибкой:
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.
Я думал, вызывая метод run_inference_on_image(images_folder+"/"+image)
, предыдущие данные изображения будут перезаписаны, чтобы рассматривать только новые данные изображения, что, похоже, не так. Как решить эту проблему?