Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于存储大小的问题 #1

Open
whwh747 opened this issue Mar 27, 2024 · 18 comments
Open

关于存储大小的问题 #1

whwh747 opened this issue Mar 27, 2024 · 18 comments

Comments

@whwh747
Copy link

whwh747 commented Mar 27, 2024

您好,感谢您出色的工作。我在A6000上初步运行了您的代码,发现truck bitstream=0.004 30000次迭代之后point_cloud.ply的大小是153.36MB,和论文Table D中的9.26MB相差较大,请问是我弄错什么了吗?希望您不吝赐教!

@YihangChen-ee
Copy link
Owner

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件)
point_cloud.ply是原始的模型参数,并不是编码后的文件。
训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。
你应该查看./bitstreams文件夹的大小。

@yang1hu
Copy link

yang1hu commented Apr 17, 2024

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

你好,我也有这个疑问,你的意思是说我们的项目是在根据得到的ply文件,然后压缩获取算法变成一个./bitstreams文件夹中的文件吗,这个文件夹的信息,是压缩点的信息,并不是把点的信息变少,对吗

@YihangChen-ee
Copy link
Owner

YihangChen-ee commented Apr 17, 2024

你好,点的位数没变,但是其信息熵通过我们的hash feature的预测降低了。信息熵降低后才可以利用算术编码实现编码压缩。

@yang1hu
Copy link

yang1hu commented Apr 17, 2024

你好,点的位数没变,但是其信息熵通过我们的hash feature的预测降低了。信息熵降低后才可以利用算术编码实现编码压缩。

好的,谢谢

@Ataraxiaecho
Copy link

为什么out.log里的anchor大小比bitstream里的anchor.pkl小了一倍
image
image

@Ataraxiaecho
Copy link

你好,点的位数没变,但是其信息熵通过我们的hash feature的预测降低了。信息熵降低后才可以利用算术编码实现编码压缩。

你好。方便解答一下我上面提的关于anchor文件大小的问题吗?谢谢

@YihangChen-ee
Copy link
Owner

你好,我们的工作对anchor采用16位的量化方式,那么在计算anchor的size的时候每个参数的size是16bit。在实际存储时为了方便,是16位量化后直接用torch保存的,这时候默认的保存格式是float32,但是实际上已经16位量化过了。因此出现了两倍的情况。你可以修改保存相关的代码,让pytorch保存为float16,这时候应该就是大小一致的。

祝好

@Ataraxiaecho
Copy link

你好,我们的工作对anchor采用16位的量化方式,那么在计算anchor的size的时候每个参数的size是16bit。在实际存储时为了方便,是16位量化后直接用torch保存的,这时候默认的保存格式是float32,但是实际上已经16位量化过了。因此出现了两倍的情况。你可以修改保存相关的代码,让pytorch保存为float16,这时候应该就是大小一致的。

祝好

好的。谢谢哥们。

@TSlus
Copy link

TSlus commented May 30, 2024

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

你好,直接删去point_cloud.ply后,在测试的时候,会报错找不到point_cloud.ply文件,请问该怎么解决这个错误呢?

@YihangChen-ee
Copy link
Owner

YihangChen-ee commented May 30, 2024

你好,目前的代码逻辑是从bitstream中解码得到point_cloud.ply,然后模型权重仍然读取此point_cloud.ply来测试(相当于point_cloud.ply是一个桥梁)。因此如果你删去了point_cloud.ply,你需要重新跑解码函数从bitstream中重新解码得到point_cloud.ply后再进行测试。

或者你可以修改代码,让模型直接从bitstream的解码结果里读取权重,这样就不需要point_cloud.ply这个中间文件了。

BTW,你应该把删去point_cloud.ply的操作放在编码后且解码前的位置,而不是放在解码后的位置,因为point_cloud.ply是解码结果。

祝好

@TSlus
Copy link

TSlus commented May 30, 2024

你好,目前的代码逻辑是从bitstream中解码得到point_cloud.ply,然后模型权重仍然读取此point_cloud.ply来测试(相当于point_cloud.ply是一个桥梁)。因此如果你删去了point_cloud.ply,你需要重新跑解码函数从bitstream中重新解码得到point_cloud.ply后再进行测试。

或者你可以修改代码,让模型直接从bitstream的解码结果里读取权重,这样就不需要point_cloud.ply这个中间文件了。

BTW,你应该把删去point_cloud.ply的操作放在编码后且解码前的位置,而不是放在解码后的位置,因为point_cloud.ply是解码结果。

祝好

谢谢你的解答,按照你上面的逻辑应该可以。但是我发现在保存point_cloud.ply文件的时候(gaussian_model.py line 634 save_ply函数),好像是直接从优化变量中读取,并没有涉及从bitstream解码得到,这是为什么呢?

@YihangChen-ee
Copy link
Owner

YihangChen-ee commented May 30, 2024

