赛题简介
基于ModelArts一站式AI开发平台,对10类美食图片进行分类。数据集一共包含5000张美食图片,均来自真实的美食图片数据,
包含中餐、西餐、甜点、粥类,每张图像中美食所占比例大于3/4,每张图片只代表一类美食。竞赛数据分为2个数据集:参赛选手可使用第1个数据集,
第2个数据集有500张美食图片作为评判用(参赛者不可见)。下面是官方给出的Baseline。
经验分享
数据集划分
Baseline中默认为0.8训练集,0.2验证集。适当增加训练集的比例,可提高验证集的best acc。但是如果训练集比例过高,会降低模型的的泛化能力,
造成最终评分和best acc 相差过大,即模型仅对已知验证集表现良好,对未知验证集表现较差。
简单数据增强
size = 224 # 使用image net的mean std 归一化 normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) train_transformer_ImageNet = transforms.Compose([ transforms.Resize((size,size)), transforms.RandomHorizontalFlip(), transforms.RandomAffine(degrees=0, translate=(0.05, 0.05), scale=(0.95, 1.05)), transforms.ToTensor(), normalize ]) val_transformer_ImageNet = transforms.Compose([ transforms.Resize((size,size)), transforms.ToTensor(), normalize ])
模型选择
尝试了ResNet的不同深度,最后选择了ResNet-101
优化器和学习率衰减
optimizer_ft = optim.SGD(parameters, lr=0.001, momentum=0.9, nesterov=True) # 使用ReduceLROnPlateau学习调度器,如果三个epoch准确率没有提升,则减少学习率 exp_lr_scheduler = lr_scheduler.ReduceLROnPlateau(optimizer_ft,mode='max',patience=3,verbose=True)
模型性能
单模型,验证集上acc为96.556%,提交到modelarts上,测试集的acc为97.8%。


感谢分享~