Skip to content
phaase-hhi edited this page Dec 9, 2022 · 11 revisions
Installation-Guide Usage Compression-Performance
Installation of NNCodec Using NNCodec Compression performance

NNCodec: Fraunhofer Neural Network Codec

NNCodec is an efficient implementation of NNC (Neural Network Coding / ISO/IEC 15938-17 or MPEG-7 part 17) providing an encoder and decoder with the main compression tools.

NNC, or Neural Network Coding, is the first international standard on compression of neural networks.

The graph below shows model performances over compression ratios for selected state-of-the-art model architectures and working points (each 'x' marks a working point for another qp value, each curve shows compression results for different tool settings).

Overview

In August 2022 ISO/IEC Moving Picture Experts Group (MPEG) has finalized a novel standard on compression of neural networks for multimedia content description and analysis called Neural Network Coding (NNC). NNC is the first international standard on compression of neural networks and has been released by ISO/IEC as MPEG-7 Part 17 (ISO/IEC 15938-17). The new standard usually achieves compression ratios of about 10% on average with respect to the uncompressed size, without degradation of the model performance. In addition, NNC supports common machine learning frameworks as for example TensorFlow:registered: or PyTorch:registered:.

The Fraunhofer Neural Network Encoder/Decoder (NNCodec) development was initiated to provide a publicly available, fast and efficient NNC encoder and decoder implementation providing the core compression tools. The NNCodec software is designed in order to provide an easy-to-use interface and allow seamless integration in user-customised python-based machine learning frameworks.

Bitstreams encoded with NNCodecs encoder implementation can be decoded by any NNC standard compliant decoder, in particular the decoder provided within NNCodec.

Features

  • Standard compliant implementation of the core compression technologies including, e.g., DeepCABAC
  • Easy-to-use user interface
  • Built-in support for common frameworks (e.g. TensorFlow:registered: and PyTorch:registered: )
  • Built-in ImageNet-support for data driven compression tools
  • Extensibility of data driven compression tools for arbitrary datasets

Contributing

Everyone is invited to contribute. To do so:

  • Fork the current-most state of the master branch
  • Implement features or changes
  • Add your name to AUTHORS.md
  • Create a pull-request to the upstream repository

Report issues and bugs

Issues, bugs and suggestions for improvements can be reported at nncodec@hhi.fraunhofer.de. We really appreciate your input in order to improve the software.

References and Publications

  • [1] H. Kirchhoffer, et al. "Overview of the Neural Network Compression and Representation (NNR) Standard", IEEE Transactions on Circuits and Systems for Video Technology, pp. 1-14, July 2021, doi: 10.1109/TCSVT.2021.3095970, Open Access
  • [2] P. Haase et al., "Encoder Optimizations For The NNR Standard On Neural Network Compression", 2021 IEEE International Conference on Image Processing (ICIP), 2021, pp. 3522-3526, doi: 10.1109/ICIP42928.2021.9506655.
  • [3] K. Müller et al., "Ein internationaler KI-Standard zur Kompression Neuronaler Netze", FKT- Fachzeitschrift für Fernsehen, Film und Elektronische Medien, pp. 33-36, September 2021
  • [4] S. Wiedemann et al., "DeepCABAC: A universal compression algorithm for deep neural networks", in IEEE Journal of Selected Topics in Signal Processing, doi: 10.1109/JSTSP.2020.2969554.