Как рассчитать средний показатель IU в сегментации изображения? Как вычислить среднее значение IU (среднее пересечение по союзу), как в этой статье? Длинный, Джонатан, Эван Шелхамер и Тревор Даррелл. "Полностью сверточные сети для семантической сегментации". Ответ 1 Для каждого класса "Пересечение через союз" (IU) оценка: истинное положительное/(истинное положительное + ложное положительное + ложное отрицание) Среднее значение IU является просто средним по всем классам. Относительно обозначений в документе: n_cl: количество классов t_i: общее количество пикселей в классе i n_ij: количество пикселей класса i, которое, как предполагается, принадлежит классу j. Итак, для класса i: n_ii: количество правильно классифицированных пикселей (истинные положительные результаты) n_ij: количество ошибочно классифицированных пикселей (ложных срабатываний) n_ji: количество пикселей, неправильно не классифицированных (ложные негативы) Вы можете найти код matlab для вычисления этого непосредственно в Pascak DevKit здесь Ответ 2 Это должно помочь def computeIoU(y_pred_batch, y_true_batch): return np.mean(np.asarray([pixelAccuracy(y_pred_batch[i], y_true_batch[i]) for i in range(len(y_true_batch))])) def pixelAccuracy(y_pred, y_true): y_pred = np.argmax(np.reshape(y_pred,[N_CLASSES_PASCAL,img_rows,img_cols]),axis=0) y_true = np.argmax(np.reshape(y_true,[N_CLASSES_PASCAL,img_rows,img_cols]),axis=0) y_pred = y_pred * (y_true>0) return 1.0 * np.sum((y_pred==y_true)*(y_true>0)) / np.sum(y_true>0)
Ответ 1 Для каждого класса "Пересечение через союз" (IU) оценка: истинное положительное/(истинное положительное + ложное положительное + ложное отрицание) Среднее значение IU является просто средним по всем классам. Относительно обозначений в документе: n_cl: количество классов t_i: общее количество пикселей в классе i n_ij: количество пикселей класса i, которое, как предполагается, принадлежит классу j. Итак, для класса i: n_ii: количество правильно классифицированных пикселей (истинные положительные результаты) n_ij: количество ошибочно классифицированных пикселей (ложных срабатываний) n_ji: количество пикселей, неправильно не классифицированных (ложные негативы) Вы можете найти код matlab для вычисления этого непосредственно в Pascak DevKit здесь
Ответ 2 Это должно помочь def computeIoU(y_pred_batch, y_true_batch): return np.mean(np.asarray([pixelAccuracy(y_pred_batch[i], y_true_batch[i]) for i in range(len(y_true_batch))])) def pixelAccuracy(y_pred, y_true): y_pred = np.argmax(np.reshape(y_pred,[N_CLASSES_PASCAL,img_rows,img_cols]),axis=0) y_true = np.argmax(np.reshape(y_true,[N_CLASSES_PASCAL,img_rows,img_cols]),axis=0) y_pred = y_pred * (y_true>0) return 1.0 * np.sum((y_pred==y_true)*(y_true>0)) / np.sum(y_true>0)