【DSW Gallery】 基于EasyCV的Mask2Former图像分割示例

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

直接使用

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

lQLPJxbfV4fH_m7NA3DNCTqwU4NFKUFsR14Dbv1c5wCFAA_2362_880.png

EasyCV图像分割-Mask2Former

Mask2Former是一个统一的Transformer-based图像分割架构,能够在相同的模型结构下实现语义分割、实例分割以及全景分割任务。

本文将介绍如何利用EasyCV基于Mask2Former进行图像分割模型的训练,以及如何利用训练好的模型进行图像分割预测

运行环境要求

PAI-Pytorch镜像 or 原生Pytorch1.8+以上环境 GPU机器, 内存32G以上

安装依赖包

注: 在PAI-DSW docker中无需安装相关依赖,可跳过此部分 在本地notebook环境中执行

1、 首先,安装pytorch和对应版本的torchvision,支持Pytorch1.8以上版本

# install pytorch and torch vision
! conda install --yes pytorch==1.10.0 torchvision==0.11.0 -c pytorch

2、获取torch和cuda版本,安装对应版本的mmcv和nvidia-dali

import torch
import os
os.environ['CUDA']='cu' + torch.version.cuda.replace('.', '')
os.environ['Torch']='torch'+torch.version.__version__.replace('+PAI', '')
!echo "cuda version: $CUDA"
!echo "pytorch version: $Torch"
# install some python deps
! pip install mmdet
! pip install mmcv-full==1.4.4 -f https://download.openmmlab.com/mmcv/dist/${CUDA}/${Torch}/index.html
! pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/third_party/nvidia_dali_cuda100-0.25.0-1535750-py3-none-manylinux2014_x86_64.whl

3、 安装EasyCV算法包

pip install pai-easycv

4、 简单验证

from easycv.apis import *

5、安装deformable_attention

import easycv
print(easycv.__file__)
# 进入easycv安装目录编译deformable_attention
! cd /home/pai/lib/python3.6/site-packages/easycv/thirdparty/deformable_attention && python setup.py build install 

数据准备

接下来介绍基于coco数据集的实例分割训练示例,你可以下载COCO2017数据,也可以使用我们提供了示例COCO数据

! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/small_coco_demo/small_coco_demo.tar.gz && tar -zxf small_coco_demo.tar.gz
# 重命名文件夹
! mkdir -p data/  && mv small_coco_demo database/coco

data/coco格式如下

data/coco/
├── annotations
│   ├── instances_train2017.json
│   └── instances_val2017.json
├── train2017
│   ├── 000000005802.jpg
│   ├── 000000060623.jpg
│   ├── 000000086408.jpg
│   ├── 000000118113.jpg
│   ├── 000000184613.jpg
│   ├── 000000193271.jpg
│   ├── 000000222564.jpg
│       ...
│   └── 000000574769.jpg
└── val2017
    ├── 000000006818.jpg
    ├── 000000017627.jpg
    ├── 000000037777.jpg
    ├── 000000087038.jpg
    ├── 000000174482.jpg
    ├── 000000181666.jpg
    ├── 000000184791.jpg
    ├── 000000252219.jpg
         ...
    └── 000000522713.jpg

模型训练

这个Demo中我们采用Mask2Former图像分割算法训练ResNet50主干网络, 下载示例配置文件

! rm -rf mask2former_r50_8xb2_e50_instance.py
! wget https://raw.githubusercontent.com/alibaba/EasyCV/master/configs/segmentation/mask2former/mask2former_r50_8xb2_e50_instance.py

为了适配小数据,我们对配置文件mask2former_r50_8xb2_e50_instance.py做如下字段的修改,减少训练epoch数目,加大打印日志的频率

total_epochs = 3
#optimizer.lr -> 0.000001
# optimizer
optimizer = dict(
    type='AdamW',
    lr=0.000001,
    weight_decay=0.05,
    eps=1e-8,
    betas=(0.9, 0.999),
    paramwise_options={
        'backbone': dict(lr_mult=0.1),
        'query_embed': dict(weight_decay=0.),
        'query_feat': dict(weight_decay=0.),
        'level_embed': dict(weight_decay=0.),
        'norm': dict(weight_decay=0.),
    })
