Skip to content

fraunhoferhhi/nncodec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4ed6e78 · Jan 15, 2024

History

27 Commits
Nov 17, 2022
Jul 17, 2023
Jan 15, 2024
Jul 17, 2023
Jul 17, 2023
Nov 17, 2022
Nov 17, 2022
Jul 17, 2023
Jan 15, 2024
Nov 17, 2022
Nov 17, 2022
Nov 14, 2023
Jan 24, 2023
Jan 15, 2024
Nov 14, 2023
Jan 15, 2024

Repository files navigation

Fraunhofer Neural Network Encoder/Decoder (NNCodec)

The Fraunhofer Neural Network Encoder/Decoder Software (NNCodec) is an efficient implementation of NNC (Neural Network Coding / ISO/IEC 15938-17 or MPEG-7 part 17), which is the first international standard on compression of neural networks. NNCodec provides an encoder and decoder with the following main 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 and PyTorch)
  • Built-in ImageNet-support for data driven compression tools
  • Extensibility of data driven compression tools for arbitrary datasets

Highlights

ICML 2023 Neural Compression Workshop

Our paper titled "NNCodec: An Open Source Software Implementation of the Neural Network Coding ISO/IEC Standard" was awarded a Spotlight Paper at the ICML 2023 Neural Compression Workshop.

TL;DR - The paper presents NNCodec, analyses its coding tools with respect to the principles of information theory and gives comparative results for a broad range of neural network architectures.

The code for reproducing the experimental results of the paper and a software demo are available here:

Conference Conference

Information

Refer to the Wiki-Page for more information:

Installation

The software provides python packages which can be installed using pip. However, core technologies are implemented using C++, which requires a C++ compiler for the installation process.

The software has been tested on different target platforms (Windows, Linux and MacOS).

Requirements

  • python >= 3.6 (recommended versions 3.6, 3.7 and 3.8) with working pip
  • Windows: Microsoft Visual Studio 2015 Update 3 or later

Package installation

From the root of the cloned repository, issue

pip install wheel
pip install -r requirements.txt
pip install .

and for CUDA11 support

pip install wheel
pip install -r requirements_cu11.txt
pip install .

for installation.

Information: On Linux/Mac the scripts create_env.sh and create_env_cu11.sh (for Cuda 11 support) set up a virtual python environment "env" and install all required packages and the software itself, automatically. For activating this environment, issue:

source env/bin/activate

Note: For further information on how to set up a virtual python environment (also on Windows) refer to https://docs.python.org/3/library/venv.html .

When successfully installed, the software outputs the line : "Successfully installed NNC-0.3.1"

Importing the main module

After installation the software can be used by importing the main python module 'nnc':

import nnc

References and Publications

If you use NNCodec in your work, please cite:

@inproceedings{becking2023nncodec,
title={{NNC}odec: An Open Source Software Implementation of the Neural Network Coding {ISO}/{IEC} Standard},
author={Daniel Becking and Paul Haase and Heiner Kirchhoffer and Karsten M{\"u}ller and Wojciech Samek and Detlev Marpe},
booktitle={ICML 2023 Workshop Neural Compression: From Information Theory to Applications},
year={2023},
url={https://openreview.net/forum?id=5VgMDKUgX0}
}

Publications

  • 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
  • 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.
  • 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
  • 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.

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

License

Please see LICENSE.txt file for the terms of the use of the contents of this repository.

For more information and bug reports, please contact: nncodec@hhi.fraunhofer.de

Copyright (c) 2019-2023, Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. & The NNCodec Authors.

All rights reserved.