【发布时间】:2020-07-17 21:10:39
【问题描述】:
我有一个包含 500 个植物图像的小型数据集,我必须为 [1, 10] 范围内的单个图像预测一个数字。数字之间存在顺序关系(10 > 9 > ... > 1)。这个问题类似于基于单张照片的年龄估计。
我尝试使用 Resnet18、Resnet34 和 VGG16 进行回归。他们都没有给出很好的结果。
有趣的一点是,当我为几张图像绘制热图时,它表明模型选择了错误的点来预测答案。这就像,如果我假设根据面部照片来预测年龄,那么 cnn 给背景的价值要高于实际的脸。
我也尝试了其他方法,例如分类和学习排名,但在我做热图时也会发生同样的事情。在这些方法中,我得到的最佳准确率是使用分类的 30% 和使用学习排名的 35%。
我使用 Fastai 实现和预训练的回归和分类方法。我使用的学习排名方法:https://github.com/Raschka-research-group/coral-cnn。我进行了一些更改,以便也能够使用预训练模型。
另一个重要的一点是数据集是不平衡的。 80% 的数据集对应于 6 到 10 类。
有没有人有任何改进它的提示或我可以尝试的其他方法?
编辑: 我的数据增强如下所示:
transforms.Compose([
transforms.Resize(256), transforms.CenterCrop(224),
transforms.RandomHorizontalFlip(p=0.5),
transforms.ColorJitter(brightness=0.15),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.299, 0.224, 0.225])
])
【问题讨论】:
标签: deep-learning regression pytorch conv-neural-network multiclass-classification