1 赛题背景

为进一步加快“6+5+6+1”西安现代产业以及养老服务等行业领域急需紧缺高技能人才培养,动员广大职工在迎十四运创文明城、建设国家中心城市、助力西安新时代追赶超越高质量发展中展现新作为,市委组织部、市人社局、市总工会决定举办西安市2021年“迎全运、强技能、促提升”高技能人才技能大赛(全市计算机程序设计员技能大赛)。

随着我国经济的发展和城市化进程的加速,生活垃圾对城市环境的威胁日益增加。因此,如何高效、环保地解决处理生活垃圾迫在眉睫。生活垃圾的分类和处理可以有效地增加垃圾处理的效率,也因此成为社会关注的热点。然而,对垃圾分类的知识普及以及工作落实一直以来都是一个难题。本次活动将以垃圾分类为主题,结合人工智能、大数据、计算机视觉技术,实现生活垃圾的智慧分拣。

2 数据说明

本次比赛将提供10,000张垃圾图片,其中8000张用于训练集,1,000张用于测试集。其中,每张图片中的垃圾都属于纸类、塑料、金属、玻璃、厨余、电池这六类垃圾中的一类。

数据文件:

  • train.zip,训练集,包括7831张垃圾图片。

  • validation.zip,测试集,包括2014张垃圾图片。

  • train.csv,训练集图片标签,标签为A-F,分别代表厨余、塑料、金属、纸类、织物、玻璃。

3 数据分析

首先我们可以对赛题数据进行可视化,这里使用opencv读取图片并进行操作:

def show_image(paths):plt.figure(figsize=(10, 8))    for idx, path in enumerate(paths):plt.subplot(1, len(paths), idx+1)img = cv2.imread(path)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(img)plt.xticks([]); plt.yticks([])

从图中可以看出图片主体尺寸较少,但背景所包含的像素较多。接下来可以对类别数量进行统计,在数据集中厨余最多,玻璃垃圾最少。数据集类别整体还是比较均衡,样本比例没有相差很大。

参考上面的操作,可以对数据集每类图片进行可视化:

4 赛题建模

由于赛题任务是一个非常典型的图像分类任务,所以可以直接使用CNN模型训练的过程来完成。在本地比赛中如果使用得到的预训练模型越强,则最终的精度越好。

在构建模型并进行训练之前,非常建议将训练集图片提前进行缩放,这样加快图片的读取速度,也可以加快模型的训练速度。具体的缩放代码如下:

import cv2, glob, osimport numpy as npos.mkdir('train_512')
os.mkdir('validation_512')for path in glob.glob('./train/*'):    if os.path.exists('train_512/' + path.split('/')[-1]):        continueimg = cv2.imread(path)    try:img = cv2.resize(img, (512, 512))cv2.imwrite('train_512/' + path.split('/')[-1], img)    except:        passfor path in glob.glob('./validation/*'):    if os.path.exists('validation_512/' + path.split('/')[-1]):        continueimg = cv2.imread(path)    try:img = cv2.resize(img, (512, 512))cv2.imwrite('validation_512/' + path.split('/')[-1], img)    except:img = np.zeros((512, 512, 3))cv2.imwrite('validation_512/' + path.split('/')[-1], img)

Pytorch版本baseline

如果使用Pytorch,则需要按照如下步骤进行:

  • 定义数据集

  • 定义模型

  • 模型训练和预测

class BiendataDataset(Dataset):    def __init__(self, img_path, img_label, transform=None):self.img_path = img_pathself.img_label = img_labelself.transform = transform    def __getitem__(self, index):        try:img = Image.open(self.img_path[index]).convert('RGB')        except:index = 0img = Image.open(self.img_path[index]).convert('RGB')        if self.transform is not None:img = self.transform(img)label = torch.from_numpy(np.array([self.img_label[index]]))        return img, label    def __len__(self):        return len(self.img_path)

预训练模型推荐使用efficientnet,模型精度会更好。

import timm
model = timm.create_model('efficientnet_b4', num_classes=6, pretrained=True, in_chans=3)

具体的数据扩增方法为:

transforms.Compose([transforms.Resize((300, 300)),transforms.RandomHorizontalFlip(),transforms.RandomVerticalFlip(),transforms.RandomAffine(5, scale=[0.95, 1.05]),transforms.RandomCrop((256, 256)),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])

TF2.0版本baseline

如果使用TF2.0,则更加简单:

  • 定义ImageDataGenerator

  • 定义模型

  • 模型训练和预测

模型加载代码为:

from efficientnet.tfkeras import EfficientNetB4
models = EfficientNetB4(weights='imagenet', include_top=False)

具体的数据扩增方法为:

train_datagen = ImageDataGenerator(rescale=1. / 255,  # 归一化rotation_range=45,  # 旋转角度width_shift_range=0.1,  # 水平偏移height_shift_range=0.1,  # 垂直偏移shear_range=0.1,  # 随机错切变换的角度zoom_range=0.25,  # 随机缩放的范围horizontal_flip=True,  # 随机将一半图像水平翻转fill_mode='nearest' # 填充像素的方法
)

5 赛题上分思路

如果使用baseline的思路,则可以取得线上0.85的成绩。如果还想取得更优的成绩,可以考虑如下操作:

  1. 对数据集图片的主体物体进行定位&检测。

  2. 通过五折交叉验证,训练得到5个模型然后对测试集进行投票。

  3. 对测试集结果进行数据扩增,然后进行投票。

 baseline地址:https://www.biendata.xyz/media/download_file/21771129e38ed3f5b565af858fcd80b1.zip

