Exemplo n.º 1
0
        public void TensorFlowTransformInceptionTest()
        {
            var modelLocation = @"C:\models\TensorFlow\tensorflow_inception_graph.pb";
            var mlContext     = new MLContext(seed: 1, conc: 1);
            var dataFile      = GetDataPath("images/images.tsv");
            var imageFolder   = Path.GetDirectoryName(dataFile);
            var data          = mlContext.CreateLoader("Text{col=ImagePath:TX:0 col=Name:TX:1}", new MultiFileSource(dataFile));
            var images        = new ImageLoaderTransformer(mlContext, imageFolder, ("ImagePath", "ImageReal")).Transform(data);
            var cropped       = new ImageResizerTransformer(mlContext, "ImageReal", "ImageCropped", 224, 224).Transform(images);
            var pixels        = new ImagePixelExtractorTransformer(mlContext, "ImageCropped", "input").Transform(cropped);
            var tf            = new TensorFlowTransformer(mlContext, modelLocation, "input", "softmax2_pre_activation").Transform(pixels);

            tf.Schema.TryGetColumnIndex("input", out int input);
            tf.Schema.TryGetColumnIndex("softmax2_pre_activation", out int b);
            using (var curs = tf.GetRowCursor(col => col == b || col == input))
            {
                var get         = curs.GetGetter <VBuffer <float> >(b);
                var getInput    = curs.GetGetter <VBuffer <float> >(input);
                var buffer      = default(VBuffer <float>);
                var inputBuffer = default(VBuffer <float>);
                while (curs.MoveNext())
                {
                    getInput(ref inputBuffer);
                    get(ref buffer);
                }
            }
        }
Exemplo n.º 2
0
        public void TensorFlowTransformInceptionTest()
        {
            var model_location = @"C:\models\TensorFlow\tensorflow_inception_graph.pb";
            var mlContext      = new MLContext(seed: 1, conc: 1);
            var dataFile       = GetDataPath("images/images.tsv");
            var imageFolder    = Path.GetDirectoryName(dataFile);
            var data           = mlContext.CreateLoader("Text{col=ImagePath:TX:0 col=Name:TX:1}", new MultiFileSource(dataFile));
            var images         = ImageLoaderTransform.Create(mlContext, new ImageLoaderTransform.Arguments()
            {
                Column = new ImageLoaderTransform.Column[1]
                {
                    new ImageLoaderTransform.Column()
                    {
                        Source = "ImagePath", Name = "ImageReal"
                    }
                },
                ImageFolder = imageFolder
            }, data);
            var cropped = ImageResizerTransform.Create(mlContext, new ImageResizerTransform.Arguments()
            {
                Column = new ImageResizerTransform.Column[1] {
                    new ImageResizerTransform.Column()
                    {
                        Source = "ImageReal", Name = "ImageCropped", ImageHeight = 224, ImageWidth = 224, Resizing = ImageResizerTransform.ResizingKind.IsoCrop
                    }
                }
            }, images);
            var pixels = ImagePixelExtractorTransform.Create(mlContext, new ImagePixelExtractorTransform.Arguments()
            {
                Column = new ImagePixelExtractorTransform.Column[1] {
                    new ImagePixelExtractorTransform.Column()
                    {
                        Source = "ImageCropped", Name = "input", UseAlpha = false, InterleaveArgb = true, Convert = true
                    }
                }
            }, cropped);

            var tf = TensorFlowTransform.Create(mlContext, pixels, model_location, new[] { "softmax2_pre_activation" }, new[] { "input" });

            tf.Schema.TryGetColumnIndex("input", out int input);
            tf.Schema.TryGetColumnIndex("softmax2_pre_activation", out int b);
            using (var curs = tf.GetRowCursor(col => col == b || col == input))
            {
                var get         = curs.GetGetter <VBuffer <float> >(b);
                var getInput    = curs.GetGetter <VBuffer <float> >(input);
                var buffer      = default(VBuffer <float>);
                var inputBuffer = default(VBuffer <float>);
                while (curs.MoveNext())
                {
                    getInput(ref inputBuffer);
                    get(ref buffer);
                }
            }
        }
