JeVois
1.22
JeVois Smart Embedded Machine Vision Toolkit
|
|
#include <jevois/DNN/NetworkNPU.H>
Wrapper around a DNN neural network running on Amlogic A311D NPU accelerator (Verisilicon)
Definition at line 34 of file NetworkNPU.H.
Public Member Functions | |
virtual | ~NetworkNPU () |
Destructor. | |
void | freeze (bool doit) override |
Freeze/unfreeze parameters that users should not change while running. | |
virtual std::vector< vsi_nn_tensor_attr_t > | inputShapes () override |
Get shapes of all input tensors. | |
virtual std::vector< vsi_nn_tensor_attr_t > | outputShapes () override |
Get shapes of all output tensors. | |
Public Member Functions inherited from jevois::dnn::Network | |
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) | |
std::vector< cv::Mat > | process (std::vector< cv::Mat > const &blobs, std::vector< std::string > &info) |
Process input blobs and obtain output blobs. | |
Public Member Functions inherited from jevois::Component | |
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. | |
Public Member Functions inherited from jevois::ParameterRegistry | |
virtual | ~ParameterRegistry () |
Virtual destructor for safe inheritance. | |
Protected Member Functions | |
void | load () override |
Load from disk. | |
std::vector< cv::Mat > | doprocess (std::vector< cv::Mat > const &blobs, std::vector< std::string > &info) override |
Process input blobs and obtain output blobs. | |
Protected Member Functions inherited from jevois::dnn::Network | |
void | onParamChange (network::outtransform const ¶m, std::string const &val) override |
Protected Member Functions inherited from jevois::Component | |
virtual void | preInit () |
Called before all sub-Components are init()ed. | |
virtual void | postInit () |
Called after all sub-Components are init()ed. | |
virtual void | preUninit () |
Called before all sub-Components are uninit()ed. | |
virtual void | postUninit () |
Called after all sub-Components are uninit()ed. | |
Protected Member Functions inherited from jevois::ParameterRegistry | |
void | addParameter (ParameterBase *const param) |
The Parameter class uses this method to register itself on construction with its owning Component. | |
void | removeParameter (ParameterBase *const param) |
The Parameter class uses this method to un-register itself on destruction with its owning Component. | |
void | callbackInitCall () |
For all parameters that have a callback which has never been called, call it with the default param value. | |
Related Symbols | |
(Note that these are not member symbols.) | |
JEVOIS_DECLARE_PARAMETER (library, std::string, "Optional path to a compiled .so library that can load and " "instantiate a NPU model. If a library is provided, then intensors and outtensors " "can be left empty, otherwise they have to describe exactly the inputs and outputs " "of the NPU model. This library is obtained along with the NPU .nb model when " "converting for NPU using the KSNN convert tool. If path is relative, it will be " "prefixed by dataroot.", "", ParamCateg) | |
Parameter. | |
JEVOIS_DECLARE_PARAMETER (verifygraph, bool, "Verify NPU graph after loading it", true, ParamCateg) | |
Parameter. | |
JEVOIS_DECLARE_PARAMETER (ovxver, std::string, "ovxlib version to use with NPU network, or leave blank " "to use latest version", "", boost::regex("^$|^[0-9]+\\.[0-9]+\\.[0-9]+$"), ParamCateg) | |
Parameter. | |
Related Symbols inherited from jevois::dnn::Network | |
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 (outtransform, std::string, "Specification of a sequence of operations " "(reshape, transpose, split, merge, etc) to be applied to the output " "tensors. Useful to match a particular network's outputs to the " "tensor shapes expected by a particular post-processor. The sequence of " "operations is separated by semicolons, and applied from left to right. " "Operations specified here are applied after any de-quantization.", "", 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. | |
|
virtual |
Destructor.
Definition at line 180 of file NetworkNPU.C.
|
overrideprotectedvirtual |
Process input blobs and obtain output blobs.
Implements jevois::dnn::Network.
Definition at line 338 of file NetworkNPU.C.
References jevois::async(), jevois::dnn::attrmat(), jevois::dnn::attrmatch(), jevois::dnn::attrstr(), jevois::joinall(), LFATAL, jevois::dnn::shapestr(), jevois::TimerOne::start(), jevois::TimerOne::stop(), and jevois::warnAndRethrowException().
|
overridevirtual |
Freeze/unfreeze parameters that users should not change while running.
Reimplemented from jevois::dnn::Network.
Definition at line 190 of file NetworkNPU.C.
References jevois::dnn::Network::freeze().
|
overridevirtual |
Get shapes of all input tensors.
Implements jevois::dnn::Network.
Definition at line 99 of file NetworkNPU.C.
References LFATAL, jevois::dnn::parseTensorSpecs(), and jevois::dnn::Network::ready().
|
overrideprotectedvirtual |
Load from disk.
Implements jevois::dnn::Network.
Definition at line 202 of file NetworkNPU.C.
References jevois::absolutePath(), jevois::dnn::attrstr(), LFATAL, LINFO, NEW_VXNODE, jevois::dnn::parseTensorSpecs(), and jevois::split().
|
overridevirtual |
Get shapes of all output tensors.
Implements jevois::dnn::Network.
Definition at line 135 of file NetworkNPU.C.
References LFATAL, and jevois::dnn::parseTensorSpecs().
|
related |
Parameter.
|
related |
Parameter.
|
related |
Parameter.