【DSW Gallery】基于YOLOX模型图像检测示例

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

直接使用

请打开基于YOLOX模型图像检测示例,并点击右上角 “ 在DSW中打开” 。

image.png


EasyCV图像检测-YOLOX

  本文将以YOLOX模型为例,介绍如何基于easyCV进行目标检测模型训练和预测。

  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快速使用YOLOX进行图像检测模型的训练、推理。

运行环境要求

PAI-Pytorch 1.8镜像, GPU机型 P100 or V100, 内存 32G

安装依赖包

1、获取torch和cuda版本,并根据版本号修改mmcv安装命令,安装对应版本的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
!echo $Torch
# install some python deps
! pip install --upgrade tqdm
! 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

2、安装EasyCV算法包 注:在PAI-DSW docker中预安装了pai-easycv库,可跳过该步骤

!pip install pai-easycv
# !pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/pkgs/whl/2022_6/pai_easycv-0.3.0-py3-none-any.whl

3、简单验证

from easycv.apis import *

图像检测模型训练&预测

下面示例介绍如何利用cifar10数据,使用ResNet50模型快速进行图像分类模型的训练评估、模型预测过程(需要修改)

数据准备

可以下载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

重命名数据文件,使其和COCO数据格式完全一致

!mkdir -p data/  && mv small_coco_demo data/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

训练模型

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

! rm -rf yolox_s_8xb16_300e_coco.py
! wget https://raw.githubusercontent.com/alibaba/EasyCV/master/configs/detection/yolox/yolox_s_8xb16_300e_coco.py

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

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

注意: 如果是使用COCO完整数据训练,为了保证效果,建议使用单机8卡进行训练; 如果要使用单卡训练,建议降低学习率optimizer.lr

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

!python -m easycv.tools.train yolox_s_8xb16_300e_coco.py --work_dir work_dir/detection/yolox/yolox_s_8xb16_300e_coco --load_from http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/detection/yolox/yolox_s_bs16_lr002/epoch_300.pth

导出模型

导出YOLOX 模型用于预测, 执行如下命令查看训练产生的模型文件

# 查看训练产生的pt文件
! ls work_dir/detection/yolox/yolox_s_8xb16_300e_coco/*.pth

在导出模型前,需要对配置文件进行修改,指定nms的得分阈值

model.test_conf 0.01 -> 0.5

model = dict(
    type='YOLOX',
    num_classes=80,
    model_type='s',  # s m l x tiny nano
    test_conf=0.5,
    nms_thre=0.65)

执行如下命令进行模型导出

!cp yolox_s_8xb16_300e_coco.py yolox_s_8xb16_300e_coco_export.py && sed -i 's#test_conf=0.01#test_conf=0.5#g' yolox_s_8xb16_300e_coco_export.py
!python -m easycv.tools.export yolox_s_8xb16_300e_coco_export.py work_dir/detection/yolox/yolox_s_8xb16_300e_coco/epoch_3.pth  work_dir/detection/yolox/yolox_s_8xb16_300e_coco/yolox_export.pth

预测

下载测试图片

!wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/small_coco_demo/val2017/000000017627.jpg

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

import cv2
from easycv.predictors import TorchYoloXPredictor
output_ckpt = 'work_dir/detection/yolox/yolox_s_8xb16_300e_coco/yolox_export.pth'
detector = TorchYoloXPredictor(output_ckpt)
img = cv2.imread('000000017627.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
output = detector.predict([img])
print(output)
# view detection results
%matplotlib inline
from matplotlib import pyplot as plt
image = img.copy()
for box, cls_name in zip(output[0]['detection_boxes'], output[0]['detection_class_names']):
    # box is [x1,y1,x2,y2]
    box = [int(b) for b in box]
    image = cv2.rectangle(image, tuple(box[:2]), tuple(box[2:4]), (0,255,0), 2)
    cv2.putText(image, cls_name, (box[0], box[1]-5), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0,0,255), 2)
plt.imshow(image)
plt.show()
相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
存储 机器学习/深度学习 人工智能
【DSW Gallery】DSW基础使用介绍
PAI-DSW是一款云端机器学习开发IDE,为您提供交互式编程环境,适用于不同水平的开发者。本文为您介绍PAI-DSW的功能特点以及界面的基础使用。
【DSW Gallery】DSW基础使用介绍
|
移动开发 前端开发 小程序
7 款最棒的 React 移动端 UI 组件库 - 特别针对国内使用场景推荐
优秀的 React UI 移动端组件库和模版框架,帮我们节省开发时间,提高开发效率,统一设计语言。更棒的是内置的功能复杂,我们自己很难处理的常用组件,比如表格、表单、富文本编辑器、时间日期选择器、实时拖拽组件等,再进一步,还有帮我们把组件的轮子装好的 React admin 后台管理系统。本文推荐 7 款适用于中文使用者习惯的开源 React 移动端 UI 库,特别针对国内使用场景推荐。
5467 0
|
12月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
18459 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
19778 1
|
11月前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
1185 1
|
11月前
|
网络协议
`ss` 命令的基本用法
`ss` 命令用于查看网络连接状态,常用选项包括 `-t` 显示 TCP 连接,`-a` 显示所有连接,`-n` 显示数字形式的地址和端口,`-l` 仅显示监听端口。例如,`ss -tanl` 可查看所有 TCP 监听端口及其详细信息。其他常用选项有 `-u` 显示 UDP 连接,`-p` 显示进程信息,`-e` 显示扩展信息等。通过这些选项,可以灵活地检查和分析网络连接。
339 0
|
并行计算 PyTorch 算法框架/工具
详细讲述Yolov5从下载、配置及如何使用GPU运行
详细讲述Yolov5从下载、配置及如何使用GPU运行
4641 0
|
运维 Linux 开发工具
在Linux中,如何查看文件内容?列出几种方法。
在Linux中,如何查看文件内容?列出几种方法。
|
算法 新能源
【免费】虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型【simulink】
【免费】虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型【simulink】
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
23956 0
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测

热门文章

最新文章