Neural Image Compressor

This idea is part of the A Dollar Worth of Ideas series, with potential open source, research or data science projects or contributions for people to pursue. I would be interested in mentoring some of them. Just contact me for details.

As I'm teaching a seminar on neural networks architectures, I'm going through some of my homework programs from the first neural network class I took 25 years ago. In one of the assignments I programmed an autoencoder and try to use it to compress an image. That didn't work very well but we now have a much better tech stack for this task.

The idea would be to use a JavaScript deep learning framework (such as TensorFlow.js), split an image into tiles, train a single autoencoder to produce codes for each tile (or use a convolutional autoencoder), then compress the image as the decoder side of the autoencoder plus the codes for each tile. This technique trades transfer size with decoding time.

Such a technique address two possible use cases:

  • Have a Very Large Image, such as a satellite high definition tile and compress it using this technique; or,
  • Have a large collection of images and compress it with this technique but with a single autoencoder such as the decoding network can be sent to the browser only once.

Both uses improve over state-of-the-art in terms of amount of data sent down the wire.


Some work on the topic done by emptyshore: https://github.com/mateusz/ml_compression