Re: Relation with computer vision and machine learning
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 <https://github.com/scikits-image/scikits-image/pull/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.SpectralCluste....
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
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<https://github.com/scikits-image/scikits-image/pull/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.SpectralCluste... . 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
participants (2)
-
Andreas Mueller
-
LI Wei