Abstract class to represent a neural network.
Derived classes provide implementation via OpenCV (on CPU, OpenCL, or OpenVino/Myriad-X), Amlogic/Vivante NPU, Hailo-8, Python, or Google Coral TPU.
Definition at line 160 of file Network.H.
|
virtual | ~Network () |
| Destructor.
|
|
void | waitBeforeDestroy () |
| If network is currently loading, wait until that is done before destroying.
|
|
bool | ready () |
| Returns true when network is ready to run (loaded and initialized)
|
|
virtual std::vector< vsi_nn_tensor_attr_t > | inputShapes ()=0 |
| Get shapes of all input tensors.
|
|
virtual std::vector< vsi_nn_tensor_attr_t > | outputShapes ()=0 |
| Get shapes of all output tensors.
|
|
std::vector< cv::Mat > | process (std::vector< cv::Mat > const &blobs, std::vector< std::string > &info) |
| Process input blobs and obtain output blobs.
|
|
virtual void | freeze (bool doit) |
| Freeze/unfreeze parameters that users should not change while running.
|
|
| Component (std::string const &instance) |
| Constructor.
|
|
virtual | ~Component () |
| Virtual destructor for safe inheritance.
|
|
template<class Comp , typename... Args> |
std::shared_ptr< Comp > | addSubComponent (std::string const &instance, Args &&...args) |
| Pseudo-constructor: construct and add another component as a subcomponent of this one.
|
|
template<class Comp > |
void | removeSubComponent (std::shared_ptr< Comp > &component) |
| Remove a sub-Component from this Component, by shared_ptr.
|
|
void | removeSubComponent (std::string const &instance, bool warnIfNotFound=true) |
| Remove a sub-Component from this Component, by instance name.
|
|
template<class Comp = jevois::Component> |
std::shared_ptr< Comp > | getSubComponent (std::string const &instance) const |
| Get a sub-component by instance name.
|
|
bool | isTopLevel () const |
| Returns true if this component is top-level, i.e., its parent is jevois::Manager.
|
|
bool | initialized () const |
| Has this component been initialized yet?
|
|
std::string const & | className () const |
| The class name of this component.
|
|
std::string const & | instanceName () const |
| The instance name of this component.
|
|
template<typename T > |
std::vector< std::string > | setParamVal (std::string const ¶mdescriptor, T const &val) |
| Set a parameter value.
|
|
template<typename T > |
void | setParamValUnique (std::string const ¶mdescriptor, T const &val) |
| Set a parameter value, simple version assuming only one parameter match.
|
|
template<typename T > |
std::vector< std::pair< std::string, T > > | getParamVal (std::string const ¶mdescriptor) const |
| Get parameter(s) value(s) by descriptor.
|
|
template<typename T > |
T | getParamValUnique (std::string const ¶mdescriptor) const |
| Get a parameter value, simple version assuming only one parameter match.
|
|
std::vector< std::string > | setParamString (std::string const ¶mdescriptor, std::string const &val) |
| Set a parameter value, by string.
|
|
void | setParamStringUnique (std::string const ¶mdescriptor, std::string const &val) |
| Set a parameter value by string, simple version assuming only one parameter match.
|
|
std::vector< std::pair< std::string, std::string > > | getParamString (std::string const ¶mdescriptor) const |
| Get a parameter value, by string.
|
|
std::string | getParamStringUnique (std::string const ¶mdescriptor) const |
| Get a parameter value by string, simple version assuming only one parameter match.
|
|
void | freezeParam (std::string const ¶mdescriptor, bool doit) |
| Freeze/unfreeze a parameter, by name, see ParameterBase::freeze()
|
|
void | freezeAllParams (bool doit) |
| Freeze all parameters.
|
|
std::string | descriptor () const |
| Get our full descriptor (including all parents) as [Instancename]:[...]:[...].
|
|
void | setParamsFromFile (std::string const &filename) |
| Set some parameters from a file.
|
|
std::istream & | setParamsFromStream (std::istream &is, std::string const &absfile) |
| Set some parameters from an open stream.
|
|
virtual void | paramInfo (std::shared_ptr< UserInterface > s, std::map< std::string, std::string > &categs, bool skipFrozen, std::string const &cname="", std::string const &pfx="") |
| Get machine-oriented descriptions of all parameters.
|
|
void | foreachParam (std::function< void(std::string const &compname, ParameterBase *p)> func, std::string const &cname="") |
| Run a function on every param we hold.
|
|
template<typename T > |
std::shared_ptr< DynamicParameter< T > > | addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ParameterCategory const &category) |
| Add a new parameter after the Component has already been constructed.
|
|
template<typename T , template< typename > class ValidValuesSpec> |
std::shared_ptr< DynamicParameter< T > > | addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ValidValuesSpec< T > const &validValuesSpec, ParameterCategory const &category) |
| Add a new parameter after the Component has already been constructed.
|
|
template<typename T > |
void | setDynamicParameterCallback (std::string const &name, std::function< void(T const &)> cb, bool callnow=true) |
| Register a callback with a previously created dynamic parameter.
|
|
void | removeDynamicParameter (std::string const &name, bool throw_if_not_found=true) |
| Remove a previously added dynamic parameter.
|
|
void | setPath (std::string const &path) |
| Assign a filesystem path to this component.
|
|
std::filesystem::path | absolutePath (std::filesystem::path const &path="") |
| If given path is relative (not starting with /), prepend the Component path to it.
|
|
virtual | ~ParameterRegistry () |
| Virtual destructor for safe inheritance.
|
|
|
(Note that these are not member symbols.)
|
| JEVOIS_DECLARE_PARAMETER (comment, std::string, "Optional comment about the network", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (url, std::string, "Optional URL for the network", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (dataroot, std::string, "Root directory to use when config or model parameters " "are relative paths.", JEVOIS_SHARE_PATH, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (config, std::string, "Path to a text file that contains network configuration. " "Can have extension .prototxt (Caffe), .pbtxt (TensorFlow), or .cfg (Darknet). " "If path is relative, it will be prefixed by dataroot.", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (model, std::string, "Path to a binary file of model contains trained weights. " "Can have extension .caffemodel (Caffe), .pb (TensorFlow), .t7 or .net (Torch), " ".tflite (TensorFlow Lite), or .weights (Darknet). If path is relative, it will be " "prefixed by dataroot.", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (Target,(CPU)(OpenCL)(OpenCL_FP16)(Myriad)(NPU)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER (target, Target, "OpenCV compute target to use. Changes will take effect " "next time you load a different model.", Target::CPU, Target_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (Backend,(OpenCV)(InferenceEngine)(TimVX)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER (backend, Backend, "OpenCV compute backend to use. Default will use the inference " "engine if available, otherwise OpenCV (note that inference engine only works on Intel " "processors or MyriadX hardware, thus you should normally select OpenCV when running " "on JeVois-Pro Platform, unless you want to use an optional MyriadX accelerator). " "Changes will take effect next time you load a model.", JEVOIS_BACKEND_DEFAULT, Backend_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (intensors, std::string, "Specification of input tensors", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (extraintensors, std::string, "Specification of extra fixed input tensors that will be " "added after the regular intensors. Format is: " "<type>:<shape>:val1 val2 ... valN, <type>:<shape>:val1 ... valN. For example, for " "URetinex-Net: 32F:1x1x1:3.0", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (outtensors, std::string, "Specification of output tensors", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (outreshape, std::string, "Specification of reshaped output tensors " "sometimes useful to re-interpret tensors to what a post-processor expects for " "example, TPU YoloV4-Int-VOC outputs 5D tensors 32F:1x52x52x3x85, 32F:1x26x26x3x85, " "32F:1x13x13x3x85 but the YOLO post-processor expects 4D, which would be specified here " "as 32F:1x52x52x255, 32F:1x26x26x255, 32F:1x13x13x255. Note that this only changes " "the description of dimensions, but does not move any pixel data around (e.g., cannot " "convert from NCHW to NHWC, convert data types, etc). Use sparingly and with caution.", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (dequant, bool, "Dequantize output tensors to float32 from their native quantized type", true, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (tpunum, size_t, "Coral EdgeTPU number to use to run this model, typically 0, or can be " "1 when using a dual-TPU add-on board, or more when using additional TPUs connected " "to USB ports", 0, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (spunum, size_t, "Hailo8 device number to use to run this model, typically 0 unless " "several Hailo8 accelerators are connected to the system", 0, ParamCateg) |
| Parameter.
|
|