【我与ModelArts的故事】基于ModelArts实现场景化AI图像垃圾分类体验

举报
y-wolfandy 发表于 2023/04/22 22:55:08 2023/04/22
【摘要】 ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。

1、什么是ModelArts


ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端--云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。

一站式是指AI开发的各个环节,包括数据处理、算法开发、模型训练、模型部署都可以在ModelArts上完成。从技术上看,ModelArts底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。同时,ModelArts支持TensorflowPyTorchMindSpore等主流开源的AI开发框架,也支持开发者使用自研的算法框架,匹配您的使用习惯。


2、项目简介


垃圾分类是个比较古老的行业,需要利用大量人力来完成,一些城市甚至号召志愿者参与垃圾分类工作的监督工作。而利用AI分类技术,则可以快速分拣垃圾,减轻志愿者的工作,降低人力成本。智能化分拣可用在居民投递的垃圾箱终端设备上,利用训练垃圾的检测模型,识别厨余垃圾里是否有其他垃圾,如塑料袋、纸张等。如果有,这款产品可以把信息上报给用户,加以提醒:「你这次投递错了,下不为例」;同时也会提醒运营人员进行手动分拣。

本次测试项目是图像分类下任务子类,使用efficientnet-b4骨干网络进行垃圾分类。数据集为华为云AI Gallery上提供的数据集。详情可参见本案例的关联资产。

该数据集包含8类生活垃圾图片,分别为:厨余垃圾蛋壳、厨余垃圾水果果皮、可回收物塑料玩具、可回收物纸板箱、其他垃圾烟蒂、其他垃圾一次性餐盒、有害垃圾干电池、有害垃圾过期药物。


2.1、项目流程

【数据】 —> 【搭建预处理pipeline -> 【搭建backbone结构】 -> 【搭建neck/head结构】 -> 【训练】 -> 【测试】 -> 【离线推理】 -> 【在线推理】

2.2、案例特点

通过ModelArts的efficientnet实现垃圾分类功能。

3、操作指导


3.1、准备环境

运行时依赖环境

  • moxing>=2.0
  • torch>=1.4
  • mmcv-full>=1.2.5,<1.3.0 (如果环境中没有mmcv-full,安装可能会消耗10几分钟)
  • tensorboard
  • 将环境中的pycocotools替换成mmpycocotools
!pip uninstall -y pycocotools

!pip uninstall -y moxing

!pip install "mmcv-full>=1.2.5,<1.3.0" -I

!wget https://modelarts-cnnorth4-market.obs.cn-north-4.myhuaweicloud.com/moxing-apps/notebooks/release/210705/1_1_ImageClassification_Primary/requirements.txt -O requirements.txt

!pip install -r requirements.txt

3.2、准备数据

3.2.1、下载数据集

将8类垃圾数据下载到/tmp/dataset_garbages8下,并解压缩

!mkdir -p /tmp/dataset_garbages8

!wget --no-check-certificate https://modelarts-cnnorth4-market.obs.cn-north-4.myhuaweicloud.com/dataset-apps/image_classification/8-garbages/8-garbage.zip -O 8-garbage.zip

!unzip -o 8-garbage.zip -d /tmp/dataset_garbages8


3.2.2、 观察数据集

通过此步操作可看到需筛选的所有垃圾图片,本次操作主要针对所显示的图片进行垃圾分类。

3.2.3、切分数据集

将数据集按照9:1切分为训练集和验证集,并分别保存至/tmp/dataset_garbages8/eval/; 

 

3.2.4、准备预训练模型

下载预训练模型,执行以下命令

!mkdir -p /tmp/pretrained_model/efficientnet/

!wget --no-check-certificate https://modelarts-cnnorth1-market-dataset.obs.cn-north-1.myhuaweicloud.com/moxing_pretrained/efficientnet-b4/adv-efficientnet-b4-44fb3a87.pth -O /tmp/pretrained_model/efficientnet/efficientnet-b4.pth

 

3.2.5、训练

数据集和预训练模型已经准备完毕,开始编写训练脚本,首先引入必要的包。

初始化参数

  • lr_config表示学习率为阶段函数,初始学习率为002,并且在第15/25/30epoch下降到原来的十分之一
  • launcher填入nonegpu_ids填入[0],表示单机单卡训练
  • load_from用于加载预训练模型

work_dir为模型保存路径

 

3.2.6、创建数据预处理和增强方法

3.2.7、创建算法

使用mox.api的方式构建efficientnet_b4,并开始训练。


 

3.2.8、测试

使用刚才训练好的模型,在测试集上做一次精度测试。首先初始化配置

 

3.2.9、离线推理

使用刚才训练好的模型,在验证集上尝试做一次推理,首先初始化配置。 这里演示如何推理一张图片,如果想要推理多个图片,可以将img_path修改为一个路径,那么就会推理这个路径下的所有图片了。

 

3.2.10、在线推理

使用TorchServing

 

启动服务

  • 配置jdk环境变量
  • 配置nvidia环境变量,与终端环境变量不一致

3.2.11、预测结果,并关闭服务

4、结束语


通过此场景化AI,利用MoXing框架通过图片自动识别技术,以实现如上的自动智能分拣的功能,提升了分类效率。


我正在参加【有奖征文第21期】说说你和ModelArts的故事,输出优质产品体验文章,赢开发者大礼包!
https://bbs.huaweicloud.com/blogs/395149

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。