예제 #1
0
        /**
         * @brief Invoke text classification model and return result
         */
        public float[] invoke_mode(float[] input)
        {
            byte[]      in_buffer = new byte[4 * 256];
            byte[]      out_buffer;
            float[]     output = new float[2];
            TensorsInfo in_info;
            TensorsInfo out_info;
            TensorsData in_data;
            TensorsData out_data;

            string model_path = ResourcePath + "models/text_classification.tflite";

            if (!File.Exists(model_path))
            {
                Log.Error(TAG, "Model file is not exist");
                return(output);
            }

            Buffer.BlockCopy(input, 0, in_buffer, 0, in_buffer.Length);

            /* Set input & output TensorsInfo */
            in_info = new TensorsInfo();
            in_info.AddTensorInfo(TensorType.Float32, new int[4] {
                256, 1, 1, 1
            });

            out_info = new TensorsInfo();
            out_info.AddTensorInfo(TensorType.Float32, new int[4] {
                2, 1, 1, 1
            });

            /* Create single inference engine */
            SingleShot single = new SingleShot(model_path, in_info, out_info);

            /* Set input data */
            in_data = in_info.GetTensorsData();
            in_data.SetTensorData(0, in_buffer);

            /* Single shot invoke */
            out_data = single.Invoke(in_data);

            /* Get output data from TensorsData */
            out_buffer = out_data.GetTensorData(0);
            Buffer.BlockCopy(out_buffer, 0, output, 0, out_buffer.Length);

            return(output);
        }
예제 #2
0
        public static bool BasicSingleTest_Success00()
        {
            byte[] in_buffer = new byte[3 * 224 * 224 * 1];
            byte[] out_buffer;
            string model_path = ResourcePath + "models/mobilenet_v1_1.0_224_quant.tflite";

            TensorsInfo in_info;
            TensorsInfo out_info;
            TensorsData in_data;
            TensorsData out_data;

            /* Set input & output TensorsInfo */
            in_info = new TensorsInfo();
            in_info.AddTensorInfo(TensorType.UInt8, new int[4] {
                3, 224, 224, 1
            });

            out_info = new TensorsInfo();
            out_info.AddTensorInfo(TensorType.UInt8, new int[4] {
                1001, 1, 1, 1
            });

            /* Create single inference engine */
            SingleShot single = new SingleShot(model_path, in_info, out_info);

            /* Set input data */
            in_data = in_info.GetTensorsData();
            in_data.SetTensorData(0, in_buffer);

            /* Single shot invoke */
            out_data = single.Invoke(in_data);

            /* Get output data from TensorsData */
            out_buffer = out_data.GetTensorData(0);

            /* Release Single inference instance */
            single.Dispose();

            /* clean up */
            in_data.Dispose();
            out_data.Dispose();
            in_info.Dispose();
            out_info.Dispose();

            return(true);
        }