У меня есть модель CNN, которая обучается с использованием набора из 120 изображений. Изображения преобразуются в TFR записи и помечены с помощью этого методаКак использовать обученную модель CNN для идентификации объекта в Tensorflow
def write_records_file(dataset, record_location):
"""
dataset : dict(list)
Dictionary with each key being a label for the list of image filenames of its value.
record_location : str
Location to store the TFRecord output.
"""
writer = None
# Enumerating the dataset because the current index is used to breakup the files if they get over 100
current_index = 0
for breed, images_filenames in dataset.items():
for image_filename in images_filenames:
if current_index % 100 == 0:
if writer:
writer.close()
record_filename = "{record_location}-{current_index}.tfrecords".format(
record_location=record_location,
current_index=current_index)
writer = tf.python_io.TFRecordWriter(record_filename)
current_index += 1
image_file = tf.read_file(image_filename)
image = tf.image.decode_jpeg(image_file)
grayscale_image = tf.image.rgb_to_grayscale(image)
resized_image = tf.image.resize_images(grayscale_image, 250, 151)
image_bytes = sess.run(tf.cast(resized_image, tf.uint8)).tobytes()
image_label = breed.encode("utf-8")
example = tf.train.Example(features=tf.train.Features(feature={
'label': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image_label])),
'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image_bytes]))
}))
writer.write(example.SerializeToString())
write_records_file(testing_dataset, "./output/testing-images/testing-image")
write_records_file(training_dataset, "./output/training-images/training-image")
Вся модель + обучение сценарий заканчивается train_prediction = tf.nn.softmax(final_fully_connected)
и я получаю 2 .tfr файлов в качестве выходного (подготовки и тест) ,
Теперь предположим, что у вас есть фотография и вы хотите узнать, какая более похожая картина образца 120 pic, чтобы идентифицировать ее. Как я должен действовать?
тензор train_prediction имеет следующий формат shape=(3, 120), dtype=float32
120 является общее количество категорий
В книге, которую я читаю, к сожалению, не существует каких-либо указаний и глава конца этой обученной модели, что я не знаю как использовать в реальном приложении и искать в Интернете есть много подобных образцов, которые заканчиваются в одной точке.
120 - количество папок, а не количество изображений, имеется 120 папок, в которых каждая папка относится к категории. Я вообще понял, как работает классификация, что я не понимаю, как использовать именно эту обучаемую модель в Tensorflow. несколько кодеков, связанных с моим кодом, чтобы показать мне, как извлечь обученные возможности модели для простого сравнения с другим изображением - это то, что я ищу. – AndreaF
@AndreaF В этом случае train_prediction будет тензором длины 120, где индекс с наибольшим значением (вероятностью) является самым близким изображением из 120. output = sess.run (train_prediction, feed_dict = {image_file: img}) должен возвращать правильный результат , Перед этим вам нужно импортировать экспортированный граф. Следуйте инструкциям в тензорном потоке, все это хорошо объяснено. – pratsJ