HJ-harry / DDS

Official PyTorch implementation for Decomposed Diffusion Sampling (DDS), presented in the paper "Decomposed Diffusion Sampler for Accelerating Large-Scale Inverse Problems" (https://arxiv.org/abs/2303.05754).
37 stars 2 forks source link

About the training code. #3

Open Zhentao-Liu opened 3 months ago

Zhentao-Liu commented 3 months ago

Would you release the training codes/sripts? It seems like there is only inference code (main.py). Thanks in advance.

Zhentao-Liu commented 3 months ago

Data preprocessing. In your provided CT data, it has the intensity range of [0.0777, 1]. It must have some normalization. Typical CT image would not have such attenuation range. So, how do you preprocess the intensity of your data?

Zhentao-Liu commented 3 months ago

If I want to perform different views settings SVCT (e.g., 10/20 views,) or on different dataset (dental), should I retrain the diffusion model?

Zhentao-Liu commented 3 months ago

And if I change the rotation angle (360, a full scan), should I retrain the model?

Zhentao-Liu commented 3 months ago

Another question is that you use parallel geometry (fan-beam) to perform projection and reconstruction in SVCT. Does that meaningful? For 3D CT data, we commonly use Cone-beam geometry to perform projection and reconstruction.

Zhentao-Liu commented 2 months ago

def Acg_TV(x):
return A_funcs.AT(A_funcs.A(x)) + rho * _DzT(_Dz(x))

def _Dz(x): # Batch direction y = torch.zeros_like(x) y[:-1] = x[1:] y[-1] = x[0] return y - x

def _DzT(x): # Batch direction y = torch.zeros_like(x) y[:-1] = x[1:] y[-1] = x[0] tempt = -(y-x) difft = tempt[:-1] y[1:] = difft y[0] = x[-1] - x[0] return y

I am confusing why use _DzT(_Dz(x)), it seems that _DzT is not the inverse operation of _Dz. ADMM with ACV_TV: you want the generated data is the same with the original data in projection direction. And z axis should be smooth.