参赛办法

扫描下方二维码或点击“阅读原文“

人才认证+奖金,智能分拣挑战赛baseline助力最后冲刺相关推荐

  1. 详解这场图片分类赛baseline,赢取官方人才认证+奖金

    1 赛题背景 为进一步加快"6+5+6+1"西安现代产业以及养老服务等行业领域急需紧缺高技能人才培养,动员广大职工在迎十四运创文明城.建设国家中心城市.助力西安新时代追赶超越高质量 ...

  2. 极智嘉Geek+全柔性智能分拣系统首次落地英国,赋能ASDA拥有更强物流能力

    极智嘉(Geek+)一直以来稳居全球AMR市场占有率第一,成为全球AMR引领者.多年间,极智嘉通过提供全品类物流机器人产品线与解决方案,为实现企业物流智能化升级积极助力.截止目前,极智嘉拥有遍及20多 ...

  3. 海华·垃圾分类AI挑战赛baseline分享,评测得分最高至0.85

    点击蓝字关注biendata 导语 本篇baseline采用torchvision内置的目标检测模型,LB可以达到76左右.如果为了进一步提高成绩,可以把主办方提供的简单样本也加入训练,以及增加更多的 ...

  4. 世界智能驾驶挑战赛圆满落幕,智能科技引领汽车行业创新发展

    车控快讯(文/每日一CHEK)2023世界智能驾驶挑战赛(WIDC)于5月19-21日在天津市东丽湖成功举办,吸引了百余支赛队和行业专家学者参与.该赛事是世界智能大会(WIC)的重要组成部分,由多个政 ...

  5. 阿里云化身“智能云管”,助力中国联通首次实现大规模平台自主运维

    中国联通阿里飞天平台运维团队首次实现大规模平台自主运维,阿里云 TAM 团队化身"智能云管",携手中国联通开启运维合作新模式. 近日,中国联通阿里飞天平台运维团队(以下简称&quo ...

  6. 2022科大讯飞商品销量智能预测挑战赛—参赛总结

    2022科大讯飞商品销量智能预测挑战赛-参赛总结 目录 2022科大讯飞商品销量智能预测挑战赛-参赛总结 摘要 赛题任务 特征构建 训练方案 模型融合 赛题得分 写在最后 摘要 比赛网址:https: ...

  7. ASPICE认证是智能汽车研发需做的认证

    如果问汽车领域,大家最近都在忙什么,我想那一定是智能驾驶产品的开发了,不是在做智能驾驶产品,就是在为做智能驾驶产品做准备. 我的很多客户都是在做智能驾驶产品开发.为什么忙着做智能驾驶产品?答案不言而喻 ...

  8. RLChina 智能体挑战赛 - 壬寅年冬赛季(桌面曲棍球)

    记录第一次RL比赛,正赛第二及第 Jidi 环境介绍 在本次RLChina 智能体挑战赛 - 壬寅年冬赛季中,采用的比赛环境是奥林匹克桌面曲棍球.简而言之双方球员从自己球门出生点出发,将出生在中轴线的 ...

  9. 魏鹏机器人_痴迷农业科技,他发明智能分拣机器人给胡萝卜照CT

    "自动按照国际标准对果蔬的大小.果形.颜色.缺陷进行品质分级,颜值高的胡箩卜装箱出口销售,颜值低的可以进行再加工."日前,在位于莱西市店埠镇的青岛有田农业发展有限公司,记者看到一台 ...

最新文章

  1. 直播回顾 | 关于Apollo 5.0控制在环仿真技术的分享
  2. 启停系统错误_关掉自动启停系统,就可以用普通蓄电池代替启停蓄电池吗?
  3. 这是我的第一个python程序怎么打-我的第一个Python程序(运行)
  4. 用url传值,如何传多个值
  5. SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法
  6. 常用电子接口大全,遇到不认识的,就翻出来对照辨认!
  7. 【CSWS2014 Summer School】大数据下的游戏营销模式革新-邓大付
  8. Linux创建swap文件
  9. 【SimpleITK】分割label覆盖到原图上显示
  10. 使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配
  11. 手动触发事件_HBase中MemStore的刷写触发机制
  12. 解决办法:atoi不能将CString 转化为char *
  13. 计算机代码大全喜欢你,微信示爱代码大全 七夕情人节微信翻译表白代码2021
  14. CMD常用命令大全(值得收藏)
  15. Jmeter脚本录制和压测
  16. Nodejs页面访问加载静态资源
  17. 如何免费注册申请到【苹果开发者账号】
  18. 期货对冲套利实战知识
  19. java史上最全面试题(转载于骆昊)
  20. matlab对xml文件操作,Matlab读写xml文件

热门文章

  1. PDS+VL Motion对发动机曲轴系统不平衡载荷进行仿真分析
  2. TensorFlow 第二步 小试牛刀:一个神经元
  3. 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
  4. 消息中间件的技术选型心得-RabbitMQ ActiveMQ和ZeroMQ
  5. GOF之创建型模式(重点)
  6. ORM(手写简单ORM)
  7. mysql入参映射_Mybatis中的Mapper映射Sql中传参类型(如Bean,基本类型,List...)与取值的方式 与foreach的几种用法!!...
  8. echart 设置y轴间隔_ECharts 柱状图之间的间距怎么调整的?y轴的线怎么调出来? 做成表格状。...
  9. java未知变量的类型_Java语言中类、变量及方法的声明 | 学步园
  10. mysql有热备设置_Mysql数据热备配置与操作方法