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;
        }
Пример #2
0
 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;
        }