I'm quite new to machine learning and a bit unsure about the whole process and the interpretation of the results.
The Task: I have images with some objects of somewhat the same color and shape which overlap and I want to segment the single objects using machine learning to get the edges of adjacent objects.
Current process: For each image there is a label file with the pixels marked which represent the edge between two overlapping objects and another marking for the whole object areas. For each pixel (positive edge pixel and negative object pixel) I calculate the feature values and start training i.e. a Boosting Tree using OpenCV using ~80% of the images. With the trained classifier I predict the 'object-to-object-edges' for the 20% left and interpret the prediction result with my human vision. During post-processing I use some algorithms to segment all objects one by one using the prediction result.
The problem: The process is more or less a command line tool reading and writing config files etc. I want to build a framework with a GUI to train different classifiers with variable parameters, features and validation. I'm not sure about the prediction results OpenCV offers. At first I thought I would face an image with either false or true dependant on whether the pixel is an 'object-to-object-edge' or not but I got images 8bit images with probabilities. In order to automatically validate a trained classifier refering to measurements like sensitivity and specificity, I would have to choose i.e. a simple threshold to define a pixel to be true or false and compare the result to the ground truth/label file.
I think I have three possibilites:
- Start a bunch of training processes, predict, look at the results by myself
- Start a bunch of training processes, predict, threshold (maybe using a value based on some statistical meaurement since different classifiers have different intensity values), validate results (maybe cross-validation)
- Start a bunch of training processes, predict, do an amount of post-processing until the segmentation is done, validate
Letting the application do the work would of course be nice but I guess its best to keep the post-processing as short as possible to prevent post-processing parameters to interfere with the validation.
Has anyone experience with OpenCV ML or any tipps on how to build up the process ? How would you face such a task ?