Cer*_*rin 9 classification machine-learning image-processing
我有一大堆用植物学名称标记的植物图像.什么是用于训练此数据集以便对无标签照片进行分类的最佳算法?处理照片以使100%的像素包含植物(例如叶子或树皮的特写),因此算法不必过滤掉其他对象/空白空间/背景.
我已经尝试为所有照片生成SIFT功能并将这些(特征,标签)对提供给LibLinear SVM,但准确度却低了6%.
我也尝试将这些相同的数据提供给一些Weka分类器.准确度稍好一些(Logistic为25%,IBk为18%),但Weka不是为可扩展性而设计的(它将所有内容加载到内存中).由于SIFT要素数据集是几百万行,我只能用随机3%切片测试Weka,因此它可能不具代表性.
编辑:一些示例图像:

通常,您不会直接训练SIFT功能.对它们进行聚类(使用k均值),然后训练聚类成员资格标识符的直方图(即,k维向量,其在位置i计算有多少特征被分配给第i个聚类).
这样,您可以获得每个图像的单个输出(以及单个k维特征向量).
这是准代码(在Pythonn中使用mahotas和milk):
from mahotas.surf import surf
from milk.unsupervised.kmeans import kmeans,assign_centroids
import milk
# First load your data:
images = ...
labels = ...
local_features = [surfs(im, 6, 4, 2) for im in imgs]
allfeatures = np.concatenate(local_features)
_, centroids = kmeans(allfeatures, k=100)
histograms = []
for ls in local_features:
hist = assign_centroids(ls, centroids, histogram=True)
histograms.append(hist)
cmatrix, _ = milk.nfoldcrossvalidation(histograms, labels)
print "Accuracy:", (100*cmatrix.trace())/cmatrix.sum()
Run Code Online (Sandbox Code Playgroud)