【DSW Gallery】基于YOLOX模型和iTAG标注数据的图像检测示例

本文涉及的产品
模型在线服务 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和PAI-iTAG标注的检测数据训练YOLOX模型。

直接使用

请打开基于YOLOX模型和iTAG标注数据的图像检测示例,并点击右上角 “ 在DSW中打开” 。

image.png

EasyCV图像检测-YOLOX-iTAG

  本文将以YOLOX模型为例,介绍如何基于easyCV使用PAI-iTAG标注的数据进行目标检测模型训练和预测。

  YOLO系列的开发主要包括V1(2015),V2(2016),V3(2018),V4 (2020)以及V5(2020)等一系列版本。YOLO 是由Joseph Redmon 和 Ross Girshick 在 2015 年的 You Only Look Once: Unified, Real-Time Object Detection (Link) 中提出的单阶段目标检测网络。YOLO系列以其响应速度快、精度高、结构简单、部署方便等特点受到工程研究人员的青睐。同时,YOLO系列由于需要人工设定样本正负,导致模型存在泛化能力差的问题。针对此类问题,旷视科技研究院BaseDetection团队结合学术界的先进成果和工程实践提出了YOLOX.

  YOLOX在YOLO系列地基础上汲取近些年学术界目标检测地最新功效并承继YOLO系列简单部署的特性.除此之外,YOLOX设计了Decoupled Head、Data Aug、Anchor Free和SimOTA部件。其代码目前支持各个平台(MegEngine、TensorRT、ONNX、OpenVino 和 ncnn)的部署。

  在EasyCV中,我们提供了在COCO2017数据集上多种规格的预训练模型(Link)可用于下游任务的fintune。

  本文将介绍如何在pai-dsw基于EasyCV和PAI-iTAG标注数据快速使用YOLOX进行图像检测模型的训练、推理。

运行环境要求

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 *

图像检测模型训练&预测

下面示例介绍如何利用PAI-iTAG标注的检测数据集,进行yolox检测模型的训练

数据准备

可以使用PAI-iTAG标注的自定义数据集,也可以使用我们提供了示例iTAG数据快速走通流程

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

使用easycv提供的工具easycv.tools.prepare_data.convert_det_itag2ra将iTAG的标注文件转换成easycv格式

使用该工具需要指定如下参数

  • itag_label_file:itag标注文件路径,如下示例中的itag_det_example/pet_det.manifest
  • raw_label_dir:转换后的标签文件保存目录,会在该目录下生成train和val文件夹,分别代表训练和验证标签,如下示例中的 itag_det_example/labels
  • class_path:该数据的的标签名列表文件,如示例中的 itag_det_example/class_list.txt
  • split:代表是否分隔训练验证集
  • split_ratio:代表分隔验证集的比例,如示例中为0.2,代表20%的数据会分配给验证集
! python -m easycv.tools.prepare_data.convert_det_itag2raw itag_det_example/pet_det.manifest itag_det_example/labels itag_det_example/class_list.txt --split --split_ratio 0.2

转换后训练所需的文件目录如下

├── imgs
│   ├── Abyssinian_100.jpg
│   ├── Abyssinian_103.jpg
│   ├── Abyssinian_104.jpg
│   ├── Abyssinian_105.jpg
│   ├── Abyssinian_106.jpg
        ...
│   └── havanese_9.jpg
├── labels
│   ├── train
│   │   ├── Abyssinian_100.txt
│   │   ├── Abyssinian_104.txt
│   │   ├── Abyssinian_105.txt
            ...
│   │   └── havanese_9.txt
│   └── val
│       ├── Abyssinian_103.txt
│       ├── Abyssinian_107.txt
│       ├── Abyssinian_108.txt
            ....
│       ├── Abyssinian_111.txt
│       └── havanese_91.txt

训练模型

下载示例配置文件, 进行YOLOX-S模型训练

! rm -rf yolox_m_raw.py
! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/configs/detection/yolox/yolox_m_raw.py

为了适配小数据,我们对配置文件yolox_m_raw.py做如下字段的修改,减少训练epoch数目、学习率
如果使用自定义的数据集,则还需要修改train_dataset和val_dataset中的图片数据路径img_root_path、标签文件路径label_root_path、以及类别列表CLASSES

