Hi, Andy
Thanks for your reply! I see your great work in scikits-learn and your comments are quite useful.
Many will overlap, I think we can maintain a list. As a quick example in the following:
1. Image denoising: for modeling texture, many use mixture model to model the texture density and denoise. Using MRF to denoise. Using matrix-factorization methods(sparse coding etc) to denoise. I think for denosing using machine learning related methods is quite common and yield quite good result reported in their papers.
2. Image completion: Using generative model to do image completion: restricted boltzmann machine
3. 3-D reconstruction/Stereo/Image Registration: MRF is needed.
4. Nearest Neighbor Search: ANN and the approximation methods like hashing etc.
5. General functions like the PCA will be needed as preprocessing.
Here scikits learn and scikits image will overlap and more will be contained as the ICIP and CVPR may have more papers published.
But one further question is: is there a clear outline of topics covered in image processing? Or, should there be one. As we can see, computer vision seems to contain anything about image analysis actually, but it is far beyond traditionally image processing. It somehow want to "learn" the semantic meaning of image but traditional image processing like filtering and convolution seems not to consider the "content" of the image but only to do the task in low level.
As you say, maybe we can leave the image specific thing like the features in sciktis-image and make some useful wrappers in skimage. But to give it a chance to choose the meta-algorithms like "which algorithm to use to do clustering". Then make scikits-learn as a dependence. Just like scikits-image with different backened(like using different blas?). Then user can choose which algorithm from which packages to use. I am not sure whether it is a good idea.
I can help to first implement the graph cut methods as the normalized cuts routine with different discreting methods.
Best,
Wei
On Wed, Jul 25, 2012 at 5:47 AM, Andreas Mueller
<amueller@ais.uni-bonn.de> wrote:
Hi Wei.
While I'm not so active in skimage at the moment, I am very
interested in how to connect sklearn and skimage.
I think at the moment the best approach would be to leave the two
packages independent but try
not to reimplement to much.
Many of the ML methods applied to images can be made much more
efficient for images, so reimplementing these is
definitely worth it. For example image segmentation algorithms
often build on clustering algorithms (like the one you
mentioned) but they can be made much faster by only considering
local neighborhoods.
(which is why I work on
#206)
In most cases that I am interested in the "higher level" ML sort
of "wraps around" the CV, as for example with descriptors
and classification. I would place all descriptors in skimage but
skimage doesn't need sklearn as a dependence for me to
be able to use an SVM on them.
Do you have more examples where sklearn and skimage might overlap?
I was actually wondering about doing a grab-cut implementation
which needs Gaussian mixture models.
But before I get there, we need graph cuts in skimage ;)
Cheers,
Andy
On 07/24/2012 08:09 AM, LI, Wei wrote:
Dear ALL:
I am new to scikits-image and I am not sure the intended
coverage of this package. Seems digital image processing using a
signal processing view is quite mature but there are also trends
where methods from statistical learning theory and computer
vision are adpated into solving standard digial image processing
tasks just like using learning method to do super resolution,
image denoising. There are also some discussion in this forum
that are related to computer vision like the object detection.
As far as I know, there is one scikits package as the
scikits-learn implementing many machine learning algorithm. When
we need some functions to perform some tasks whether we need to
reimplement some functions or just to use another package as a
denepdence?
As I am a computer vision researcher I find this package by
searching for available implementation for hog features in
python. Just wondering whether some modules I can help to
implement for this as I have already gotten help from package
:-). But I have some questions when picturing whether I can take
the tasks in the wiki page
http://scikits-image.org/docs/dev/contribute.html .
For example the graph-cut based segmentation. As we know, the
graph cut base algorithm based mainly on graph-based clustering
method. Such method is implemented in various packages and is in
scikits-learn
http://scikit-learn.org/dev/modules/generated/sklearn.cluster.SpectralClustering.html.
Then we have two choices,
1. Write one JUST for image clustering in this package (Pros:
self contained package, Cons: cannot get updated when clustering
methods are updated)
2. Include the sklearn as a dependence, adapt the mehtods in
that package, and write a routine that just build the graph from
the image ,throw it to sklearn to solve the learning problem and
convert the result back?
As more and more papers in standard image processing
conference like ICIP, using the statistical learning method,
furthuer implementations may have more functions need the
machine learning as subroutines. So what is the indented choice
from the founders of this package?
Best,
Wei