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

TV norm prox #124

Closed
fabian-sp opened this issue Jul 29, 2021 · 6 comments · Fixed by #128
Closed

TV norm prox #124

fabian-sp opened this issue Jul 29, 2021 · 6 comments · Fixed by #128

Comments

@fabian-sp
Copy link
Contributor

Have you included the prox of the total variation norm, i.e. sum_i |x_i - x_{i-1}|?

I have implemented Condats algorithm in order to compute this (https://lcondat.github.io/publis/Condat-fast_TV-SPL-2013.pdf).
I could share my code.

Cheers!

@lostella
Copy link
Member

I believe it’s not there in the package. Does the prox have closed form? Is it just for 1D signals or also 2D?

A PR is of course welcome :-) but let me know in case you need guidance there

@fabian-sp
Copy link
Contributor Author

No, the prox is computed iteratively (see the referenced article). I think there is also a 2D version which would be useful for imaging problems I guess, but have not looked at that yet.
I would need at least some guidance on where to add the function :)

@lostella
Copy link
Member

Of course! You can just add a source file in https://github.com/JuliaFirstOrder/ProximalOperators.jl/tree/master/src/functions say named tvnorm.jl and have the function type defined there. You can take a look at other source files there on how to organize it.

Only the call and prox! methods are strictly required (for other types, a prox_naive function is defined for testing purposes, but it maybe not needed in this case since there’s really no naive way of computing prox).

@lostella lostella linked a pull request Aug 4, 2021 that will close this issue
@fabian-sp
Copy link
Contributor Author

Not sure whether you are interested in this, but one could also add some sum of norms, e.g. 1norm+2norm or 1norm+TV. Those are used in Group Lasso or Fused Lasso for example and the proximal operators can be shown to be just the concatenation of the individual proxes (in the right order).

@lostella
Copy link
Member

lostella commented Aug 5, 2021

@fabian-sp do you have references for those?

@fabian-sp
Copy link
Contributor Author

1norm + 2norm: Proposition 2.1 in https://arxiv.org/pdf/1712.05910.pdf
1norm + TV: Proposition 4 in https://arxiv.org/pdf/1706.08732.pdf

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

Successfully merging a pull request may close this issue.

2 participants