[Lava Deep Learning v0.5.0](https://github.com/lava-nc/lava-dl) Release Notes
November 9, 2023
What's Changed
* Ensure clamping of delay values during network export and import by bamsumit in https://github.com/lava-nc/lava-dl/pull/215
* Bump tornado from 6.3.2 to 6.3.3 by dependabot in https://github.com/lava-nc/lava-dl/pull/228
* Bump cryptography from 41.0.2 to 41.0.3 by dependabot in https://github.com/lava-nc/lava-dl/pull/229
* Affine hdf5 export (221) by ahenkes1 in https://github.com/lava-nc/lava-dl/pull/222
* Added XOR-Regression tutorial. by ahenkes1 in https://github.com/lava-nc/lava-dl/pull/227
* Spikemoid pr by Michaeljurado42 in https://github.com/lava-nc/lava-dl/pull/231
* Bump gitpython from 3.1.32 to 3.1.34 by dependabot in https://github.com/lava-nc/lava-dl/pull/232
* Bump gitpython from 3.1.34 to 3.1.35 by dependabot in https://github.com/lava-nc/lava-dl/pull/234
* Bump cryptography from 41.0.3 to 41.0.4 by dependabot in https://github.com/lava-nc/lava-dl/pull/240
* Device parameter for Sigma Dendrite by bamsumit in https://github.com/lava-nc/lava-dl/pull/241
* Sparsity netx pr by Michaeljurado42 in https://github.com/lava-nc/lava-dl/pull/238
* Bump urllib3 from 1.26.16 to 1.26.17 by dependabot in https://github.com/lava-nc/lava-dl/pull/245
* Bump pillow from 9.5.0 to 10.0.1 by dependabot in https://github.com/lava-nc/lava-dl/pull/246
* Update pillow version in pyproject.toml by PhilippPlank in https://github.com/lava-nc/lava-dl/pull/247
* Set user defined spike_exp level globally when creating netx network by bamsumit in https://github.com/lava-nc/lava-dl/pull/249
* Bump gitpython from 3.1.35 to 3.1.37 by dependabot in https://github.com/lava-nc/lava-dl/pull/251
* Dev/feature yolo by bamsumit in https://github.com/lava-nc/lava-dl/pull/243
* Bump torch requirements by bamsumit in https://github.com/lava-nc/lava-dl/pull/250
* Updated readme by bamsumit in https://github.com/lava-nc/lava-dl/pull/254
* Reduce the file size of yolo notebook using mp4 export by bamsumit in https://github.com/lava-nc/lava-dl/pull/256
* Bump urllib3 from 2.0.6 to 2.0.7 by dependabot in https://github.com/lava-nc/lava-dl/pull/257
* YOLO-KP inference by bamsumit in https://github.com/lava-nc/lava-dl/pull/262
* Yolo kp part II by bamsumit in https://github.com/lava-nc/lava-dl/pull/263
* Fix pypi publish in cd.yml by mgkwill in https://github.com/lava-nc/lava-dl/pull/264
New Features and Improvements
- Lava-dl SLAYER now has extended support for training and inference of video object detection networks and the associated pre and post processing utilities used for object detection. The object detection module is available as `lava.lib.dl.slayer.obd`. The modules are described below:
| Module | Description |
|-|-|
|`obd.yolo_base` | the foundational model for YOLO object detection training which can be used to build a variety of YOLO models |
|`obd.models` | selected pre-trained YOLO SDNN models which can be fine-tuned for user-specific applications |
|`obd.dataset` | object detection dataset library (will be progressively extended) |
|`obd.bbox.metrics` | modules to evaluate object detection models |
|`obd.{bbox, dataset}.utils`| utilities to manipulate bounding boxes and dataset processing including frame visualization and video export |
Extensive tutorials for
- [YOLO SDNN training for video object detection](https://github.com/lava-nc/lava-dl/tree/main/tutorials/lava/lib/dl/slayer/tiny_yolo_sdnn),
- [YOLO SDNN inference on GPU](https://github.com/lava-nc/lava-dl/blob/main/tutorials/lava/lib/dl/slayer/tiny_yolo_sdnn/inference.ipynb), and
- [YOLO SDNN inference on Lava and Loihi](https://github.com/lava-nc/lava-dl/blob/main/tutorials/lava/lib/dl/netx/yolo_kp/run.ipynb)
are also available.
In addition, the lava-dl SLAYER tutorials now include [XOR regression tutorial](https://github.com/lava-nc/lava-dl/blob/main/tutorials/lava/lib/dl/slayer/xor_regression/xor_regression.ipynb) as a basic example to get started with lava-dl training.
Finally, lava-dl SLAYER now supports SpikeMoid loss, the official implementation of the spike-based loss introduced in
> Jurado et. al., [_Spikemoid: Updated Spike-based Loss Methods for Classification._](https://ieeexplore.ieee.org/document/10191787)
which enables more advanced tuning of SNNs for classification.
- Lava-dl NetX now supports users to configure inference of fully connected layers using sparse synapse instead of the default dense synapse. This allows the network to leverage the compression offered by sparse synapse if the fully connected weights are sparse enough. It is as simple as setting `sparse_fc_layer=True` when initializing a `netx.hdf5.Network`. `netx.hdf5.Network` also supports global control of spike exponent (the fraction portion of spike message) by setting `spike_exp` keyword. This allows users to control the network behavior in a more fine-grained manner and potentially avoid data overflow on Loihi hardware.
In addition, lava-dl NetX now includes sequential modules `netx.modules`. These modules allow the creation of PyTorch style callable constructs whose behavior is described in the `forward` function. In addition, these sequential modules also allow the execution of non-critical, but expensive management between calls in a parallel thread so that the execution flow is not blocked.
`netx.modules.Quantize` and `netx.modules.Dequantize` are now pre-built to allow for consistent quantization and dequantization to/from the fixed precision representation in the NetX network. Their usage can be seen in the [YOLO SDNN inference on Lava and Loihi](https://github.com/lava-nc/lava-dl/blob/main/tutorials/lava/lib/dl/netx/yolo_kp/run.ipynb) tutorial.
Bug Fixes and Other Changes
- Lava-dl SLAYER is now Torch 2.0 compatible allowing our users to use advanced Torch 2.0+ features.
- Fixes have been included that enable hdf5 export of affine block and proper handling of out-of-bound delays during hdf5 export in lava-dl SLAYER.
Breaking Changes
- No breaking changes in this release.
Known Issues
- No known issues in this release.
New Contributors
* ahenkes1 made their first contribution in https://github.com/lava-nc/lava-dl/pull/222
**Full Changelog**: https://github.com/lava-nc/lava-dl/compare/v0.4.0...v0.5.0