Ich möchte Sie fragen, ob ich Hashing-Technik mit SURF-Algorithmus verwenden kann, machte ich ein Programm zur Gesichtserkennung durch Abgleich von Testbild mit gespeicherten Bilddatensatz.SURF mit Hashing
Ich benutzte Accord.net und machte Tasche von Funktionen von BOW dieser Bibliothek, dann machte ich ID3 Entscheidungsbaum und KNN, aber das Ergebnis war in beiden Fällen nicht sehr gut, ich frage, ob ich Hash-Technik verwenden kann, um schnell zu machen und besseres Ergebnis, oder das wird nicht machbar sein? Dies ist der Code für BOW
private void button2_Click(object sender, EventArgs e)
{
try
{
var watchFEC = System.Diagnostics.Stopwatch.StartNew();
Accord.Math.Random.Generator.Seed = 0;
bow.ParallelOptions.MaxDegreeOfParallelism = 1;
bow.Learn(DatasetImages);
// After this point, we will be able to translate
// images into double[] feature vectors using
features = bow.Transform(DatasetImages);
watchFEC.Stop();
var elapsedMs = watchFEC.ElapsedMilliseconds;
MessageBox.Show("Feature Extraction and Clastering is done" + '\n' + "Time for Feature Extraction and Clastering for Dataset is: " + elapsedMs.ToString() + " ms");
} catch { MessageBox.Show("Error"); } }
und dies ist der Code für die für den Test
private void button4_Click_1(object sender, EventArgs e)
{
try
{
var watchTest = System.Diagnostics.Stopwatch.StartNew();
Bitmap[] testimage = new Bitmap[1];
testimage[0] = (Bitmap)pictureBox1.Image;
var ff = bow.Transform(testimage);
ff.ToInt32();
var predicted = tree.Decide(ff);
int i = 1;
for (i = 1; i < sizeofdataset; i++)
{
if (predicted[0] == Convert.ToInt16(workSheet.Cells[i, 3].Value.ToString()))
{
listBox1.SelectedItem = i;
MessageBox.Show("Test" + i);
break;
}
}
MessageBox.Show("Test" + predicted[0]);
pictureBox2.Image = new Bitmap(workSheet.Cells[i, 1].Value.ToString());
watchTest.Stop();
var elapsedMs = watchTest.ElapsedMilliseconds;
MessageBox.Show("Time for Testing is: " + elapsedMs.ToString() + " ms");
}
catch (Exception ex) { MessageBox.Show("Error" + ex); }
}
Hallo Hiraqui, wenn Sie können, schreiben Sie bitte eine vollständige .zip Ihres Projekts In Accord.NETs Issue-Tracker könnte es leichter zu erkennen sein, was hier auftreten könnte. Wie auch immer - haben Sie auch versucht, SVM anstelle von Entscheidungsbäumen zu verwenden? Sie sind oft schneller/zuverlässiger als ID3-Entscheidungsbäume (zumindest innerhalb des Accord.NET-Frameworks). – Cesar
@Cesar, Danke für die Antwort, ich sende Ihnen mein komplettes Programm an Ihre E-Mail, ich habe nicht versucht SVM –