I am working on getting the text2pointcloud.ipynb example code running in Blender 3.4's built-in Python environment (Windows 11, Python 3.10.8 (main, Oct 18 2022, 21:01:35) [MSC v.1928 64 bit (AMD64)] on win32, numpy 1.24.1, torch 1.13.1+cpu)
In doing so, I have encountered the error below when producing a sample from the model:
creating base model...
MODEL_CONFIGS[base_name] dict{'cond_drop_prob': 0.1, 'heads': 8, 'init_scale': 0.25, 'input_channels': 6, 'layers': 12, 'n_ctx': 1024, 'name': 'CLIPImagePointDiffusionTransformer', 'output_channels': 12, 'time_token_cond': True, 'token_cond': True, 'width': 512, 'cache_dir': 'C:\Users\MyUser\Blender-Project'}
creating upsample model...
downloading base checkpoint...
downloading upsampler checkpoint...
creating base model...
creating upsample model...
downloading base checkpoint...
downloading upsampler checkpoint...
Producing a sample from the model...
0it [00:01, ?it/s]
Error: Python: Traceback (most recent call last):
File "C:\Users\MyUser\Blender-Project\pgu.blend\pgu.py", line 72, in
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\tqdm-4.64.1-py3.10.egg\tqdm\std.py", line 1195, in iter
for obj in iterable:
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\sampler.py", line 163, in sample_batch_progressive
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\k_diffusion.py", line 181, in karras_sample_progressive
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\torch-1.13.1-py3.10-win-amd64.egg\torch\autograd\grad_mode.py", line 43, in generator_context
response = gen.send(None)
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\k_diffusion.py", line 265, in sample_heun
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\k_diffusion.py", line 173, in guided_denoiser
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\k_diffusion.py", line 160, in denoiser
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\k_diffusion.py", line 105, in denoise
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\diffusion\gaussian_diffusion.py", line 285, in p_mean_variance
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\torch-1.13.1-py3.10-win-amd64.egg\torch\nn\modules\module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\models\transformer.py", line 287, in forward
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\point_e-0.0.0-py3.10.egg\point_e\models\transformer.py", line 208, in _forward_with_cond
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\torch-1.13.1-py3.10-win-amd64.egg\torch\nn\modules\module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "C:\Program Files\Blender Foundation\Blender 3.4\3.4\python\lib\site-packages\torch-1.13.1-py3.10-win-amd64.egg\torch\nn\modules\linear.py", line 114, in forward
return F.linear(input, self.weight, self.bias)
RuntimeError: Expected size for first two dimensions of batch2 tensor to be: [2, 4] but got: [2, 6].
My setup is admittedly non-standard, but I am hoping that someone can help. To get to this point, I also made a couple of changes to the example code, including passing a custom 'cache_dir' to the model, since Blender defaults to using C:\Windows\system32 otherwise:
MODEL_CONFIGS[base_name]['cache_dir'] = cache_dir
MODEL_CONFIGS['upsample']['cache_dir'] = cache_dir
I also encountered a problem in which the PointCloudSampler instance called 'sampler' wasn't instantiated, so I am creating an instance of this class as follows:
sampler = PointCloudSampler(
device=device,
models=[base_model, upsampler_model],
diffusions=[base_diffusion, upsampler_diffusion],
num_points=[1024, 2048],
aux_channels=["normals"]
)
this is called before the "for x in tqdm(sampler.sample_batch_progressive(batch_size=1, model_kwargs=dict(texts=[prompt]))):
samples = x"
invocation.
Finally, I have applied the float to int TypeError fix described in Issue 6 (in point_e\diffusion\k_diffusion.py), but this does not solve the problem.