3dpcc / DeepPCC

deep learning
2 stars 0 forks source link

Question about entropy coding #2

Open net-F opened 7 months ago

net-F commented 7 months ago

Amazing work !

May I ask that did you use compressai to implement the Hyper Prior and Autoregressive entropy model, as well as corresponding coding/compressing ?

3dpcc commented 7 months ago

Thank you for your question!

Instead of using the Compressai library, we replicated Hyperprior and Autoregressive designs for 3D point cloud compression with MinkowskiEngine, where most 3D Convolution is replaced by Sparse Convolution and Mask Sparse Convolution. So, the framework does not use Compressai.

net-F commented 7 months ago

Thank you for your answer!

What about the entropy coding ? Did you reuse the entropy coding of Compressai library or torchac library or implement it by yourself ?

net-F commented 7 months ago

Is there a significant difference in performance between using Gaussian distribution and using Laplace distribution ?

3dpcc commented 7 months ago

We use torchac library to coding the latent feature value. The difference in performance between Gaussian distribution and Laplace distribution is small. I feel that using Laplace distribution is more convergent in entropymodel training.

net-F commented 7 months ago

Thanks for your answer!

Is there a significant difference in performance between using and not using autoregressive models ? Does main difference exist in low rates or whole rd curve?

net-F commented 7 months ago

I notice that your learning rate will quickly decay to 1e-5 at first ten epochs, and the traning will be at 1e-5 in most epochs. However, in my own toy implementation the loss decreasing is at relatively high learning rate training, and need much more epochs to achieve a normal performance. How did you get a such good performance in such few epochs and low learning rates.

3dpcc commented 7 months ago

Autoregressive will bring a BD-Rate Gain of 10% compared with only using hyperprior model. But the time complexity is very high. Therefore, there is a trade-off between performance and complexity.

Our training set is close to 10,000 sequences one epoch, so we set the learning rate drops every two epoch. When network training, we will also watch the change of loss, and also adjust the learning rate in a certain epoch to continue training.