微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在DeeplabV3+的Keras实现的评估代码中生成混淆矩阵

如何解决如何在DeeplabV3+的Keras实现的评估代码中生成混淆矩阵

我是这个平台的新手,没有编码背景。但是对于我的论文,我坚持使用评估代码。 我正在使用 DeeplabV3+ 的 Keras 实现,对于评估代码,我得到了标签,但我无法计算结果的评估指标和混淆矩阵。我的基本事实是 png 图像格式,我使用的是自定义数据集。下面是标签预测的代码,我指的是github repo:https://github.com/bonlime/keras-deeplab-v3-plus

import numpy as np
from PIL import Image
from sklearn import metrics
from sklearn.metrics import confusion_matrix 
from matplotlib import pyplot as plt
import tensorflow as tf
import keras
import cv2
import pandas as pd

from keras.models import load_model

from model import Deeplabv3

# Generates labels using most basic setup.  Supports varIoUs image sizes.  Returns image labels in same format
# as original image.  normalization matches MobileNetV2
#tunnel_weigths_path = 'C:/Users/t-92swsw1mpg.C-VG-202092002/.spyder-py3/temp_path/4/weights-improvement-148-0.02.hdf5'
trained_image_width=256
trained_image_height=256
mean_subtraction_value=63.75
#data_path = "C:/Users/t-92swsw1mpg.C-VG-202092002/.spyder-py3/benchmark_dataset/VOC2012/JPEGImages/"
#main_path = "C:/Users/t-92swsw1mpg.C-VG-202092002/.spyder-py3/"

image = np.array(Image.open('data_augmentation/dataset/augmented/data/augmented_image_25.jpg'))
# resize to max dimension of images from training dataset
w,h,_ = image.shape
# ratio = float(trained_image_width) / np.max([w,h])
resized_image = np.array(Image.fromarray(image.astype('uint8')).resize((int(trained_image_height),int(trained_image_width))))

# apply normalization for trained dataset images
resized_image = (resized_image / mean_subtraction_value) - 1.

# pad array to square image to match training images
pad_x = int(trained_image_width - resized_image.shape[0])
pad_y = int(trained_image_width - resized_image.shape[1])
resized_image = np.pad(resized_image,((0,pad_x),(0,pad_y),0)),mode='constant')

# make prediction

deeplab_model = Deeplabv3(weights= None,input_tensor= None,input_shape=(256,256,3),classes=21,backbone='xception',OS=8,alpha=1.,activation= None)

res = deeplab_model.predict(np.expand_dims(resized_image,0))
labels = np.argmax(res.squeeze(),-1)
# remove padding and resize back to original image
if pad_x > 0:
    labels_x = labels[:-pad_x]
if pad_y > 0:
    labels_y = labels[:,:-pad_y]
labels = np.array(Image.fromarray(labels.astype('uint8')).resize((h,w)))

print("This is the Model",deeplab_model)

print("We are in the end!")
deeplab_model.summary()
plt.imshow(labels)

有人可以帮忙告诉我如何在生成标签(预测)后生成混淆矩阵。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?