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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 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实现植物大战僵尸小游戏(附源码 有注释)
2443 1
【计算机网络】第三章 数据链路层(可靠传输)
【计算机网络】第三章 数据链路层(可靠传输)
|
26天前
|
机器学习/深度学习 传感器 编解码
DINOv3上手指南:改变视觉模型使用方式,一个模型搞定分割、检测、深度估计
DINOv3是Meta推出的自监督视觉模型,支持冻结主干、仅训练轻量任务头即可在分割、深度估计等任务上达到SOTA,极大降低训练成本。其密集特征质量优异,适用于遥感、工业检测等多领域,真正实现“一个模型走天下”。
615 2
DINOv3上手指南:改变视觉模型使用方式,一个模型搞定分割、检测、深度估计
|
8月前
|
人工智能 JSON 安全
酒店旅游API:数据交互的隐形桥梁——以携程API为例
携程API提供酒店旅游行业的实时数据互通、业务自动化及生态扩展功能,涵盖酒店详情获取、搜索、房态管理、订单处理和支付等核心接口。技术架构采用微服务集群与数据中台,支持高并发和金融级安全防护。挑战包括高并发、数据一致性和商业博弈,未来将融合AI、元宇宙和区块链技术,实现智能旅游体验。
|
11月前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
543 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
10月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
427 1
|
Java Spring
快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持
这是一个简单的配置示例,用于在Spring Boot应用程序中实现CORS支持。根据你的项目需求,你可能需要更详细的配置来限制允许的来源、方法和标头。
1271 3
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
|
机器学习/深度学习 监控 安全
基于Java的智能视频监控系统设计与实现
基于Java的智能视频监控系统设计与实现
|
Unix Linux Windows
linux rzsz(lrzsz)安装
linux rzsz(lrzsz)安装
412 0

热门文章

最新文章