SURFアルゴリズムでハッシングテクニックを使用できるかどうか聞いてみたいと思います。テスト画像と保存された画像データセットを照合して顔認識をするプログラムを作った。ハッシュ付きSURF
Accord.netを使用し、このライブラリのBOWによる機能のバッグを作成した後、ID3デシジョンツリーとKNNを作成しましたが、どちらの方法でも結果はあまり良くありませんでした。よりよい結果が得られるか、これは実行可能ではありませんか? これは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"); } }
ためのコードであると
private void button3_Click(object sender, EventArgs e)
{
try
{
var watchLearn = System.Diagnostics.Stopwatch.StartNew();
inputs = features.ToInt32();
tree = teacher.Learn(inputs, outputs);
error = new ZeroOneLoss(outputs).Loss(tree.Decide(inputs));
MessageBox.Show("Error rate of learning is : "+error.ToString());
watchLearn.Stop();
var elapsedMs = watchLearn.ElapsedMilliseconds;
MessageBox.Show("Learning is done" + '\n' + "Time for Learning is: " + elapsedMs.ToString() + " ms");
}
catch(Exception ex) { MessageBox.Show("Error"+ex); }
}
とテスト
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); }
}
こんにちはHiraqui、あなたは、あなたのプロジェクトの完全な.zipファイルを投稿してくださいすることができた場合Accord.NETの問題追跡ツールには、ここで問題となるものを簡単に検出できるようになる可能性があります。ただし、意思決定ツリーではなくSVMを使用してみましたか? ID3デシジョンツリーよりも高速で、信頼性が高いことがよくあります(少なくともAccord.NET Frameworkでは)。 – Cesar
@Cesar、返事ありがとう、私はあなたの電子メールに私のフルプログラムを送って、私はSVMを試していない –