total_epochs = 50
#optimizer.lr -> 0.002
optimizer = dict(
    type='SGD', lr=0.002, momentum=0.9, weight_decay=5e-4, nesterov=True)
# log_config.interval 5
log_config = dict(interval=5)

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

!python -m torch.distributed.launch --nproc_per_node=1 \
/opt/conda/lib/python3.7/site-packages/easycv/tools/train.py \
yolox_m_raw.py --work_dir work_dir/example_det --launcher pytorch --fp16 \
--load_from http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/detection/yolox/yolox_m_bs16_lr002/epoch_300.pth

预测

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

! ls work_dir/example_det/*pt*

导入模型权重,并预测测试图片的检测结果

import cv2
from easycv.predictors import YoloXPredictor
output_ckpt = 'work_dir/example_det/epoch_50_export.pt'
detector = YoloXPredictor(output_ckpt)
output = detector(['itag_det_example/imgs/Abyssinian_1.jpg'])
print(output)
detector.visualize('itag_det_example/imgs/Abyssinian_1.jpg', output[0], out_file='out.jpg')

epoch_50_export.pt文件上传至OSS,使用PAI-EAS中的easycv predictor即可部署在线服务


相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
机器学习/深度学习 数据处理 对象存储
阿里云机器学习平台PAI智能标注Quick Start
智能标注(iTAG)是一款智能化数据标注平台,支持图像、文本、视频、音频等多种数据类型的标注以及多模态的混合标注。智能标注(iTAG)提供了丰富的标注内容组件和题目组件,您可以直接使用平台预置的标注模板,也可以根据自己的场景自定义模板进行数据标注。本文以图片标注为例演示该功能的使用。
5747 1
阿里云机器学习平台PAI智能标注Quick Start
|
6月前
|
人工智能 自然语言处理 物联网
S3FT选择性自监督微调:通过智能选择训练样本提升大模型整体表现
选择性自我监督微调(S3FT)是一种创新的大语言模型微调方法,通过语义等价性判断器识别模型生成的正确响应,并结合标准答案优化模型。相比传统监督微调,S3FT在特定任务上表现更优,显著提升跨域泛化能力,有效缓解灾难性遗忘问题。实验结果显示,S3FT在多个基准测试中表现出色,尤其在阅读理解和领域外任务上优势明显。
181 70
S3FT选择性自监督微调:通过智能选择训练样本提升大模型整体表现
|
7月前
|
人工智能 自然语言处理 PyTorch
InspireMusic:阿里通义实验室开源的音乐生成模型,支持文本或音频生成多种风格的音乐
阿里通义实验室开源的音乐生成技术,支持通过简单描述快速生成多种风格的高质量音乐作品。
1157 4
|
4月前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
2016 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
12月前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
5403 19
|
9月前
|
SQL 缓存 关系型数据库
MySQL Limit实现原理
本文深入解析了MySQL中`LIMIT`子句的实现原理及其在分页、性能优化等场景下的应用技巧。文章详细介绍了`LIMIT`的基本语法、MySQL内部处理流程,以及如何通过索引优化、覆盖索引等策略提升分页查询的性能,并提供了实践建议。
699 3
|
11月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
977 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
TensorFlow 算法框架/工具 Android开发
使用YOLOv5进行工业检测(如裂纹、划痕、破损等)
使用YOLOv5进行工业检测(如裂纹、划痕、破损等)
3415 1
|
存储 资源调度 算法
m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件
m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件
283 1
|
分布式计算 DataWorks MaxCompute
阿里云PAI Studio Python脚本组件使用Quick Start
PAI-Studio提供自定义Python脚本的功能,您可以使用该组件运行自定义的Python函数,并且支持自定义安装依赖包。本文为您介绍该组件的配置详情,包括自定义输入输出桩数量、脚本设置及执行配置。本文通过使用Python脚本读取ODPS上游表,演示Python脚本组件的使用。
21825 3
阿里云PAI Studio Python脚本组件使用Quick Start

热门文章

最新文章