作者:欧新宇(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文件夹下。
.txt
文件格式,命名为model_result.txt,文件内的字段需要按照指定格式写入。
···
35
3
2
37
10
载入数据库类模块
创建数据迭代器
下面我们将在ResNet50, ResNet18, Mobilenetv2, VGG16四个模型对垃圾分类
进行评估,所有模型设置batch_size=32。所有模型均采用Imagenet预训练模型进行训练,训练集为train。测试结果需要上传至竞赛平台进行获取。
模型名称 | 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 |
经过初步训练,在XX个epoch下,XXXX模型具有最好的性能。因此,我们固定所有参数,将训练集改为trainval,进行二次训练。训练过程中观察loss曲线,当曲线平缓时停止训练。最终的Baseline模型使用test子集在trainval输出的模型上进行推理。