Оцените набор данных семантической сегментации против основной истины
вычисляет метрики семантической сегментации с помощью одного или нескольких ssm
= evaluateSemanticSegmentation(dsResults
,dsTruth
,Name,Value
)Name,Value
парные аргументы, чтобы управлять оценкой.
Оцените результаты семантической сегментации путем вычисления матрицы беспорядка и метрик для каждого класса, каждого изображения и целого набора данных.
Выполните Семантическую Сегментацию
Пометьте каждый пиксель в серии изображений или как объект или как фон. Этот пример использует triangleImages
набор данных, который имеет 100 тестовых изображений треугольников с метками основной истины.
Задайте местоположение набора данных, протестируйте изображения и метки основной истины.
dataSetDir = fullfile(toolboxdir('vision'),'visiondata','triangleImages'); testImagesDir = fullfile(dataSetDir,'testImages'); testLabelsDir = fullfile(dataSetDir,'testLabels');
Создайте datastore изображений, содержащий тестовые изображения.
imds = imageDatastore(testImagesDir);
Задайте имена классов и их связанную метку IDs.
classNames = ["triangle","background"]; labelIDs = [255 0];
Создайте пиксельный datastore метки, содержащий пиксельные метки основной истины для тестовых изображений.
pxdsTruth = pixelLabelDatastore(testLabelsDir,classNames,labelIDs);
Загрузите сеть семантической сегментации, которая была обучена на учебных изображениях шумных форм.
net = load('triangleSegmentationNetwork');
net = net.net;
Запустите сеть на тестовых изображениях. Предсказанные метки записаны в диск во временной папке и возвращены как pixelLabelDatastore
.
pxdsResults = semanticseg(imds,net,"WriteLocation",tempdir);
Running semantic segmentation network ------------------------------------- * Processed 100 images.
Вычислите метрики матрицы и сегментации беспорядка
Оцените результаты предсказания против основной истины. По умолчанию, evaluateSemanticSegmentation
вычисляет все доступные метрики, включая матрицу беспорядка, нормированную матрицу беспорядка, метрики набора данных, метрики класса и метрики изображений.
metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth)
Evaluating semantic segmentation results ---------------------------------------- * Selected metrics: global accuracy, class accuracy, IoU, weighted IoU, BF score. * Processed 100 images. * Finalizing... Done. * Data set metrics: GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU MeanBFScore ______________ ____________ _______ ___________ ___________ 0.90624 0.95085 0.61588 0.87529 0.40652
metrics = semanticSegmentationMetrics with properties: ConfusionMatrix: [2x2 table] NormalizedConfusionMatrix: [2x2 table] DataSetMetrics: [1x5 table] ClassMetrics: [2x3 table] ImageMetrics: [100x5 table]
Чтобы исследовать результаты, отобразите точность классификации, пересечение по объединению и контур F-1 счет к каждому классу. Эти значения хранятся в ClassMetrics
свойство. Кроме того, отобразите нормированную матрицу беспорядка.
metrics.ClassMetrics
ans=2×3 table
Accuracy IoU MeanBFScore
________ _______ ___________
triangle 1 0.33005 0.028664
background 0.9017 0.9017 0.78438
metrics.NormalizedConfusionMatrix
ans=2×2 table
triangle background
________ __________
triangle 1 0
background 0.0983 0.9017
dsResults
— Предсказанные пиксельные меткиPixelLabelDatastore
возразите | PixelLabelImageDatastore
| массив ячеек объектов datastoreПредсказанные пиксельные метки, следующие из семантической сегментации в виде datastore или массива ячеек объектов datastore. dsResults
может быть любой datastore, который возвращает категориальные изображения, такие как PixelLabelDatastore
или pixelLabelImageDatastore
. read
(dsResults
) должен возвратить категориальный массив, массив ячеек или таблицу. Если read
функция возвращает многостолбцовый массив ячеек или таблицу, второй столбец должен содержать категориальные массивы.
dsTruth
— Пиксельные метки основной истиныPixelLabelDatastore
возразите | массив ячеек PixelLabelDatastore
объектыПиксель основной истины помечает в виде datastore или массива ячеек объектов datastore. dsResults
может быть любой datastore, который возвращает категориальные изображения, такие как PixelLabelDatastore
или pixelLabelImageDatastore
. Используя read
(dsTruth
) должен возвратить категориальный массив, массив ячеек или таблицу. Если read
функция возвращает многостолбцовый массив ячеек или таблицу, второй столбец должен содержать категориальные массивы.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth,'Metrics',"bfscore")
вычисляет только средний счет BF каждого класса, каждого изображения и целого набора данных.'Metrics'
— Метрики сегментации"all"
(значение по умолчанию) | вектор строкМетрики сегментации в semanticSegmentationMetrics
вычислить в виде разделенной запятой пары, состоящей из 'Metrics'
и вектор строк. Этот аргумент задает который переменные в DataSetMetrics
, ClassMetrics
, и ImageMetrics
таблицы, чтобы вычислить. ConfusionMatrix
и NormalizedConfusionMatrix
вычисляются независимо от значения 'Metric'
.
Значение | Описание | Метрика набора агрегированных данных | Метрика изображений | Метрика класса |
---|---|---|---|---|
"all" | Оцените все метрики семантической сегментации. | Все агрегированные данные установили метрики | Все метрики изображений | Все метрики класса |
"accuracy" |
Точность указывает на процент правильно идентифицированных пикселей для каждого класса. Используйте метрику точности, если вы хотите знать, как хорошо каждый класс правильно идентифицирует пиксели.
Точность класса является простой метрикой, аналогичной глобальной точности, но это может вводить в заблуждение. Например, маркировка всех пикселей "автомобиль" дает совершенный счет к "автомобильному" классу (несмотря на то, что не для других классов). Используйте точность класса в conjuction с IoU для более полной оценки результатов сегментации. | MeanAccuracy | MeanAccuracy | Accuracy |
"bfscore" |
Счет соответствия контура граничного F1 (BF) указывает, как хорошо предсказанный контур каждого класса выравнивается с истинным контуром. Используйте счет BF, если вы хотите метрику, которая имеет тенденцию коррелировать лучше с человеческой качественной оценкой, чем метрика IoU.
Для получения дополнительной информации смотрите | MeanBFScore | MeanBFScore | MeanBFScore |
"global-accuracy" |
| GlobalAccuracy | GlobalAccuracy | 'none' |
"iou" |
Пересечение по объединению (IoU), также известное как коэффициент подобия Jaccard, является обычно используемой метрикой. Используйте метрику IoU, если вы хотите статистическое измерение точности, которое штрафует ложные положительные стороны.
Для получения дополнительной информации смотрите | MeanIoU | MeanIoU | IoU |
"weighted-iou" | Средний IoU каждого класса, взвешенного количеством пикселей в том классе. Используйте эту метрику, если изображения непропорционально измерили классы, чтобы уменьшать удар ошибок в маленьких классах на совокупном качественном счете. | WeightedIoU | WeightedIoU | 'none' |
Пример: metrics = evaluateSemanticSegmentation(pxdsResults, pxdsTruth,'Metrics',["global-accuracy","iou"])
вычисляет глобальную точность и метрики IoU через набор данных, изображения и классы.
Типы данных: string
'Verbose'
— Отметьте, чтобы отобразить прогресс оценки
(значение по умолчанию) | 0
Отметьте, чтобы отобразить информацию о прогрессе оценки в командном окне в виде разделенной запятой пары, состоящей из 'Verbose'
и любой 1
TRUE
) или 0
ложь
).
Отображенная информация включает индикатор выполнения, прошедшее время, предполагаемое время, оставаясь и метрики набора данных.
Пример: metrics = evaluateSemanticSegmentation(pxdsResults, pxdsTruth,'Verbose',0)
вычисляет метрики сегментации, не отображая информацию о прогрессе.
Типы данных: логический
ssm
— Метрики семантической сегментацииsemanticSegmentationMetrics
объектМетрики семантической сегментации, возвращенные как semanticSegmentationMetrics
объект.
[1] Csurka, G., Д. Ларлус и Ф. Перроннин. "Что такое хорошая мера по оценке для семантической сегментации?" Продолжения британской Конференции по Машинному зрению, 2013, стр 32.1–32.11.
Чтобы запуститься параллельно, установите 'UseParallel'
к true
или включите это значением по умолчанию с помощью настроек Computer Vision Toolbox™.
Для получения дополнительной информации смотрите Поддержку Parallel Computing Toolbox.
Параллельная обработка только поддержана, когда входными хранилищами данных является pixelLabelDatastore
или pixelLabelImageDatastore
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.