120枚の画像を使用して訓練されたCNNモデルがあります。 画像はTFRレコードに変換され、この方法で標識Tensorflowでオブジェクト識別に訓練されたCNNモデルを使用する方法
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枚の写真のより類似した写真が何であるかを知りたいとします。どのように進まなければならないのですか?
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