lanl / scico

Scientific Computational Imaging COde
BSD 3-Clause "New" or "Revised" License
105 stars 17 forks source link

Applying multiple priors with APGM solver #460

Closed shnaqvi closed 1 year ago

shnaqvi commented 1 year ago

I am having a difficult time finding an example where multiple priors are using to solve a problem with APGM. Is that possible by say stacking multiple operators? Specifically, I want to apply TV regularizers and a Non-Negative constraint, for deblurring problem. Thanks!

bwohlberg commented 1 year ago

It's not straightforward, unfortunately, but there is some work in this direction. In particular, see Yaoling Yu, "On decomposing the proximal map", Proc. NIPS, 2013.

shnaqvi commented 1 year ago

Oh ok, so that functionality is not implemented yet. I was wondering @bwohlberg if something like this GeneralizedProximalGradient can be implemented? Here they enable passing as many priors as a list, looping over their proximals, and summing them up with equal weights. Given Yaoling's work, do you have a reservation that this is not theoretically equivalent to enforcing multiple priors? Would it be a good approximation? Would you mind adding it to our list of enhancements?

There are many problems that can benefit from this feature, like reconstructing high-speed video with rotating PSF published in this year's ICCV, 2023 (see equation 4 that enforces TV regularizer in 3 dimensions, along with Non-Negative prior, and sparsity constraint). Heide, TOG, 2016 also discuss demosaicking problem in equation 3 with multiple priors.

bwohlberg commented 1 year ago

Unfortunately I don't see a reference for the "generalized proximal gradient" algorithm, but I suspect it may be related to the approach proposed by Yaoling Yu, "Better Approximation and Faster Algorithm Using the Proximal Average", Proc. NIPS 2013. Agreed that it would be useful, and we can add it to the list, but realistically, it's not going to be anytime soon unless someone contributes an implementation. (For what it's worth, it looks straightforward.)

shnaqvi commented 1 year ago

@bwohlberg , thanks for giving it a consideration. Actually it is related to this "Proximal Splitting Methods" publication by Combettes and Pasquett, 2011 (PDF here), handled in Section 10.7, and proposed in Algorithm 10.27.

But your reference also seems to be attacking the same problem of solving with non smooth regularizers. I'll add an enhancement request for it.

bwohlberg commented 1 year ago

Working on this. A PR should be submitted relatively soon.

shnaqvi commented 1 year ago

Thanks @bwohlberg , sorry I just saw this! I already created a Pull Request not knowing that you might also be actively working on it. I have tested it with our toy example with TV prior and NonNegativeIndicator prior applied and its yielding expected result (essentially solving the following problem). $\text{argmin}_x \frac{1}{2} \lVert y - x\rVert_2^2 + \lambda_1 \lVert \nabla x \rVert_1 + \lambda_2 I(x\ge0)$

So you now have a working code, and I'm sure you can highly optimize it, and submit a revision.

image image
bwohlberg commented 1 year ago

My fault for not mentioning earlier that I was working on this. Thanks for the contribution. Closing this issue and referring further discussion to #465 or #466, as appropriate.