【我与ModelArts的故事】基于ModelArts实现场景化AI图像垃圾分类体验
1、什么是ModelArts
ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。
“一站式”是指AI开发的各个环节,包括数据处理、算法开发、模型训练、模型部署都可以在ModelArts上完成。从技术上看,ModelArts底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。同时,ModelArts支持Tensorflow、PyTorch、MindSpore等主流开源的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/30个epoch下降到原来的十分之一
- launcher填入none,gpu_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
- 点赞
- 收藏
- 关注作者
评论(0)