Bir dizi resim almam ve bunları sınıflandırma ihtiyacım var.Görüntülerin Bir Sınıflandırmasını Sınıflara Göre Sınıflandırma
Sorun şu ki, bu resimler hakkında hiçbir bilgim yok. Bu yüzden bulabildiğim kadar çok tanımlayıcı kullanmayı planlıyorum ve sonra sadece bana verilen tanımlayıcıları tanımlamak için bir PCA yapıyorum.
Eğer yardımcı olursa, çok fazla veri noktasında denetimli öğrenim yapabilirim. Ancak resimlerin birbirine bağlı olma şansı var. Anlamı, her bir Görüntüdeki bilgilerle dizildiğini umduğum halde, Image X'den Image X + 1'e bir gelişme olabilir.
Sorum şunlardır: Python kullanırken
- Bunu nasıl iyi yapacağım? (İlk olarak hızın konu dışı olduğu bir kavram kanıtı yapmak istiyorum). Hangi kütüphaneleri kullanmalıyım?
- Resim için örnek var mı? Bu tür bir sınıflandırma var mı? Bir grup tanımlayıcının kullanılması ve PCA ile pişirilmesi örneği. Bu bölüm benim için çok korkutucu, dürüst olmak gerekirse. Python'un benim için böyle bir şey yapması gerektiğini düşünmeme rağmen.
Düzenleme: http://scikit-image.org/ orada bazı tanımlayıcılar var gibi: Ben şu anda bunun için dışarı çalışıyorum düzgün bir kit bulduk. Otomatik özellik çıkarımı yapmanın bir yolu var mıdır ve özellikleri hedef sınıflandırma için tanımlayıcı güce göre sıralar mı? PCA otomatik olarak sıralama yapabilmelidir.
Düzenleme 2: Verilerin depolanması için şimdi biraz daha rafine edilmiş bir çerçevem var. Fat sistemini bir veritabanı olarak kullanacağım. Her sınıfın birleşiminin bir örneği için bir klasörüm olacak. Yani eğer bir resim sınıf 1 ve 2'ye aitse, bu görüntüleri içeren bir klasör img12 olacaktır. Bu şekilde, her sınıf için sahip olduğum veri miktarını daha iyi kontrol edebilirim.
Düzenleme 3: Python için yapmak istediklerimi yapan bir libary (sklearn) örneği buldum. elle yazılmış rakamların tanınmasıyla ilgilidir. Veri kümemi bununla birlikte kullanabileceğim bir şeye dönüştürmeye çalışıyorum.
import pylab as pl
# Import datasets, classifiers and performance metrics
from sklearn import datasets, svm, metrics
# The digits dataset
digits = datasets.load_digits()
# The data that we are interested in is made of 8x8 images of digits,
# let's have a look at the first 3 images, stored in the `images`
# attribute of the dataset. If we were working from image files, we
# could load them using pylab.imread. For these images know which
# digit they represent: it is given in the 'target' of the dataset.
for index, (image, label) in enumerate(zip(digits.images, digits.target)[:4]):
pl.subplot(2, 4, index + 1)
pl.axis('off')
pl.imshow(image, cmap=pl.cm.gray_r, interpolation='nearest')
pl.title('Training: %i' % label)
# To apply an classifier on this data, we need to flatten the image, to
# turn the data in a (samples, feature) matrix:
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
# Create a classifier: a support vector classifier
classifier = svm.SVC(gamma=0.001)
# We learn the digits on the first half of the digits
classifier.fit(data[:n_samples/2], digits.target[:n_samples/2])
# Now predict the value of the digit on the second half:
expected = digits.target[n_samples/2:]
predicted = classifier.predict(data[n_samples/2:])
print("Classification report for classifier %s:\n%s\n"
% (classifier, metrics.classification_report(expected, predicted)))
print("Confusion matrix:\n%s" % metrics.confusion_matrix(expected, predicted))
for index, (image, prediction) in enumerate(
zip(digits.images[n_samples/2:], predicted)[:4]):
pl.subplot(2, 4, index + 5)
pl.axis('off')
pl.imshow(image, cmap=pl.cm.gray_r, interpolation='nearest')
pl.title('Prediction: %i' % prediction)
pl.show()
Peki, şu ana kadar ne denediniz? Biraz çaba göster. –
Şu ana kadar yaptığım işleri düzenleyeceğim. – tarrasch