Я использую класс MultiClassSupportVectorMachine для классификации лиц.Вот пример кода из документации accord.net с изменениями параметров:
var hog = new HistogramsOfOrientedGradients(numberOfBins:30, blockSize:16, cellSize:2);
var bow = BagOfVisualWords.Create(hog1,new BinarySplit(15));
bow.Learn(image_array);
features = bow.Transform(image_array);
int[] labels = new int[201];
for (int i = 0; i < 201; i++)
if (i <= 100)
labels[i] = 1;
else
labels[i] = 0; //error for using -1 while training
var teacher = new MulticlassSupportVectorLearning<Gaussian>()
{
Learner = (param) => new
SequentialMinimalOptimization<Gaussian>()
{
UseKernelEstimation = true
,
Complexity = 10000,
UseComplexityHeuristic = true
}
};
MulticlassSupportVectorMachine<Gaussian> svm = teacher.Learn(features, labels);
// Функция потери дает 0, когда дело доходит до тестирования чего-то нового
double[] _feature;
bitmap test_image; //small image from sliding window
_feature=bow.Transform(test_image);
var prediction=svm.Probability(_feature);
Я получаю ошибочные результаты, язначит, когда-нибудь для полностью белых пикселей я получаю прогноз 0,9. Я проверил базу данных чистых лиц, только лица как положительные, а изображения сцены - как отрицательные данные. Более того, я использовал выравнивание градаций серого и гистограммы для значений + и - для размеров. Я тестирую данные разных размеров.и разные размеры раздвижных окон
Разные ядра, разные бункеры, размеры блоков и ячеек ...
Пожалуйста, помогите?любые предложения более чем приветствуются спасибо