入力データはlmdbまたはhdf5にある必要はありません。 csvファイルからデータを入力できます。あなたがしなければならないのは、この一つとして、ImageDataを入力層を使用することです。ここでは
layer {
name: "data"
type: "ImageData"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
mirror: false
crop_size: 224
mean_file: "./supporting_files/mean.binaryproto"
}
image_data_param {
source: "./supporting_files/labels_train.txt"
batch_size: 64
shuffle: true
new_height: 339
new_width: 339
}
}
、ファイル「./supporting_files/labels_train.txtは、」入力画像へのパスが含まれているだけでcsvファイルであります通常のイメージとしてファイルシステムに保存されます。
これは、通常、モデルにデータを提供する最も簡単な方法です。しかし、あなたが本当にファイルをHDF5を使用する必要がある場合は、この機能のようなものを使用することができます
import h5py
import sys
import numpy as np
def create_h5_file(labels,file_name):
nr_entries = len(labels)
images = np.zeros((nr_entries, 3, width, height), dtype='f4')
image_labels = np.zeros((nr_entries, nr_labels_per_image), dtype='f4')
for i, l in enumerate(labels):
img = caffe.io.load_image(l[0])
# pre process and/or augment your data
images[i] = img
image_labels[i] = [int(x) for x in l[1]]
with h5py.File(file_name, "w") as H:
H.create_dataset("data", data=images)
H.create_dataset("label", data=image_labels)
file_nameはHDF5出力ファイルのパスの文字列です
とラベルをしているとラベルは、そのような(ようタプルの配列です"/path/to/my/image",[label1",label2",...,"labeln"])。
この関数は、イメージごとに複数のラベルを持つデータセット(csvファイルの代わりにhdf5を使用する正当な理由の1つ)に使用できますが、イメージごとに1つのラベルしか必要でないことに注意してください。
少し遅れ
あなたの質問に具体的にする必要がありますhttp://stackoverflow.com/help/how-to-askを読んでください。特に、これはCaffeやmatlabとは関係がありません(ただし、あなたの懸念される問題の構成要素かもしれませんが、問題に直接関係しません)。 'pd.HDFStore'のドキュメンテーションを見てみましょう – mgilbert
@mgilbertここでCaffeについて話すことは役に立たないことは分かりませんでした。私の質問を編集する方が良いと思いますか? (カフェタグを取り除く?) – kadaj13
はい問題を1つ特定の問題に限定します。 csvからの読み込み、またはhdf5ファイルへの書き込み。私は両方の良い概観を与えるhttp://pandas.pydata.org/pandas-docs/version/0.18.1/tutorials.htmlを見てみよう – mgilbert