Как найти коэффициент успеха алгоритма кластеризации?

Я реализовал несколько алгоритмов кластеризации в наборе данных изображения. Я заинтересован в получении успеха в кластеризации. Я должен обнаружить область опухоли, в исходном изображении я знаю, где находится опухоль, я хотел бы сравнить два изображения и получить процент успеха. Следующие изображения:

Исходное изображение: Я знаю положение рака

Изображение после алгоритма кластеризации

Я использую python 2.7.

Ответ 1

Точность сегментации

Это довольно распространенная проблема, рассмотренная в литературе по сегментации изображений, например, fooobar.com/info/484786/...

Один общий подход - рассмотреть отношение "правильных пикселей" к "неправильным пикселям", что является обычным для сегментации изображений для домена безопасности, например, для маски RCNN, PixelNet.

Рассматривая это как задачу обнаружения объекта, вы можете взять перекрытие корпуса объектов и точно измерить точность (обычно разбитую на точность, напоминание, f-оценку и другие меры с различными смещениями/перекос). Это позволяет создать кривую ROC, которая может быть откалибрована для ложных срабатываний/ложных негативов.

Не существует дого-агностического консенсуса относительно того, что правильно. KITTI обеспечивает оба.

Маска RCNN - это современное состояние с открытым исходным кодом и обеспечивает реализацию в python

В вашем домене (медицина) применяются стандартные статистические правила. Используйте набор для защиты от удержания. Перекрестная проверка. Так далее. (*)

Обратите внимание: хотя литературное пространство довольно велико, я бы посоветовал вам взглянуть на некоторые документы, относящиеся к домену, поскольку они могут принимать меньше "статистических сокращений", чем другие проекты видения (например, распознавание цифр, например).


питон

Помимо ссылок rcnn mask выше, scikit-learn предоставляет некоторые чрезвычайно удобные инструменты и считается частью стандартного научного "стека" для python.

Реализация различия между изображениями в python тривиальна (с использованием numpy). Здесь переполненная связь SO.

Пересечение ячеек в python легко реализовать на одном собственном; Я бы использовал библиотеку, как стройную, если вы хотите измерить общее пересечение полигонов.

У Scikit-learn есть несколько хороших инструментов для оценки машинного обучения, например,


Поиск литературы

Одна из причин, по которой у вас может возникнуть проблема с поиском ответа, заключается в том, что вы пытаетесь измерить эффективность неконтролируемого метода, кластеризации, на контролируемой арене обучения. "Кластеры" фундаментально недоопределены в математике (**). Вы хотите смотреть на контролируемую учебную литературу для измерения точности.

Существует литература о неконтролируемом обучении/кластеризации, которая также относится к топологической структуре. Здесь очень вводное резюме. Я не думаю, что это то, чего ты хочешь.

Общей проблемой, особенно в масштабе, является то, что контролируемые методы требуют ярлыков, которые могут потребовать много времени для точной обработки плотной сегментации. Обнаружение объекта делает его немного проще.

Существуют некоторые существующие наборы данных для медицины ([1], [2], например) и некоторые текущие исследования в метрических метриках. Если ни один из них не является для вас параметрами, вам, возможно, придется вернуться к рассмотрению проблемы без поддержки, но оценка становится очень различной по объему и полезности.


Сноски

[*] Люди видения иногда пропускают проверку перекрестка, хотя они не должны, главным образом потому, что модели медленно подходят, и они - ленивая группа. Пожалуйста, не пропустите разделение поезда/испытания/проверки, или ваши результаты могут оказаться опасно бесполезными

[**] Вы можете найти всевозможные "формальные" определения, но никогда два человека не согласны с тем, какой из них правильный или наиболее полезный. Здесь более плотное чтение