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

简介: 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+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
定位技术 Python
【python】pygame实现植物大战僵尸小游戏(附源码 有注释)
【python】pygame实现植物大战僵尸小游戏(附源码 有注释)
2798 1
【计算机网络】第三章 数据链路层(可靠传输)
【计算机网络】第三章 数据链路层(可靠传输)
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
23710 3
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
751 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
565 1
|
Kubernetes Cloud Native Linux
CKAD考试实操指南(一)--- 登顶CKAD:征服考试的完美蓝图
Certified Kubernetes Application Developer (CKAD)是由Linux Foundation和Cloud Native Computing Foundation (CNCF)联合推出的一项专业认证,旨在验证候选人是否具备Kubernetes应用开发者所需的技能、知识和能力。CKAD考试是一个在线的、监考的、基于性能的考试,由一系列需要在命令行中解决的性能型任务(问题)组成,考试时间为2小时。
1718 0
CKAD考试实操指南(一)--- 登顶CKAD:征服考试的完美蓝图
|
Java Spring
快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持
这是一个简单的配置示例,用于在Spring Boot应用程序中实现CORS支持。根据你的项目需求,你可能需要更详细的配置来限制允许的来源、方法和标头。
1493 3
|
存储 编译器 Go
深入理解Go Workspace的三个关键目录结构
【8月更文挑战第31天】
833 0
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
|
Unix Linux Windows
linux rzsz(lrzsz)安装
linux rzsz(lrzsz)安装
726 0

热门文章

最新文章