maidens / EE225E-Project

0 stars 0 forks source link

Remove MATLAB dependence #1

Open maidens opened 8 years ago

maidens commented 8 years ago

Currently this project relies on MATLAB code called using MATLAB.jl, but this was kind of a hack just to get something working quickly. This is fine for generating relatively small images (e.g. 16 x 16) on my personal machine, but for more realistically-sized images we may want to run the code on a more powerful server (and exploit parallelism, see issue #2 ) to improve performance. Since it's unlikely that we'll be able to get MATLAB running on AWS, we probably want to remove this dependency.

The MATLAB code is to run this software for computing the prox operator for total-variation regularization: https://github.com/albarji/proxTV. This is used in the z-update in the Douglas-Rachford iteration.

A few options for how to do this (probably in order of easiness):

  1. The prox-TV code comes with a python interface. Since it would be easier to get python running on AWS than MATLAB, we could just use that interface.
  2. Write a Julia interface for the C code in the prox-TV package.
  3. Re-implement our own prox-TV operator in Julia. If you want to look at doing that, relevant references are: http://arxiv.org/abs/1411.0589 and Fast Newton-type Methods for Total Variation Regularization. Álvaro Barbero, Suvrit Sra. ICML 2011 proceedings. In this case, it's probably only necessary to implement a 2-dimensional TV.
kamink commented 8 years ago

Currently looking through prox-TV code to see how the MATLAB interface works and then I'll emulate that with Julia - looking to have something by mid-weekend.

maidens commented 8 years ago

Awesome! Yeah, that's probably the best (though maybe not the easiest) way to go about it. If you do it that way, it would be worth thinking about reaching out to Alvaro and Survit to see if they want to incorporate the new interface into their toolbox.