我的输入文件包含显示情绪的图像或脸,有8个标签,1个用于中性,其他用于不同情绪。 我想训练我的CNN对图像的情感进行分类。 我需要将图像转换为灰度。这是变换前的图像;
我的转换代码如下
_transforms = transforms.Compose([ transforms.ToPILImage(), transforms.Grayscale(num_output_channels=1), transforms.Resize((ImageSize.width, ImageSize.height)), transforms.ToTensor() ]) train_dataset = EmotionDatasetTrain(X_tr, y_tr, transform=_transforms) test_dataset = EmotionDatasetTest(X_t, y_t, transform=_transforms) val_dataset = EmotionDatasetVal(X_v, y_v, transform=_transforms)
我的EmotionDatasetTrain类(和super类)是
import torch import torchvision as tv from torchvision import transforms from torch.utils.data import Dataset from settings import ImageSize
class EmotionDataSet(): def init(self, transform): self.transform = transform self.classes = ["neutral", "anger", "contempt", "disgust", "fear", "happy", "sadness", "surprise"]
def get_x_y(self, idx, _X, _Y): if torch.is_tensor(idx): idx = idx.tolist() y = _Y[idx].item() if self.transform: x = self.transform(_X[idx].reshape(ImageSize.width, ImageSize.height)) #x = self.transform(_X[idx]) return x, y
class EmotionDatasetTrain(EmotionDataSet, Dataset):
def __init__(self, X_Train, Y_Train, transform=None): super().__init__(transform) self.X_Train = X_Train self.Y_Train = Y_Train def __len__(self): return len(self.X_Train) def __getitem__(self, idx): x, y = super().get_x_y(idx, self.X_Train, self.Y_Train) return x, y
那么,为什么我的图像会被转换成非常低分辨率的紫色和黄色图像呢?我期待一个高分辨率的黑白图像。我的CNN无法从这样变换的图像中学习
目前没有回答
相关问题 更多 >
编程相关推荐