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