benchopt / benchmark_tv_1d

TV Denoising in 1D
2 stars 7 forks source link

fix pbm #8

Closed EnLAI111 closed 2 years ago

tomMoral commented 2 years ago

What is the status of this PR @EnLAI111 ? Should we merge it so it is easier to review the rest of the cahnges/

EnLAI111 commented 2 years ago

What is the status of this PR @EnLAI111 ? Should we merge it so it is easier to review the rest of the cahnges/

Chambolle-Poke can't work for Huber. There is always a theoretical problem of calculation that I can't solve.

agramfort commented 2 years ago

@svaiter would have some time to help on the TV benchmarks?

svaiter commented 2 years ago

What is the status of this PR @EnLAI111 ? Should we merge it so it is easier to review the rest of the cahnges/

Chambolle-Poke can't work for Huber. There is always a theoretical problem of calculation that I can't solve.

I am not sure to understand your problem. If you look at (Chambolle and Pock, 2011) in Section 6.2.3, I think there is all ingredient to implement the resolvent for Huberized-TV (1D or 2D), if I am not mistaken.

EDIT: BTW, I think it is a bit dangerous to mix TV and TV-Huber for Chambolle-Pock since for TV you expect a 1/k^2 rate whereas the other can be linear depending on the operator A. I think it should be in two different benchmarks

EnLAI111 commented 2 years ago

What is the status of this PR @EnLAI111 ? Should we merge it so it is easier to review the rest of the cahnges/

Chambolle-Poke can't work for Huber. There is always a theoretical problem of calculation that I can't solve.

I am not sure to understand your problem. If you look at (Chambolle and Pock, 2011) in Section 6.2.3, I think there is all ingredient to implement the resolvent for Huberized-TV (1D or 2D), if I am not mistaken.

EDIT: BTW, I think it is a bit dangerous to mix TV and TV-Huber for Chambolle-Pock since for TV you expect a 1/k^2 rate whereas the other can be linear depending on the operator A. I think it should be in two different benchmarks

Thanks for your instruction! Yes, I have read this paper, but in our case, it's not y - x but y - Ax. My calculation is following, and I'm confused by the circled part.

ChamPoke

I'm sorry, when you mention "TV", do you mean "quadratic loss + TV penalty"? If so, I don't think we need to be worried. Because we have a parameter data_fit = ['quadratic', 'huber'] of objective function. For each data_fit, we compare the convergence speed of different algorithms. So "quadratic loss + TV penalty" won't be compare with "huber loss + TV penalty".

svaiter commented 2 years ago

Thanks for your instruction! Yes, I have read this paper, but in our case, it's not y - x but y - Ax. My calculation is following, and I'm confused by the circled part.

Ok, mistake is on my side, I believed that the intent was to replace the l1 norm of the gradient by the Huber of the gradient (which is "classical" in imaging, see eg CP 2011), not that you changed the data fidelity from L2 to Huber. Do you have a reference for Huber datafit + regular TV?

I don't think there is a good way to compute in closed-form the prox_Huber composed by an affine transform, except if it is a convolution (then you can solve in the Fourier domain). There is I think two possibility to allievate this issue:

  1. Use Condat-Vu which allow to directly take the gradient of the Huber
  2. (to carefully check) is to consider an alternative dualization of the Huber + TV model: Instead of writing the saddle-point min_u max_v <Du, v> + H(Au - y) - iota_linf(v) which leads to you dual You can instead dualize in a higher-order space by minu max{v,w} <Du, v> + <Au,w> - H(w+y) - iota_linf(v) that can be solved by vanilla Chambolle-Pock (juste use the transform K = (D, A)). Using this formulation, you don't have to solve you nasty circled system.

I'm sorry, when you mention "TV", do you mean "quadratic loss + TV penalty"? If so, I don't think we need to be worried. Because we have a parameter data_fit = ['quadratic', 'huber'] of objective function. For each data_fit, we compare the convergence speed of different algorithms. So "quadratic loss + TV penalty" won't be compare with "huber loss + TV penalty".

Perfect!