public static Dataset LoadResultData() { Dataset result = new Dataset(); var reader = new StreamReader(Path.Combine(dataPath, "test.csv")); // ignore first line var line = reader.ReadLine(); while ((line = reader.ReadLine()) != null) { var ls = line.Split(','); int pos = 0; var output = default(float[]); var pic = ls.Last().Split(' '); var img = new float[inputSize]; for (int j = 0; j < inputSize; ++j) { img[j] = float.Parse(pic[j]) / 255.0f; } var input = default(float[]); using (var bmp = Tools.float_to_bmp(img, origImgSize, origImgSize)) { using (var filtered = applyFilters(bmp)) { input = Tools.bmp_to_float(filtered); } } result.AddPair(input, output); } return result; }
private static void addData(float[] input, float[] output, Dataset data) { Monitor.Enter(data); if (data.input.Count % 1000 == 0) Console.WriteLine("{0}", data.input.Count); data.AddPair(input, output); Monitor.Exit(data); }
public static Dataset LoadTrainData() { Dataset result = new Dataset(); var net = new PragmaLearn.Learner.BackpropNeuralNetwork(); // net.Open("network.dat"); var reader = new StreamReader(Path.Combine(dataPath, "training.csv")); // ignore first line var line = reader.ReadLine(); while ((line = reader.ReadLine()) != null) { var ls = line.Split(','); bool skipped = false; var keypoints = new double[outputSize]; for (int i = 0; i < outputSize; ++i) { if (string.IsNullOrEmpty(ls[i])) { Console.Write("."); keypoints[i] = -1; // output[i] = Tools.rnd.NextDouble(); skipped = true; // break; } else { keypoints[i] = double.Parse(ls[i]); } } //if (skipped) // continue; var pic = ls.Last().Split(' '); var img = new float[inputSize]; for (int j = 0; j < inputSize; ++j) { img[j] = float.Parse(pic[j]) / 255.0f; } //if (skipped) //{ // using (var bmp = Tools.double_to_bmp(img, origImgSize, origImgSize)) // { // using (var filtered = applyFilters(bmp)) // { // var input = Tools.bmp_to_double(filtered); // var p = net.Predict(input); // for (int i = 0; i < keypoints.Length; ++i) // { // if (keypoints[i] == -1) // keypoints[i] = p[i] * origImgSize; // } // } // } //} for (int x = 0; x < 20; ++x) { var points = new PointF[keypoints.Length / 2]; for (int i = 0; i < keypoints.Length; i += 2) { points[i / 2] = new PointF((float)keypoints[i], (float)keypoints[i + 1]); } var input = default(float[]); using (var bmp = Tools.float_to_bmp(img, origImgSize, origImgSize)) { if (x != 0) { using (var transformed = transformRandom(bmp, points)) { using (var filtered = applyFilters(transformed)) { input = Tools.bmp_to_float(filtered); } } } else { using (var filtered = applyFilters(bmp)) { input = Tools.bmp_to_float(filtered); } } } var output = new float[keypoints.Length]; for (int i = 0; i < points.Length; i++) { output[2 * i] = points[i].X != -1 ? points[i].X / origImgSize : -1; output[2 * i + 1] = points[i].Y != -1 ? points[i].Y / origImgSize : -1; } result.AddPair(input, output); } //if (skipped) //{ // var p = net.Predict(input); // for (int i = 0; i < output.Length; ++i) // { // if (output[i] == -1) // output[i] = p[i]; // } //} } reader.Dispose(); return result; }