[GRASS-dev] Object-based image classification in GRASS

Moritz Lennert mlennert at club.worldonline.be
Thu Jan 9 02:13:14 PST 2014

Dear Pietro,

On 07/01/14 18:33, Pietro Zambelli wrote:
> Dear all,
> Some news about the machine learning classification of image segments.

Thanks for the great work !!!

Just a few questions/comments:

>      3. v.stats [r58637] => Extract statistics from a vector map
>         (statistics about shape and about raster maps).
>         v.stats internally use (in grass-addons):
>          - v.area.stats [r58636] => extract some statistics about
>            the shape (in grass-addons);

Looking at the code of v.area.stats, I don't understand what it does 
differently than v.to.db, except that it outputs all indicators in one 
go. I think it would be better to avoid module inflation and maybe 
either make v.area.stats into a script that calls v.to.db several times 
to collect the different variables, or modify v.to.db to allow 
upload/output of several variables at once (see [1]).

>          - v.to.rast => re-convert the vector to a raster map using the
>            vector categories to be sure that there is a correspondence
>            between vector and raster categories (zones).
>          - r.univar2 [r58439] => extract some general statistics from
>            raster using the zones (consume much less memory than
>            r.univar, and compute more general statistics like:
>            skewness, kurtosis, and mode (in grass-addons);

What is the difference between your r.univar2 and the original r.univar 
? Couldn't your modifications be merged directly into r.univar ?

>      4. v.class.ml [r58638] => classify a vector map, at the moment
>          only a supervisionate classification is tested/supported.
>          To select the segment that must use for training the different
>          machine-learning techniques you can define a training
>          map using the g.gui.iclass.
>          The v.class.ml module can:
>          - extract the training,
>          - balance and scale the training set;
>          - optimize the training set;
>          - test several machine learning techniques;
>          - explore the SVC domain;
>          - export the accuracy of different ML to a csv file;
>          - find and export the optimum training set,
>          - classify the vector map using several ML techniques and
>            export to a new layer of the vector map with the results
>            of the classification;
>          - export the classification results to several raster maps,
>            the vector map coming from a segment raster map is too
>            big to be exported to a shape file (the limit for a shape file
>            is 4Gb [0]).

Wow, this looks great ! I'll test this as soon as possible.

>          The module accept as input a python file with a list of custom
>          classifiers defined by the user, and support both:
>          scikit-learn[1] and mlpy[2] libraries.
> Known Issues:
> * not all the classifiers are working (but I hope to be able to fix this
> during the next weeks);
> * so far, only a supervised classification is supported.

What would be needed to make unsupervised classification work ?


[1] https://trac.osgeo.org/grass/ticket/2123

More information about the grass-dev mailing list