你好,编码和解码函数分别在gaussian_model.py的第1074和1228行,他们在train.py里在最后一个训练iteration的时候被调用了(train.py的第299-308行)。此时你所提到的save_ply函数里所save的point_cloud.ply其实已经是解码过后的了。

在conduct_decoding函数中有将原始的变量替换为解码后的变量的过程(1339行 -1366行)。

@TSlus
Copy link

TSlus commented May 30, 2024

你好,编码和解码函数分别在gaussian_model.py的第1074和1228行,他们在train.py里在最后一个训练iteration的时候被调用了(train.py的第299-308行)。此时你所提到的save_ply函数里所save的point_cloud.ply其实已经是解码过后的了。

在conduct_decoding函数中有将原始的变量替换为解码后的变量的过程(1339行 -1366行)。

明白了,谢谢你。

@Kkun12345
Copy link

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

您好,请问存储大小是看bitstreams文件夹中所有文件的大小,还是只需要看anchor.pkl文件的大小呢。我在A100上跑了drjohnson数据集,单看anchor.pkl文件是4.87MB,整个bitstreams文件夹的大小是17.9MB,和论文中的7.67都相差较多。怎么计算存储大小才是正确的呢? 感谢您的耐心解答

@YihangChen-ee
Copy link
Owner

YihangChen-ee commented Oct 17, 2024

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

您好,请问存储大小是看bitstreams文件夹中所有文件的大小,还是只需要看anchor.pkl文件的大小呢。我在A100上跑了drjohnson数据集,单看anchor.pkl文件是4.87MB,整个bitstreams文件夹的大小是17.9MB,和论文中的7.67都相差较多。怎么计算存储大小才是正确的呢? 感谢您的耐心解答

你好,我们在跑的时候没有遇到这个问题。你的问题可能是训练时的随机性所致,建议你可以尝试使用最新的代码再重新跑一遍。另外,关于文件的大小建议参考我们的output.log文档,里面的数值更准确。计算size的时候,建议使用os.path.getsize逐个文件计算大小后加和。

@Kkun12345
Copy link

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

您好,请问存储大小是看bitstreams文件夹中所有文件的大小,还是只需要看anchor.pkl文件的大小呢。我在A100上跑了drjohnson数据集,单看anchor.pkl文件是4.87MB,整个bitstreams文件夹的大小是17.9MB,和论文中的7.67都相差较多。怎么计算存储大小才是正确的呢? 感谢您的耐心解答

你好,我们在跑的时候没有遇到这个问题。你的问题可能是训练时的随机性所致,建议你可以尝试使用最新的代码再重新跑一遍。另外,关于文件的大小建议参考我们的output.log文档,里面的数值更准确。

捕获
是看这个total的大小吗,这里的大小也是将近16MB,和整个文件夹大小差不多的

@YihangChen-ee
Copy link
Owner

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

您好,请问存储大小是看bitstreams文件夹中所有文件的大小,还是只需要看anchor.pkl文件的大小呢。我在A100上跑了drjohnson数据集,单看anchor.pkl文件是4.87MB,整个bitstreams文件夹的大小是17.9MB,和论文中的7.67都相差较多。怎么计算存储大小才是正确的呢? 感谢您的耐心解答

你好,我们在跑的时候没有遇到这个问题。你的问题可能是训练时的随机性所致,建议你可以尝试使用最新的代码再重新跑一遍。另外,关于文件的大小建议参考我们的output.log文档,里面的数值更准确。

捕获 是看这个total的大小吗,这里的大小也是将近16MB,和整个文件夹大小差不多的

对的,可能是训练的随机性所致,你可以尝试着重新跑一下。

@Kkun12345
Copy link

模型参数需要进行编码后再存储,编码后的文件在./bitstreams文件夹中。(也就是那些.b文件) point_cloud.ply是原始的模型参数,并不是编码后的文件。 训练完后,你可以删去point_cloud.ply,因为模型参数都已经被编码存储在./bitstreams文件夹中了。 你应该查看./bitstreams文件夹的大小。

您好,请问存储大小是看bitstreams文件夹中所有文件的大小,还是只需要看anchor.pkl文件的大小呢。我在A100上跑了drjohnson数据集,单看anchor.pkl文件是4.87MB,整个bitstreams文件夹的大小是17.9MB,和论文中的7.67都相差较多。怎么计算存储大小才是正确的呢? 感谢您的耐心解答

你好,我们在跑的时候没有遇到这个问题。你的问题可能是训练时的随机性所致,建议你可以尝试使用最新的代码再重新跑一遍。另外,关于文件的大小建议参考我们的output.log文档,里面的数值更准确。

捕获 是看这个total的大小吗,这里的大小也是将近16MB,和整个文件夹大小差不多的

对的,可能是训练的随机性所致,你可以尝试着重新跑一下。

好的,非常感谢您耐心解答。我重新跑一下试试,也可能跟显卡不同有关系

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants