【DSW Gallery】基于EasyCV的STDC图像语义分割示例

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文将为您介绍如何在PAI-DSW中使用EasyCV训练轻量化语义分割模型STDC

直接使用

请打开基于EasyCV的STDC图像语义分割示例,并点击右上角 “ 在DSW中打开” 。

image.png

EasyCV语义分割-STDC

  本文将以STDC模型为例,介绍如何基于EasyCV进行语义分割模型训练和预测。

  STDC(Short-Term Dense Concatenate network)是一种轻量化的语义分割模型,通过轻量化的STDC模块和边缘学习分支,在Cityscape数据集上能够达到71.9%的mIOU,同时在NVIDIA GTX 1080Ti上实现250FPS的速度。

运行环境要求

modelscope:tf1.15torch1.11-gpu-py37-cu113-ubuntu20.04 镜像, GPU机型 P100 or V100, 内存 32G

安装依赖包

1、安装mmcv-full

# 根据cuda和torch版本
! pip install -U openmim && mim install mmcv-full==1.6.1

2、安装EasyCV算法包

可以通过如下命令安装,也可以拉取最新EasyCV代码进行安装

! echo y | pip uninstall pai-easycv && pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/pkgs/whl/2023_02/pai_easycv-0.9.0-py3-none-any.whl
! echo y | pip uninstall mmdet

3、简单验证

from easycv.apis import *

图像语义分割模型训练&预测

下面示例将介绍如何基于EasyCV STDC算法训练语义分割模型,并进行预测。

数据准备

可以使用我们提供的示例数据快速走通流程,也可以使用自定义的数据集进行模型训练

! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/small_cityscape_raw/small_cityscapes_raw.tar.gz && tar -zxf small_cityscapes_raw.tar.gz

该数据是提取部分cityscape数据,并将标签文件转换成了easycv所需的分割格式(标签文件是单通道的png图片,图片上的像素值即代表了label id)

文件目录如下

small_cityscapes_raw
├── imgs
│   ├── train
│   │   ├── aachen_000000_000019.png
│   │   ├── aachen_000001_000019.png
            ...
│   │   └── aachen_000173_000019.png
│   └── val
│       ├── bremen_000000_000019.png
│       ├── bremen_000001_000019.png
            ...
│       └── bremen_000315_000019.png
└── labels
    ├── train
    │   ├── aachen_000000_000019.png
    │   ├── aachen_000001_000019.png
            ...
    │   └── aachen_000173_000019.png
    └── val
        ├── bremen_000000_000019.png
        ├── bremen_000001_000019.png
            ...

训练模型

下载示例配置文件, 进行STDC模型训练

! rm -rf stdc1_raw_8xb6_e1290.py
! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/configs/segmentation/stdc/stdc1_raw_8xb6_e1290.py

为了适配小数据,我们对配置文件stdc1_raw_8xb6_e1290.py做如下字段的修改,减少训练epoch数目

如果使用自定义的数据集,则还需要修改config中数据集路径相关配置、以及类别数目和类别名配置

total_epochs = 10
!python -m torch.distributed.launch --nproc_per_node=1 \
/opt/conda/lib/python3.7/site-packages/easycv/tools/train.py \
stdc1_raw_8xb6_e1290.py --work_dir work_dir/example_seg --launcher pytorch --fp16

预测

查看训练产生的模型文件,其中_export.pt结尾的模型文件是最终导出用来做推理的模型

! ls work_dir/example_seg/*pt*

导入模型权重,并预测测试图片的检测结果,这里由于在小数据集上无法充分训练得到比较好的结果,这里提供在cityscape全量数据上训练的模型进行预测

! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/segmentation/stdc/stdc1_cityscapes/epoch_1250_export.pth
from easycv.predictors.segmentation import SegmentationPredictor
output_ckpt = 'epoch_1250_export.pth'
detector = SegmentationPredictor(output_ckpt)
output = detector(['small_cityscapes_raw/imgs/val/bremen_000000_000019.png'])
print(output)
detector.show_result('small_cityscapes_raw/imgs/val/bremen_000000_000019.png', output[0]['seg_pred'], out_file='out.jpg')
from PIL import Image
display(Image.open('out.jpg'))

将导出的模型文件上传至OSS,使用PAI-EAS中的easycv predictor即可部署在线服务

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
机器学习/深度学习 自然语言处理 文字识别
【计算机视觉】CLIP:连接文本和图像(关于CLIP的一些补充说明)
我们推出了一个名为CLIP的神经网络,它可以有效地从自然语言监督中学习视觉概念。CLIP可以应用于任何视觉分类基准,只需提供要识别的视觉类别名称,类似于GPT-2和GPT-3的“零样本”功能。
|
机器学习/深度学习 算法 PyTorch
OpenCV-图像着色(采用DNN模块导入深度学习模型)
OpenCV-图像着色(采用DNN模块导入深度学习模型)
201 0
|
机器学习/深度学习 编解码 人工智能
基于FNC(全卷积神经网络)及PASCAL-VOC数据集做图像语义分割(附代码)
基于FNC(全卷积神经网络)及PASCAL-VOC数据集做图像语义分割(附代码)
158 0
|
机器学习/深度学习 PyTorch 算法框架/工具
使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成下
生成器的结构应与鉴别器相逆,因此生成器不再使用卷积操作,而是使用卷积的逆向操作,我们称之为转置卷积(transposed convolution)。
|
机器学习/深度学习 PyTorch 算法框架/工具
使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成 上
使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成 上
|
机器学习/深度学习 并行计算 数据可视化
【DSW Gallery】EasyCV-基于关键点的视频分类示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以基于关键点的视频分类为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】EasyCV-基于关键点的视频分类示例
|
缓存 自然语言处理 Shell
【DSW Gallery】基于CK-BERT的中文序列标注
EasyNLP提供多种模型的训练及预测功能,旨在帮助自然语言开发者方便快捷地构建模型并应用于生产。本文以序列标注(命名实体识别)为例,为您介绍如何在PAI-DSW中使用EasyNLP。
【DSW Gallery】基于CK-BERT的中文序列标注
|
算法 PyTorch 算法框架/工具
【DSW Gallery】基于YOLOX模型和iTAG标注数据的图像检测示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文将为您介绍如何在PAI-DSW中使用EasyCV和PAI-iTAG标注的检测数据训练YOLOX模型。
【DSW Gallery】基于YOLOX模型和iTAG标注数据的图像检测示例
|
算法 PyTorch 算法框架/工具
【DSW Gallery】基于EasyCV的视频分类示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以视频分类为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】基于EasyCV的视频分类示例
|
机器学习/深度学习 机器人 PyTorch
使用LabVIEW实现基于pytorch的DeepLabv3图像语义分割
DeepLabv3图像语义分割在LabVIEW中的部署
255 0