# log_config.interval 1
log_config = dict(interval=1)

注意: 如果是使用COCO完整数据训练,为了保证效果,建议使用单机8卡进行训练;

为了保证模型效果,我们在预训练模型基础上finetune, 执行如下命令启动训练

!python -m easycv.tools.train mask2former_r50_8xb2_e50_instance.py --work_dir work_dir/segmentatino/mask2former_r50_instance --load_from http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/segmentation/mask2former_r50_instance/epoch_50.pth

预测

下载测试图片

! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/segmentation/000000123213.jpg

使用训练好的模型进行图像分割预测

import torch
import cv2
from IPython.display import Image
from easycv.predictors.segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='work_dir/segmentatino/mask2former_r50_instance/epoch_3.pth',
                                 config_file='mask2former_r50_8xb2_e50_instance.py',
                                 task_mode='instance')
img = cv2.imread('000000123213.jpg')
predict_out = predictor(['000000123213.jpg'])
instance_img = predictor.show_instance(img, **predict_out[0])
cv2.imwrite('instance_out.jpg',instance_img)
display(Image('000000123213.jpg'))
display(Image('instance_out.jpg'))


相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
Linux 网络安全 Android开发
振南技术干货集:各大平台串口调试软件大赏(2)
振南技术干货集:各大平台串口调试软件大赏(2)
|
Java Maven Spring
SpringBoot-读取配置文件(映射法)
本文是关于Spring Boot框架下读取配置文件的指南。该指南介绍了如何通过注解和属性文件来加载和访问应用程序的配置信息。Spring Boot提供了简单而强大的功能,可以轻松地加载各种类型的配置文件,并将其映射到Java对象中。通过使用@ConfigurationProperties注解,或者使用@Value注解从配置文件中读取属性值。
731 0
|
6月前
|
XML JSON API
深入研究:1688 商品详情 API 详解
1688商品详情API助力电商数据分析与决策!通过该接口,开发者可基于商品ID快速获取1688平台上商品的标题、价格、规格、图片等多维信息。企业能优化商品策略,提升竞争力。使用前需注册开发者账号、创建应用并申请权限,调用时传入必要参数(如app_key和商品ID),返回JSON/XML格式数据,涵盖商品基本信息、描述、图片及商家资料等内容。
|
8月前
|
机器学习/深度学习 资源调度 算法
YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS
YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS
3038 6
|
存储 数据采集 数据挖掘
TMDB电影数据分析(上)
TMDB电影数据分析(上)
495 0
|
11月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
388 2
|
弹性计算 Ubuntu 安全
阿里云服务器镜像选择全指南:不同类型的镜像区别及选择参考
阿里云服务器镜像,作为ECS实例的“装机盘”,不仅提供了操作系统,还包含了初始化应用数据和预装软件。选择合适的镜像对于云服务器的性能和稳定性至关重要。本文将详细解析阿里云服务器提供的多种镜像类型,包括公共镜像、自定义镜像、共享镜像、云市场镜像和社区镜像,以供参考和选择。
阿里云服务器镜像选择全指南:不同类型的镜像区别及选择参考
|
12月前
|
数据采集 人工智能 监控
揭秘数据治理:七步工作法&十大准则全解析
数据治理的“七步工作法”与“十大准则”为企业构建科学、系统、高效的数据治理体系提供了重要的指导和借鉴。企业应结合自身实际情况,灵活运用这些方法和准则,充分挖掘数据潜能,赋能业务创新,实现数字化转型的稳健推进。
1061 0
|
自然语言处理 测试技术 API
探索通义语音团队的创新之作 —— FunAudioLLM模型评测
随着人工智能技术的飞速发展,语音识别和语音合成技术在各个领域得到了广泛应用。阿里云推出的“通义语音大模型FunAudioLLM”作为最新的语音处理技术,备受业界关注。本次评测将深入探讨通义语音大模型的功能、性能及其在实际应用中的表现。
|
算法 Go vr&ar
YOLOv8模型yaml结构图理解(逐层分析)
YOLOv8模型yaml结构图理解(逐层分析)
16946 0

热门文章

最新文章