如何在PyTorch中对图像进行二值化?

时间:2019-04-02 11:19:56

标签: image-processing machine-learning scikit-learn pytorch

我正在尝试为我的图像数据集制作ROC曲线,为此,我需要对数据集进行二值化。我使用的数据集是视网膜OCT图像数据集。但是当我试图对数据集进行二值化以制作ROC图时,我迷失了。

我正在使用Resnet使用PyTorch对4个类别进行分类,并打印Train和测试损失以及Accuracy。但是在我了解了混淆矩阵之后,如果我们有两个以上的类,那么准确性可能无法为我们提供正确的结果。现在,我正在计算数据集的敏感度(fpr)和特异性(tpr),并尝试使用这些参数打印ROC图。我正在按照Scikit-Learn的本教程进行打印- https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html。 在那里,我看到首先必须对测试数据进行二值化,但是当我尝试这样做时,每次都会出错。

我正在Google Colab中完成整个程序,这就是我连接驱动器的方式-

from google.colab import drive
drive.mount('/content/drive')
data = "/content/drive/My Drive/AMD_new"

现在,我在Scikit Learn的网站上看到了此代码以对数据进行二值化-

# Import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target

# Binarize the output
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]

这是我的数据集和数据加载器-

# choose the training and test datasets
train_data = datasets.ImageFolder(data+"/train", transform=transform_train)
test_data = datasets.ImageFolder(data+"/val", transform = transform_test)

test_data = label_binarize(test_data, classes=[0, 1, 2, 3])

dataloader_train = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True, num_workers=2)
dataloader_test = torch.utils.data.DataLoader(test_data, batch_size=32, num_workers=2)

当我尝试将test_data二进制化时,它给了我这个错误- OSError: cannot identify image file <_io.BufferedReader name='/content/drive/My Drive/AMD_new/val/CNV/CNV-6294785-1.jpeg'> 在这一行test_data = label_binarize(test_data, classes=[0, 1, 2, 3]) 你们中的任何一个都可以指导我如何对数据集进行二值化吗?我是否朝着正确的方向打印ROC图?对于这个Pytorch域,我是一个新手,这就是为什么我想知道我是否正以正确的方式获得ROC。谢谢。

0 个答案:

没有答案