NVIDIA / DALI

A GPU-accelerated library containing highly optimized building blocks and an execution engine for data processing to accelerate deep learning training and inference applications.
https://docs.nvidia.com/deeplearning/dali/user-guide/docs/index.html
Apache License 2.0
4.98k stars 609 forks source link

Enhancement: Image quantization operator? #2429

Open cceyda opened 3 years ago

cceyda commented 3 years ago

I'm looking to do a lot of image quantization, and was/is searching for fast alternatives to K-means etc. Then I saw that there is a cuda implementation for NeuQuant. Although it is from 2011.

Paper: CuNeuQuant: A CUDA Implementation of the NeuQuant Image Quantization Algorithm Code: https://code.google.com/p/dali-neuquant/ License: Limited GNU Public License (LGPL).

Well... the code coincidentally? had the name dali in it which got me thinking if it would be possible to add this as a plugin.

I don't know enough C++ to do this but I leave this issue as a suggestion & contributions welcome.

Suggestions on newer better fast color quantization methods would be appreciated too

JanuszL commented 3 years ago

Sounds interesting but have you checked what is missing in DALI to enable it? Can you tell how it relates to DALI or do you think that having all GPU accelerated vision algorithms under the DALI umbrella is just a good idea?

cceyda commented 3 years ago

I don't know what is missing in that library since there isn't much documentation, and the code is pretty old 2011 (algorithm even older 1994) it is likely some of the cuda.h stuff has changed. there is a github port of the code

I thought image color quantization may fit in DALI as it is an image processing operation. I use DALI to decode my jpeg images, and thought having something like ops.color_quantize would be nice. Since there is code If anyone is willing to make it into a custom operator. I would be willing to test it out but don't have the c++ know-how to make the custom operator plugin myself. (maybe with some more examples 🤔 ) (I'm currently using a python port of NeuQuant) I wouldn't say all GPU accelerated vision algorithms should be in DALI, as that is too general.