org.opencv.dnn

## Class Net

- java.lang.Object
- - org.opencv.dnn.Net

-     public class Net
      extends Object

  This class allows to create and manipulate comprehensive artificial neural networks. Neural network is presented as directed acyclic graph (DAG), where vertices are Layer instances, and edges specify relationships between layers inputs and outputs. Each network layer has unique integer id and unique string name inside its network. LayerId can store either layer name or layer id. This class supports reference counting of its instances, i. e. copies point to the same instance.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected long` | `nativeObj`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `Net()`
    `protected` | `Net(long addr)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Net` | `__fromPtr__(long addr)`
    `void` | `connect(String outPin, String inpPin)` Connects output of the first layer to input of the second layer.
    `String` | `dump()` Dump net to String
    `void` | `dumpToFile(String path)` Dump net structure, hyperparameters, backend, target and fusion to dot file
    `boolean` | `empty()` Returns true if there are no layers in the network.
    `void` | `enableFusion(boolean fusion)` Enables or disables layer fusion in the network.
    `protected void` | `finalize()`
    `Mat` | `forward()` Runs forward pass to compute output of layer with name `outputName`.
    `void` | `forward(List<Mat> outputBlobs)` Runs forward pass to compute output of layer with name `outputName`.
    `void` | `forward(List<Mat> outputBlobs, List<String> outBlobNames)` Runs forward pass to compute outputs of layers listed in `outBlobNames`.
    `void` | `forward(List<Mat> outputBlobs, String outputName)` Runs forward pass to compute output of layer with name `outputName`.
    `Mat` | `forward(String outputName)` Runs forward pass to compute output of layer with name `outputName`.
    `long` | `getFLOPS(int layerId, List<MatOfInt> netInputShapes)`
    `long` | `getFLOPS(int layerId, MatOfInt netInputShape)`
    `long` | `getFLOPS(List<MatOfInt> netInputShapes)` Computes FLOP for whole loaded model with specified input shapes.
    `long` | `getFLOPS(MatOfInt netInputShape)`
    `Layer` | `getLayer(DictValue layerId)` Returns pointer to layer with specified id or name which the network use.
    `int` | `getLayerId(String layer)` Converts string name of the layer to the integer identifier.
    `List<String>` | `getLayerNames()`
    `int` | `getLayersCount(String layerType)` Returns count of layers of specified type.
    `void` | `getLayerTypes(List<String> layersTypes)` Returns list of types for layer used in model.
    `void` | `getMemoryConsumption(int layerId, List<MatOfInt> netInputShapes, long[] weights, long[] blobs)`
    `void` | `getMemoryConsumption(int layerId, MatOfInt netInputShape, long[] weights, long[] blobs)`
    `void` | `getMemoryConsumption(MatOfInt netInputShape, long[] weights, long[] blobs)`
    `long` | `getNativeObjAddr()`
    `Mat` | `getParam(DictValue layer)` Returns parameter blob of the layer.
    `Mat` | `getParam(DictValue layer, int numParam)` Returns parameter blob of the layer.
    `long` | `getPerfProfile(MatOfDouble timings)` Returns overall time for inference and timings (in ticks) for layers.
    `MatOfInt` | `getUnconnectedOutLayers()` Returns indexes of layers with unconnected outputs.
    `List<String>` | `getUnconnectedOutLayersNames()` Returns names of layers with unconnected outputs.
    `static Net` | `readFromModelOptimizer(String xml, String bin)` Create a network from Intel's Model Optimizer intermediate representation.
    `void` | `setHalideScheduler(String scheduler)` Compile Halide layers.
    `void` | `setInput(Mat blob)` Sets the new input value for the network
    `void` | `setInput(Mat blob, String name)` Sets the new input value for the network
    `void` | `setInput(Mat blob, String name, double scalefactor)` Sets the new input value for the network
    `void` | `setInput(Mat blob, String name, double scalefactor, Scalar mean)` Sets the new input value for the network
    `void` | `setInputsNames(List<String> inputBlobNames)` Sets outputs names of the network input pseudo layer.
    `void` | `setParam(DictValue layer, int numParam, Mat blob)` Sets the new value for the learned param of the layer.
    `void` | `setPreferableBackend(int backendId)` Ask network to use specific computation backend where it supported.
    `void` | `setPreferableTarget(int targetId)` Ask network to make computations on specific target device.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### nativeObj

          protected final long nativeObj

  - ### Constructor Detail

    - #### Net

          protected Net(long addr)

    - #### Net

          public Net()

  - ### Method Detail

    - #### getNativeObjAddr

          public long getNativeObjAddr()

    - #### __fromPtr__

          public static Net __fromPtr__(long addr)

    - #### forward

          public Mat forward(String outputName)

      Runs forward pass to compute output of layer with name `outputName`.
      Parameters:
        `outputName` - name for layer which output is needed to get
      Returns:
        blob for first output of specified layer. By default runs forward pass for the whole network.

    - #### forward

          public Mat forward()

      Runs forward pass to compute output of layer with name `outputName`.
      Returns:
        blob for first output of specified layer. By default runs forward pass for the whole network.

    - #### getParam

          public Mat getParam(DictValue layer,
                              int numParam)

      Returns parameter blob of the layer.
      Parameters:
        `layer` - name or id of the layer.
        `numParam` - index of the layer parameter in the Layer::blobs array. SEE: Layer::blobs
      Returns:
        automatically generated

    - #### getParam

          public Mat getParam(DictValue layer)

      Returns parameter blob of the layer.
      Parameters:
        `layer` - name or id of the layer. SEE: Layer::blobs
      Returns:
        automatically generated

    - #### readFromModelOptimizer

          public static Net readFromModelOptimizer(String xml,
                                                   String bin)

      Create a network from Intel's Model Optimizer intermediate representation.
      Parameters:
        `xml` - XML configuration file with network's topology.
        `bin` - Binary file with trained weights. Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine backend.
      Returns:
        automatically generated

    - #### getLayer

          public Layer getLayer(DictValue layerId)

      Returns pointer to layer with specified id or name which the network use.
      Parameters:
        `layerId` - automatically generated
      Returns:
        automatically generated

    - #### dump

          public String dump()

      Dump net to String
      Returns:
        String with structure, hyperparameters, backend, target and fusion Call method after setInput(). To see correct backend, target and fusion run after forward().

    - #### empty

          public boolean empty()

      Returns true if there are no layers in the network.
      Returns:
        automatically generated

    - #### getLayerId

          public int getLayerId(String layer)

      Converts string name of the layer to the integer identifier.
      Parameters:
        `layer` - automatically generated
      Returns:
        id of the layer, or -1 if the layer wasn't found.

    - #### getLayersCount

          public int getLayersCount(String layerType)

      Returns count of layers of specified type.
      Parameters:
        `layerType` - type.
      Returns:
        count of layers

    - #### getFLOPS

          public long getFLOPS(MatOfInt netInputShape)

    - #### getFLOPS

          public long getFLOPS(int layerId,
                               MatOfInt netInputShape)

    - #### getFLOPS

          public long getFLOPS(int layerId,
                               List<MatOfInt> netInputShapes)

    - #### getFLOPS

          public long getFLOPS(List<MatOfInt> netInputShapes)

      Computes FLOP for whole loaded model with specified input shapes.
      Parameters:
        `netInputShapes` - vector of shapes for all net inputs.
      Returns:
        computed FLOP.

    - #### getPerfProfile

          public long getPerfProfile(MatOfDouble timings)

      Returns overall time for inference and timings (in ticks) for layers. Indexes in returned vector correspond to layers ids. Some layers can be fused with others, in this case zero ticks count will be return for that skipped layers.
      Parameters:
        `timings` - vector for tick timings for all layers.
      Returns:
        overall ticks for model inference.

    - #### getLayerNames

          public List<String> getLayerNames()

    - #### getUnconnectedOutLayersNames

          public List<String> getUnconnectedOutLayersNames()

      Returns names of layers with unconnected outputs.
      Returns:
        automatically generated

    - #### getUnconnectedOutLayers

          public MatOfInt getUnconnectedOutLayers()

      Returns indexes of layers with unconnected outputs.
      Returns:
        automatically generated

    - #### connect

          public void connect(String outPin,
                              String inpPin)

      Connects output of the first layer to input of the second layer.
      Parameters:
        `outPin` - descriptor of the first layer output.
        `inpPin` - descriptor of the second layer input. Descriptors have the following template <DFN>&lt;layer_name&gt;[.input_number]</DFN>: - the first part of the template <DFN>layer_name</DFN> is string name of the added layer. If this part is empty then the network input pseudo layer will be used; - the second optional part of the template <DFN>input_number</DFN> is either number of the layer input, either label one. If this part is omitted then the first layer input will be used. SEE: setNetInputs(), Layer::inputNameToIndex(), Layer::outputNameToIndex()

    - #### dumpToFile

          public void dumpToFile(String path)

      Dump net structure, hyperparameters, backend, target and fusion to dot file
      Parameters:
        `path` - path to output file with .dot extension SEE: dump()

    - #### enableFusion

          public void enableFusion(boolean fusion)

      Enables or disables layer fusion in the network.
      Parameters:
        `fusion` - true to enable the fusion, false to disable. The fusion is enabled by default.

    - #### forward

          public void forward(List<Mat> outputBlobs,
                              String outputName)

      Runs forward pass to compute output of layer with name `outputName`.
      Parameters:
        `outputBlobs` - contains all output blobs for specified layer.
        `outputName` - name for layer which output is needed to get If `outputName` is empty, runs forward pass for the whole network.

    - #### forward

          public void forward(List<Mat> outputBlobs)

      Runs forward pass to compute output of layer with name `outputName`.
      Parameters:
        `outputBlobs` - contains all output blobs for specified layer. If `outputName` is empty, runs forward pass for the whole network.

    - #### forward

          public void forward(List<Mat> outputBlobs,
                              List<String> outBlobNames)

      Runs forward pass to compute outputs of layers listed in `outBlobNames`.
      Parameters:
        `outputBlobs` - contains blobs for first outputs of specified layers.
        `outBlobNames` - names for layers which outputs are needed to get

    - #### getLayerTypes

          public void getLayerTypes(List<String> layersTypes)

      Returns list of types for layer used in model.
      Parameters:
        `layersTypes` - output parameter for returning types.

    - #### getMemoryConsumption

          public void getMemoryConsumption(MatOfInt netInputShape,
                                           long[] weights,
                                           long[] blobs)

    - #### getMemoryConsumption

          public void getMemoryConsumption(int layerId,
                                           MatOfInt netInputShape,
                                           long[] weights,
                                           long[] blobs)

    - #### getMemoryConsumption

          public void getMemoryConsumption(int layerId,
                                           List<MatOfInt> netInputShapes,
                                           long[] weights,
                                           long[] blobs)

    - #### setHalideScheduler

          public void setHalideScheduler(String scheduler)

      Compile Halide layers.
      Parameters:
        `scheduler` - Path to YAML file with scheduling directives. SEE: setPreferableBackend Schedule layers that support Halide backend. Then compile them for specific target. For layers that not represented in scheduling file or if no manual scheduling used at all, automatic scheduling will be applied.

    - #### setInput

          public void setInput(Mat blob,
                               String name,
                               double scalefactor,
                               Scalar mean)

      Sets the new input value for the network
      Parameters:
        `blob` - A new blob. Should have CV_32F or CV_8U depth.
        `name` - A name of input layer.
        `scalefactor` - An optional normalization scale.
        `mean` - An optional mean subtraction values. SEE: connect(String, String) to know format of the descriptor. If scale or mean values are specified, a final input blob is computed as: \(input(n,c,h,w) = scalefactor \times (blob(n,c,h,w) - mean_c)\)

    - #### setInput

          public void setInput(Mat blob,
                               String name,
                               double scalefactor)

      Sets the new input value for the network
      Parameters:
        `blob` - A new blob. Should have CV_32F or CV_8U depth.
        `name` - A name of input layer.
        `scalefactor` - An optional normalization scale. SEE: connect(String, String) to know format of the descriptor. If scale or mean values are specified, a final input blob is computed as: \(input(n,c,h,w) = scalefactor \times (blob(n,c,h,w) - mean_c)\)

    - #### setInput

          public void setInput(Mat blob,
                               String name)

      Sets the new input value for the network
      Parameters:
        `blob` - A new blob. Should have CV_32F or CV_8U depth.
        `name` - A name of input layer. SEE: connect(String, String) to know format of the descriptor. If scale or mean values are specified, a final input blob is computed as: \(input(n,c,h,w) = scalefactor \times (blob(n,c,h,w) - mean_c)\)

    - #### setInput

          public void setInput(Mat blob)

      Sets the new input value for the network
      Parameters:
        `blob` - A new blob. Should have CV_32F or CV_8U depth. SEE: connect(String, String) to know format of the descriptor. If scale or mean values are specified, a final input blob is computed as: \(input(n,c,h,w) = scalefactor \times (blob(n,c,h,w) - mean_c)\)

    - #### setInputsNames

          public void setInputsNames(List<String> inputBlobNames)

      Sets outputs names of the network input pseudo layer. Each net always has special own the network input pseudo layer with id=0. This layer stores the user blobs only and don't make any computations. In fact, this layer provides the only way to pass user data into the network. As any other layer, this layer can label its outputs and this function provides an easy way to do this.
      Parameters:
        `inputBlobNames` - automatically generated

    - #### setParam

          public void setParam(DictValue layer,
                               int numParam,
                               Mat blob)

      Sets the new value for the learned param of the layer.
      Parameters:
        `layer` - name or id of the layer.
        `numParam` - index of the layer parameter in the Layer::blobs array.
        `blob` - the new value. SEE: Layer::blobs Note: If shape of the new blob differs from the previous shape, then the following forward pass may fail.

    - #### setPreferableBackend

          public void setPreferableBackend(int backendId)

      Ask network to use specific computation backend where it supported.
      Parameters:
        `backendId` - backend identifier. SEE: Backend If OpenCV is compiled with Intel's Inference Engine library, DNN_BACKEND_DEFAULT means DNN_BACKEND_INFERENCE_ENGINE. Otherwise it equals to DNN_BACKEND_OPENCV.

    - #### setPreferableTarget

          public void setPreferableTarget(int targetId)

      Ask network to make computations on specific target device.
      Parameters:
        `targetId` - target identifier. SEE: Target List of supported combinations backend / target: | | DNN_BACKEND_OPENCV | DNN_BACKEND_INFERENCE_ENGINE | DNN_BACKEND_HALIDE | |------------------------|--------------------|------------------------------|--------------------| | DNN_TARGET_CPU | + | + | + | | DNN_TARGET_OPENCL | + | + | + | | DNN_TARGET_OPENCL_FP16 | + | + | | | DNN_TARGET_MYRIAD | | + | | | DNN_TARGET_FPGA | | + | |

    - #### finalize

          protected void finalize()
                           throws Throwable

      Overrides:
        `finalize` in class `Object`
      Throws:
        `Throwable`

Generated on Wed Oct 9 2019 16:55:37 UTC / OpenCV 3.4.8