Exemplo n.º 3
0
        public void TensorFlowTransformObjectDetectionTest()
        {
            var modelLocation = @"C:\models\TensorFlow\ssd_mobilenet_v1_coco_2018_01_28\frozen_inference_graph.pb";
            var mlContext     = new MLContext(seed: 1, conc: 1);
            var dataFile      = GetDataPath("images/images.tsv");
            var imageFolder   = Path.GetDirectoryName(dataFile);
            var data          = mlContext.CreateLoader("Text{col=ImagePath:TX:0 col=Name:TX:1}", new MultiFileSource(dataFile));
            var images        = new ImageLoaderTransformer(mlContext, imageFolder, ("ImagePath", "ImageReal")).Transform(data);
            var cropped       = new ImageResizerTransformer(mlContext, "ImageReal", "ImageCropped", 32, 32).Transform(images);

            var pixels = new ImagePixelExtractorTransformer(mlContext, "ImageCropped", "image_tensor", asFloat: false).Transform(cropped);
            var tf     = new TensorFlowTransformer(mlContext, modelLocation, new[] { "image_tensor" },
                                                   new[] { "detection_boxes", "detection_scores", "num_detections", "detection_classes" }).Transform(pixels);

            tf.Schema.TryGetColumnIndex("image_tensor", out int input);
            tf.Schema.TryGetColumnIndex("detection_boxes", out int boxes);
            tf.Schema.TryGetColumnIndex("detection_scores", out int scores);
            tf.Schema.TryGetColumnIndex("num_detections", out int num);
            tf.Schema.TryGetColumnIndex("detection_classes", out int classes);

            using (var curs = tf.GetRowCursor(tf.Schema["image_tensor"], tf.Schema["detection_boxes"], tf.Schema["detection_scores"], tf.Schema["detection_classes"], tf.Schema["num_detections"]))
            {
                var getInput    = curs.GetGetter <VBuffer <byte> >(input);
                var getBoxes    = curs.GetGetter <VBuffer <float> >(boxes);
                var getScores   = curs.GetGetter <VBuffer <float> >(scores);
                var getNum      = curs.GetGetter <VBuffer <float> >(num);
                var getClasses  = curs.GetGetter <VBuffer <float> >(classes);
                var buffer      = default(VBuffer <float>);
                var inputBuffer = default(VBuffer <byte>);
                while (curs.MoveNext())
                {
                    getInput(ref inputBuffer);
                    getBoxes(ref buffer);
                    getScores(ref buffer);
                    getNum(ref buffer);
                    getClasses(ref buffer);
                }
            }
        }
Exemplo n.º 4
0
        public void TensorFlowTransformObjectDetectionTest()
        {
            var model_location = @"C:\models\TensorFlow\ssd_mobilenet_v1_coco_2018_01_28\frozen_inference_graph.pb";
            var mlContext      = new MLContext(seed: 1, conc: 1);
            var dataFile       = GetDataPath("images/images.tsv");
            var imageFolder    = Path.GetDirectoryName(dataFile);
            var data           = mlContext.CreateLoader("Text{col=ImagePath:TX:0 col=Name:TX:1}", new MultiFileSource(dataFile));
            var images         = ImageLoaderTransform.Create(mlContext, new ImageLoaderTransform.Arguments()
            {
                Column = new ImageLoaderTransform.Column[1]
                {
                    new ImageLoaderTransform.Column()
                    {
                        Source = "ImagePath", Name = "ImageReal"
                    }
                },
                ImageFolder = imageFolder
            }, data);
            var cropped = ImageResizerTransform.Create(mlContext, new ImageResizerTransform.Arguments()
            {
                Column = new ImageResizerTransform.Column[1] {
                    new ImageResizerTransform.Column()
                    {
                        Source = "ImageReal", Name = "ImageCropped", ImageHeight = 32, ImageWidth = 32, Resizing = ImageResizerTransform.ResizingKind.IsoCrop
                    }
                }
            }, images);
            var pixels = ImagePixelExtractorTransform.Create(mlContext, new ImagePixelExtractorTransform.Arguments()
            {
                Column = new ImagePixelExtractorTransform.Column[1] {
                    new ImagePixelExtractorTransform.Column()
                    {
                        Source = "ImageCropped", Name = "image_tensor", UseAlpha = false, InterleaveArgb = true, Convert = false
                    }
                }
            }, cropped);

            var tf = TensorFlowTransform.Create(mlContext, pixels, model_location,
                                                new[] { "detection_boxes", "detection_scores", "num_detections", "detection_classes" },
                                                new[] { "image_tensor" });

            tf.Schema.TryGetColumnIndex("image_tensor", out int input);
            tf.Schema.TryGetColumnIndex("detection_boxes", out int boxes);
            tf.Schema.TryGetColumnIndex("detection_scores", out int scores);
            tf.Schema.TryGetColumnIndex("num_detections", out int num);
            tf.Schema.TryGetColumnIndex("detection_classes", out int classes);
            using (var curs = tf.GetRowCursor(col => col == classes || col == num || col == scores || col == boxes || col == input))
            {
                var getInput    = curs.GetGetter <VBuffer <byte> >(input);
                var getBoxes    = curs.GetGetter <VBuffer <float> >(boxes);
                var getScores   = curs.GetGetter <VBuffer <float> >(scores);
                var getNum      = curs.GetGetter <VBuffer <float> >(num);
                var getClasses  = curs.GetGetter <VBuffer <float> >(classes);
                var buffer      = default(VBuffer <float>);
                var inputBuffer = default(VBuffer <byte>);
                while (curs.MoveNext())
                {
                    getInput(ref inputBuffer);
                    getBoxes(ref buffer);
                    getScores(ref buffer);
                    getNum(ref buffer);
                    getClasses(ref buffer);
                }
            }
        }