2

ラベル付きのトレーニング画像(カラー)のセットがあります。これらの画像をlibsvmへの入力として使用したいと思います。このカラー画像をlibsvmが入力として受け入れる形式に変換するのに役立つPythonライブラリ/関数/コードはありますか?

ありがとう。

4

1 に答える 1

3

Pythonでそれを行ったとき、画像を配列に変換しました(ただし、私は常にグレースケール画像で作業していました)。

outpath="images\\ts\\"
fp = open(outpath + 'trainingset.dump','wb');
dirList = os.listdir(path)
for fname in dirList:
if '.jpg' in fname:
    im = array(Image.open(path + "\\" + fname).convert('L'))
    pickle.dump(im,fp)
    pickle.dump(1,fp)
fp.close()

それをlibsvmに渡す時点で、それをリストに変換する必要があります。

path="images\\ts\\trainingset.dump"
fp = open(path, "r")
im = pickle.load(fp)
label = pickle.load(fp)
imlist = im.tolist()
imlist = [item for sublist in imlist for item in sublist]
y.append(label)
x.append(imlist)

print "Setting up the SVM problem"
prob = svm_problem(y, x)

param = svm_parameter('-t 2 -g 0.00001')
param.C = 1

print "Starting the training process"
m=svm_train(prob, param)

print "Storing the model"

svm_save_model(model, m)

私はlibsvmの使用経験がありますが、ほとんどの場合C++で使用していることに注意してください。私はPythonを初めて使用しますが、それは最善のアプローチではないかもしれません。それは私にとってうまくいった方法でした。また、色を維持したい場合は、画像をグレースケールに変換しないようにすることができます。私は自分で試したことはありませんが、次の代わりにこれでうまくいくはずです。

im = array(Image.open(path + "\\" + fname).convert('L'))

これを使って:

im = array(Image.open(path + "\\" + fname))

これがお役に立てば幸いです。

于 2012-11-16T12:18:51.987 に答える