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

Applying multiple priors with APGM solver #460

Closed
shnaqvi opened this issue Oct 10, 2023 · 7 comments
Closed

Applying multiple priors with APGM solver #460

shnaqvi opened this issue Oct 10, 2023 · 7 comments
Labels
question Further information is requested

Comments

@shnaqvi
Copy link
Contributor

shnaqvi commented Oct 10, 2023

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 bwohlberg added the question Further information is requested label Oct 11, 2023
@bwohlberg
Copy link
Collaborator

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
Copy link
Contributor Author

shnaqvi commented Oct 11, 2023

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
Copy link
Collaborator

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
Copy link
Contributor Author

shnaqvi commented Oct 16, 2023

@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
Copy link
Collaborator

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

@shnaqvi
Copy link
Contributor Author

shnaqvi commented Nov 8, 2023

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
Copy link
Collaborator

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.

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

No branches or pull requests

2 participants