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); } } }
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); } } }
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); } } }
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); } } }