Creating a Dataset and Training an Unsupervised Segmenter¶
This code snippet shows how to create a dataset, train an unsupervised segmenter and get the best performance metrics obtained during the training.
C++¶
#include <eVision/EasyDeepLearning/EasySegment/ESupervisedSegmenter.h>
using namespace eVision;
using namespace eVision::EasyDeepLearning;
// Creating dataset and segmenter objects
EDataset dataset;
EDataset trainingDataset;
EDataset validationDataset;
EUnsupervisedSegmenter segmenter;
segmenter.SetGoodLabel("good");
// Add a segmentation label
dataset.AddLabel("good");
// Image to segment
EImageBW8 image;
image.Load("image.png");
// Adding image and setting its label to good
int image_idx = dataset.AddImage(image);
dataset.SetImageLabel(image_idx, "good");
// Create data augmentation
EDataAugmentation augmentation;
// Rotation of up to 90
augmentation.SetMaxRotationAngle(90);
// Enabling horizontal flips
augmentation.SetEnableHorizontalFlip(true);
// Splitting the dataset with 80% of images for the training dataset
// and 20% for the validation dataset
dataset.SplitDataset(trainingDataset, validationDataset, 0.8f);
// Training the classifier for 50 epochs
segmenter.Train(trainingDataset, validationDataset, augmentation, 50);
segmenter.WaitForTrainingCompletion();
// Get the best metrics obtained on the validation dataset
EUnsupervisedSegmenterMetrics bestMetrics = segmenter.GetValidationMetrics(segmenter.GetBestIteration());
C#¶
using eVision;
using eVision.EasyDeepLearning;
// Creating dataset and segmenter objects
EDataset dataset = new EDataset();
EDataset trainingDataset = new EDataset();
EDataset validationDataset = new EDataset();
EUnsupervisedSegmenter segmenter = new EUnsupervisedSegmenter();
segmenter.GoodLabel = "good";
// Add a segmentation label
dataset.AddLabel("good");
// Image to segment
EImageBW8 image = new EImageBW8();
image.Load("image.png");
// Adding image and setting its label to good
int image_idx = dataset.AddImage(image);
dataset.SetImageLabel(image_idx, "good");
// Create data augmentation
EDataAugmentation augmentation = new EDataAugmentation();
// Rotation of up to 90°
augmentation.MaxRotationAngle = 90.0F;
// Enabling horizontal flips
augmentation.EnableHorizontalFlip = true;
// Splitting the dataset with 80% of images for the training dataset
// and 20% for the validation dataset
dataset.SplitDataset(trainingDataset, validationDataset, 0.8F);
// Training the segmenter for 50 epochs
segmenter.Train(trainingDataset, validationDataset, augmentation, 50);
segmenter.WaitForTrainingCompletion();
// Get the best metrics obtained on the validation dataset
EUnsupervisedSegmenterMetrics bestMetrics = segmenter.GetValidationMetrics(segmenter.BestIteration);
Python¶
import eVision
from eVision import EasyDeepLearning as edl
# Creating dataset and segmenter objects
dataset = edl.EDataset()
training_dataset = edl.EDataset()
validation_dataset = edl.EDataset()
segmenter = edl.EUnsupervisedSegmenter()
segmenter.GoodLabel = "good"
# Add a segmentation label
dataset.AddLabel("good")
# Image to segment
image = eVision.EImageBW8()
image.Load("image.png")
# Adding image and setting its label to good
image_idx = dataset.AddImage(image)
dataset.SetImageLabel(image_idx, "good")
# Create data augmentation
augmentation = edl.EDataAugmentation()
# Rotation of up to 90°
augmentation.MaxRotationAngle = 90.0
# Enabling horizontal flips
augmentation.EnableHorizontalFlip = True
# Splitting the dataset with 80% of images for the training dataset
# and 20% for the validation dataset
dataset.SplitDataset(training_dataset, validation_dataset, 0.8)
# Training the classifier for 50 epochs
segmenter.Train(training_dataset, validation_dataset, augmentation, 50)
segmenter.WaitForTrainingCompletion()
# Get the best metrics obtained on the validation dataset
best_metrics = segmenter.GetValidationMetrics(segmenter.BestIteration)