【竞赛01】垃圾分类(Garbage Classification) Baseline | 返回首页

作者:欧新宇(Xinyu OU)
当前版本:Release v1.1
开发平台:Paddle 2.3.2
运行环境:Intel Core i7-7700K CPU 4.2GHz, nVidia GeForce GTX 1080 Ti
本教案所涉及的数据集仅用于教学和交流使用,请勿用作商用。

最后更新:2022年10月16日


所有作业均在AIStudio上进行提交,提交时包含源代码和运行结果

【任务描述】

近年来,随着人工智能的发展,其在语音识别、自然语言处理、图像与视频分析等诸多领域取得了巨大成功。随着政府对环境保护的呼吁,垃圾分类成为一个亟待解决的问题,本次竞赛将聚焦在垃圾图片的分类,利用人工智能技术,对居民生活垃圾图片进行检测,找出图片中有哪些类别的垃圾。 要求参赛者基于Paddle,给出一个算法或模型,对于给定的图片,检测出图片中的垃圾类别。给定图片数据,选手据此训练模型,为每张测试数据预测出最正确的类别。

【数据说明】

本竞赛所用训练和测试图片均来自生活场景。总共四十个类别,类别和标签对应关系在训练集中的dict文件里。图片中垃圾的类别,格式是“一级类别/二级类别”,二级类别是具体的垃圾物体类别,也就是训练数据中标注的类别,比如一次性快餐盒、果皮果肉、旧衣服等。一级类别有四种类别:可回收物、厨余垃圾、有害垃圾和其他垃圾。

数据文件包括训练集(有标注)和测试集(无标注),训练集的所有图片分别保存在train文件夹下面的0-39个文件夹中,文件名即类别标签,测试集共有400张待分类的垃圾图片在test文件夹下。

GarbageClasses

【分数评定】

  1. 所有奖励分数均叠加到期末总成绩中
  2. 所有参与竞赛者,奖励1分
  3. 最分数评定高于Baseline的成绩,奖励2分
  4. 额外奖励:第一名奖励10分,第二名奖励7分,第三名奖励5分
  5. 竞赛成果应用到学科(互联网+)竞赛,获奖队伍所有成员奖励20分(校级以上,不含校级)

【提交答案】

  1. 所有内容均在AIStudio上进行提交,提交时包含源代码和运行结果
  2. 数据集下载地址:https://aistudio.baidu.com/aistudio/datasetdetail/71361
  3. 提交完整程序代码,包括运行过程
  4. 提交结果文件。结果文件为.txt 文件格式,命名为model_result.txt,文件内的字段需要按照指定格式写入。
    • 每个类别的行数和测试集原始数据行数应一一对应,不可乱序。
    • 输出结果应检查是否为400行数据,否则成绩无效。
    • 输出结果文件命名为model_result.txt,一行一个类别标签(数字)
      样例如下:

···
35
3
2
37
10

【代码框架】

一、数据集准备

1.1 数据清洗

1.2 图像路径及标签列表生成

二、全局参数设置、数据预处理及基本功能函数定义

2.1 导入依赖及全局参数配置

2.2 数据集类的定义及数据预处理

2.3 定义过程可视化函数

2.4 定义日志输出函数

三、模型训练与评估

3.1 配置网络模型

3.2 定义验证函数

3.3 定义训练函数

3.4 训练主函数

3.5 离线测试

四、模型测试与应用

4.1 导入依赖库及全局参数配置

4.2 单样本预测

4.3 批量预测

五、实验结果及评价

下面我们将在ResNet50, ResNet18, Mobilenetv2, VGG16四个模型对垃圾分类进行评估,所有模型设置batch_size=32。所有模型均采用Imagenet预训练模型进行训练,训练集为train。测试结果需要上传至竞赛平台进行获取。

1. 实验结果

模型名称 Baseline模型 ImageNet预训练 learning_rate best_epoch val_top1_acc val_top5_acc loss test_acc 单batch时间/总训练时间(s) 可训练参数/总参数
Garbage_Resnet18 ResNet18 0.001
Garbage_Resnet50 ResNet50 0.001
Garbage_Resnet50 ResNet50 0.01 18/20 0.56211 0.85059 0.05025 4.35/3614.5 23,643,112/23,536,872
Garbage_VGG16 VGG16 0.001
Garbage_Mobilenetv2 Mobilenetv2 0.001 9/10 0.67529 0.92133 0.036198 6.6/1507.1 2,241,000/2,309,224

2. 结果输出

经过初步训练,在XX个epoch下,XXXX模型具有最好的性能。因此,我们固定所有参数,将训练集改为trainval,进行二次训练。训练过程中观察loss曲线,当曲线平缓时停止训练。最终的Baseline模型使用test子集在trainval输出的模型上进行推理。