web-dev-qa-db-ja.com

分類のために画像データセットにラベルを追加する方法は?

MacOSにインストールされているpython 3.6を使用しています。画像の名前とすべての画像のクラス番号を保存するテキストファイルがあります。

     #label.txt:
     img0001.jpg  1
     img0002.jpg  3
     img0003.jpg  5
     img0004.jpg  10
     img0005.jpg  6
     img0006.jpg  8
     img0007.jpg  10
     .....

入力データのラベルとして tensorflow のニューラルネットワークにそれらを与え、同時にこのように画像をネットワークに与えたい

    xs = tf.placeholder(tf.float32,[None,#size of my photo]) 
    ys = tf.placeholder(tf.float32,[None,#size of my label if it is an array])

関連するドキュメントが見つかりません。誰かが私にこれを喜ばせるために何をすべきか教えてもらえますか?

6
user7337874

あなたが知りたいと仮定して、画像とそれぞれのラベルをニューラルネットワークにフィードする方法。

2つのことがあります:

  1. 画像を読み取り、それらをnumpy配列に変換します。
  2. 同じラベルとそれに対応するラベルをネットワークにフィードします。

Thomas Pinetz が言ったように、名前とラベルを計算したら。ラベルのホットエンコーディングを1つ作成します。

from PIL import Image
number_of_batches = len(names)/ batch_size
for i in range(number_of_batches):
     batch_x = names[i*batch_size:i*batch_size+batch_size]
     batch_y = labels[i*batch_size:i*batch_size+batch_size]
     batch_image_data = np.empty([batch_size, image_height, image_width, image_depth], dtype=np.int)
     for ix in range(len(batch_x)):
        f = batch_x[ix]
        batch_image_data[ix] = np.array(Image.open(data_dir+f))
     sess.run(train_op, feed_dict={xs:batch_image_data, ys:batch_y})
4
Pramod Patil

次のように、streight forward python i/oユーティリティ( https://docs.python.org/3/tutorial/inputoutput.html )を使用できます。

names = []
labels = []
with open('label.txt', 'r') as f:
    for line in f.readlines():
       tokens = line.split(' ')
       names.append(tokens[0])
       labels.append(int(tokens[1]))

次に、names配列を使用して、画像とラベルをy配列として読み込むことができます。

4
Thomas Pinetz