Beispiel #1
0
 private static void DumpNetwork(InferenceEngineNetwork network)
 {
     Console.WriteLine($"Network name: {network.NetworkName}");
     DumpShape(network);
     DumpInputs(network);
     DumpOutputs(network);
 }
Beispiel #2
0
        public static void Main()
        {
            try
            {
                //using var bitmap = (System.Drawing.Bitmap)System.Drawing.Image.FromFile(ImageName);
                using var image = Image.Load <Rgb24>(ImageName);
                Console.WriteLine($"image: {image}");
                if (image.TryGetSinglePixelSpan(out var pixelSpan))
                {
                    DumpVersion();

                    using var core = new InferenceEngineCore();

                    DumpCoreInformation(core);

                    using var network = new InferenceEngineNetwork(core, NetworkName);

                    DumpNetwork(network);

                    var mainInputName  = network.GetInputName(0);
                    var mainOutputName = network.GetOutputName(0);

                    network.SetInputResizeAlgorithm(mainInputName, resize_alg_e.RESIZE_BILINEAR);
                    network.SetInputLayout(mainInputName, layout_e.NCHW);
                    network.SetInputPrecision(mainInputName, precision_e.U8);

                    Console.WriteLine("Create executable network");
                    using var executableNetwork = new InferenceEngineExecutableNetwork(network, "GPU");

                    Console.WriteLine("Create request");
                    using var request = new InferenceEngineRequest(executableNetwork);

                    var imageDimensions   = new dimensions_t(1, 3, image.Height, image.Width);
                    var tensorDescription = new tensor_desc_t(layout_e.NHWC, imageDimensions, precision_e.U8);

                    Console.WriteLine("Create blob");
                    using var inputBlob = new Blob(tensorDescription, MemoryMarshal.Cast <Rgb24, byte>(pixelSpan));
                    request.SetBlob(mainInputName, inputBlob);

                    for (var i = 0; i < 10; i++)
                    {
                        Console.WriteLine($"Infer {i}");
                        request.Infer();
                        Console.WriteLine($"Infer {i} done");
                    }

                    using var outputBlob = request.GetBlob(mainOutputName);

                    Console.WriteLine($"Output blob. Sizes = {outputBlob.Size} {outputBlob.ByteSize}. [{outputBlob.Layout} {outputBlob.Precision}] {outputBlob.Dimensions}");
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"Error: {ex.Message}");
            }
        }
Beispiel #3
0
        private static void DumpShape(InferenceEngineNetwork network)
        {
            var inputShapes = network.GetInputShapes();

            for (var i = 0; i < inputShapes.Length; i++)
            {
                var shape = inputShapes[i];
                Console.WriteLine($"Input shape[{i}] = {shape.Name} {shape.Dimensions}");
            }
        }
Beispiel #4
0
        public Detector(InferenceEngineCore core, InferenceEngineNetwork network)
        {
            Core     = core;
            _network = network;
            var mainInputName   = network.GetInputName(0);
            var inputDimensions = network.GetInputDimensions(mainInputName);

            C         = (int)inputDimensions[1];
            H         = (int)inputDimensions[2];
            W         = (int)inputDimensions[3];
            FrameSize = C * H * W;
        }
Beispiel #5
0
        private static void DumpOutputs(InferenceEngineNetwork network)
        {
            var numberOfOutputs = network.NumberOfOutputs;

            for (var i = 0; i < numberOfOutputs; i++)
            {
                var name       = network.GetOutputName(i);
                var precision  = network.GetOutputPrecision(name);
                var layout     = network.GetOutputLayout(name);
                var dimensions = network.GetOutputDimensions(name);
                Console.WriteLine($"Output[{i}] = {name} [{precision} {layout}] {dimensions}");
            }
        }
Beispiel #6
0
        public Detector(string networkName)
        {
            var core = new InferenceEngineCore();

            try
            {
                _network = new InferenceEngineNetwork(core, networkName);
                Core     = core;
            }
            catch (Exception)
            {
                core.Dispose();
                throw;
            }
        }
Beispiel #7
0
        public static async Task <Detector> LoadAsync(InferenceEngineCore core, string networkName, CancellationToken ct)
        {
            var network = await InferenceEngineNetwork.LoadAsync(core, networkName, ct : ct);

            return(new Detector(core, network));
        }