0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AX650N/AX620Q部署YOLO-World

爱芯元智AXERA 来源:爱芯元智AXERA 2024-04-17 15:36 次阅读

背景

目标检测计算机视觉领域一项重要的任务。开集目标检测(Open-set Object Detection)与闭集目标检测(Closed-set Object Detection)是目标检测领域的两个概念。

之前我们已经适配了基于Transformer结构的开集目标检测经典之作:OWL-ViT(Open-World Localization with Vision Transformers)。去年大模型、多模态模型学术界的研究也取得了爆发式的进展,代表作是由IDEA-Research提出的GroundingDINO ,虽然GroundingDINO效果不错,但毕竟是学术界的成果,在边缘侧/端侧AI芯片上部署性能并不容易和理想。

到了2024年,是否学术界/工业级已经迭代出了更快、更强、更易部署的开集目标检测模型了呢?

当然有!它就是接下来走马观花分享的开集目标检测工业级力作:YOLO-World。同时我们还尝试在AX650N、AX620Q上完成端到端的部署,给行业内对边缘侧/端侧部署开集目标检测模型的爱好者提供一种新的思路。

YOLO-World介绍

● 官方在线DEMO:

https://www.yoloworld.cc/

● 论文传送门:

https://arxiv.org/pdf/2401.17270

● Github项目:

https://github.com/AILab-CVC/YOLO-World

YOLO-World由Tencent AI Lab、ARC Lab (AI Research Center) at Tencent PCG (Platform and Content Group) 以及华中科技大学电子信息通信学院(School of EIC, Huazhong University of Science & Technology)合作提出的一个创新的实时开放词汇目标检测方法,它通过结合视觉-语言建模和大规模数据集上的预训练,增强了YOLO(You Only Look Once)检测器的开放词汇检测能力。

970e446a-fc8c-11ee-a297-92fbcf53809c.jpg

YOLO-World的主要贡献和特点包括:

●开放词汇检测能力:YOLO-World能够检测超出预定义类别的更广泛对象,这对于现实世界的复杂场景非常有用,因为现实世界中的对象类别是多样且不断变化的;

● 高效率:YOLO-World在保持高准确度的同时,还实现了高效率的检测,这对于需要实时处理的应用场景(如自动驾驶、监控等)至关重要;

971eb4d0-fc8c-11ee-a297-92fbcf53809c.jpg

●Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN):提出了一个新的网络结构RepVL-PAN,它通过更好的视觉-语义表示来增强文本和图像特征之间的交互;

97223060-fc8c-11ee-a297-92fbcf53809c.jpg

●区域-文本对比损失:引入了一种新的区域-文本对比损失函数,以促进模型学习区域和文本之间的对应关系,这对于开放词汇检测的性能至关重要;

● 预训练方案:论文提出了一种有效的预训练方案,通过在大规模检测、定位和图像-文本数据集上进行区域-文本对比学习,将检测数据、定位数据和图像-文本数据统一为区域-文本对;

●零样本性能:在LVIS数据集上的实验结果表明,YOLO-World在零样本设置下取得了35.4的平均精度(AP),同时保持了52.0 FPS的高帧率,这显示了其在大规模词汇检测上的强大能力(精度&速度均领先 GLIP和Grounding DINO);

97363510-fc8c-11ee-a297-92fbcf53809c.jpg

●下游任务的适应性:预训练后的YOLO-World在多个下游任务上表现出色,包括对象检测和开放词汇实例分割,这表明了其良好的泛化能力;

●开源代码和模型:论文承诺将预训练的权重和代码开源,以便于更多的实际应用和进一步的研究。

总的来说,YOLO-World的提出为实时目标检测领域带来了新的视角,特别是在处理开放词汇和提高模型泛化能力方面,它的创新方法和优异性能为未来的目标检测研究和应用奠定了基础。

爱芯派Pro(AX650N)

搭载爱芯元智第三代高能效比智能视觉芯片AX650N。集成了八核Cortex-A55 CPU,高能效比NPU,支持8K@30fps的ISP,以及H.264、H.265编解码的VPU。接口方面,AX650N支持64bit LPDDR4x,多路MIPI输入,千兆 EthernetUSB、以及HDMI 2.0b输出,并支持32路1080p@30fps解码内置高算力和超强编解码能力,满足行业对高性能边缘智能计算的需求。通过内置多种深度学习算法,实现视觉结构化、行为分析、状态检测等应用,高效率支持基于Transformer结构的视觉大模型和语言类大模型。提供丰富的开发文档,方便用户进行二次开发。

爱芯派Zero(AX620Q)

搭载爱芯元智第四代智能视觉芯片AX620Q,该芯片集成新一代智眸4.0 AI-ISP,最高支持5MP@30fps实时真黑光,同时集成新一代通元4.0高性能、场景优化的NPU引擎,使得产品低功耗、高画质、智能处理和分析等方面行业领先。提供稳定易用的SDK软件开发包,方便用户低成本评估、二次开发和快速量产。帮助用户在智能家居应用和其他AIoT项目中发挥更大的价值。

模型获得

相关材料

为方便大家转换,我们提供一些必要的参考文件:

https://pan.baidu.com/share/init?surl=HIXFkv_OjqbnTx-9WhZ00Q&pwd=y94b

文件名 描述
ax620e文件夹 包含适用于 AX630C/AX620Q的DEMO 和NPU模型文件axmodel
ax650文件夹 包含适用于AX650A/AX650N 的DEMO和NPU模型文件 axmodel
onnx_edit.py onnx yolo world后处理裁剪脚本
ssd_horse.jpg 测试图片
yolo_world_v2_s_xxx-sub.onnx 已导出的ONNX模型
yolo_world.json pulsar2 build依赖的配置文件

ONNX导出

虽然YOLO World相比Grounding DINO在工业部署上已经方便很多,但由于开集目标检测网络结构必然的复杂性,仍然存在一些Trick值得深究。因此我们熟悉的创新模型部署大佬(ZHEQIUSHUI)贡献了一些微不足道的修改(YOLO -World Optimize,https://github.com/ZHEQIUSHUI/YOLO-World/tree/not_einsum),在不影响精度的情况下,让后续的上板部署更佳便捷。

python环境安装

conda create --name=yolo_world python=py3.9
conda activate yolo_world

其他依赖安装

pip install torch==1.11.0+cpu torchvision==0.12.0+cpu torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cpu -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install mmcv==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install mmdet==3.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnx onnxruntime onnxsim -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformer -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/lvis-dataset/lvis-api.git -i https://pypi.tuna.tsinghua.edu.cn/simple

YOLO-World安装并下载权重

git clone -b not_einsum --recursive https://github.com/ZHEQIUSHUI/YOLO-World.git
cd YOLO-World
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
wget https://huggingface.co/wondervictor/YOLO-World/resolve/main/yolo_world_s_clip_base_dual_vlpan_2e-3adamw_32xb16_100e_o365_goldg_train_pretrained-18bea4d2.pth

导出ONNX

python deploy/export_onnx.py configs/pretrain/yolo_world_v2_s_vlpan_bn_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py ./yolo_world_v2_s_obj365v1_goldg_pretrain-55b943ea.pth --custom-text data/texts/coco_class_texts.json --opset 11 --device cpu --model-only --simplify

完成以上操作后,我们将得到yolo_world_v2_s_obj365v1_goldg_pretrain-55b943ea.onnx模型。

模型转换

ONNX模型优化

在使用pulsar2工具链转换之前,先对前一步获得的yolo_world_v2_s_xxx.onnx模型进行必要的计算图优化,便于提高模型部署效率。使用onnx_edit.py优化完成后,将获得yolo_world_v2_s_xxx-sub.onnx。

import onnx


input_path = "work_dir/yolo_world_v2_s_obj365v1_goldg_pretrain-55b943ea.onnx"
output_path = "work_dir/yolo_world_v2_s_obj365v1_goldg_pretrain-55b943ea-sub.onnx"
input_names = ["images"]
output_names = [
  "onnx::Reshape_1191",
  "onnx::Reshape_1260",
  "onnx::Reshape_1329",
  
  "onnx::Reshape_1172",
  "onnx::Reshape_1241",
  "onnx::Reshape_1310",
]


onnx.utils.extract_model(input_path, output_path, input_names, output_names)
9806b190-fc8c-11ee-a297-92fbcf53809c.jpg981b7ef4-fc8c-11ee-a297-92fbcf53809c.jpg981f4886-fc8c-11ee-a297-92fbcf53809c.jpg

Pulsar2编译

Pulsar2是新一代AI工具链,包含模型转换、离线量化、模型编译、异构调度四合一超强功能,进一步强化了网络模型高效部署的需求。在针对第三代、第四代NPU架构进行了深度定制优化的同时,也扩展了算子&模型支持的能力及范围,对Transformer结构的网络也有较好的支持。

983df22c-fc8c-11ee-a297-92fbcf53809c.png

一键完成图优化、离线量化、编译、对分功能。整个过程耗时不到2分钟,log信息量很大。

qtang@gpux2:$ pulsar2 build --input yolo_world_v2_s_obj365v1_goldg_pretrain-55b943ea-sub.onnx 
--config yolo-world.json 
--output_dir output 
--target_hardware AX650 
--npu_mode NPU3 --output_name yolo_world_s_u8_npu3.axmodel


32 File(s) Loaded.
Building onnx ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
                          Quant Config Table
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳┓
┃ Input ┃ Shape      ┃ Dataset Directory ┃ Data Format ┃ Tensor Format ┃ Mean      ┃ Std         ┃
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇┩
│ images │ [1, 3, 640, 640] │ images      │ Image    │ BGR      │ [0.0, 0.0, 0.0] │ [255.0, 255.0, 255.0]│
└────────┴──────────────────┴───────────────────┴─────────────┴┘
Transformer optimize level: 1
32 File(s) Loaded.
[00:55:22] AX Set Float Op Table Pass Running ...     Finished.
[00:55:22] AX Set MixPrecision Pass Running ...      Finished.
[00:55:22] AX Transformer Optimize Pass Running ...    Finished.
[00:55:22] AX Set LN Quant dtype Quant Pass Running ...  Finished.
[00:55:22] AX Topk Operation Format Pass Running ...   Finished.
[00:55:22] AX Reset Mul Config Pass Running ...      Finished.
[00:55:22] AX Refine Operation Config Pass Running ...  Finished.
[00:55:22] AX Tanh Operation Format Pass Running ...   Finished.
[00:55:22] AX Confused Op Refine Pass Running ...     Finished.
[00:55:23] AX Quantization Fusion Pass Running ...    Finished.
[00:55:23] AX Quantization Simplify Pass Running ...   Finished.
[00:55:23] AX Parameter Quantization Pass Running ...   Finished.
Calibration Progress(Phase 1): 100%|██████████████████████| 32/32 [00:26<00:00,  1.23it/s]
Finished.
[0049] AX Quantization Alignment Pass Running ...     Finished.
[0049] AX Refine Int Parameter Pass Running ...       Finished.
Finished.
[0050] AX Passive Parameter Quantization Running ...  Finished.
[0050] AX Parameter Baking Pass Running ...           Finished.
......
Network Quantization Finished.
quant.axmodel export success: 50_output/yolo_world_s/quant/quant_axmodel.onnx
Building native ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 000
......
tiling op...   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 253/253 000
new_ddr_tensor = []
build op serially...   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 613/613 0:00:07
build op...   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1198/1198 0:00:00
.......
2024-04-11 00:56:03.533 | INFO     | yasched.test_onepass2467 - max_cycle = 4,302,999
build jobs   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3796/3796 0:00:00
2024-04-11 00:56:08.932 | INFO     | yamain.command.build1110 - fuse 1 subgraph(s)

编译输出的文件,保存在output文件夹中,其中 yolo_world_s_u8_npu3.axmodel将用于在AX650N Demo板上运行。

上版部署

AX-Samples

开源项目AX-Samples实现了常见的深度学习开源算法在爱芯元智的AI SoC上的示例代码,方便社区开发者进行快速评估和适配。

最新版本已开始提供AX650系列(AX650A、AX650N)、AX620E系列(AX630C、AX620E)的NPU示例,其中也包含了本文介绍的YOLO-World参考代码。

https://github.com/AXERA-TECH/ax-samples

运行

/opt/test # ./ax_yolo_world -i ssd_horse.jpg -m yolo_world_s_u8_npu3.axmodel
--------------------------------------
model file : yolo_world_s_u8_npu3.axmodel
image file : ssd_horse.jpg
img_h, img_w : 640 640
--------------------------------------
Engine creating handle is done.
Engine creating context is done.
Engine get io info is done.
Engine alloc io is done.
Engine push input is done.
--------------------------------------
post process cost time:3.80 ms
--------------------------------------
Repeat 1 times, avg time 4.52 ms, max_time 4.52 ms, min_time 4.52 ms
--------------------------------------
detection num: 6
17: 98%, [ 216,  71, 420, 374], horse
16: 93%, [ 144, 204, 197, 347], dog
13: 86%, [ 469, 149, 499, 178], bench
 0: 76%, [ 431, 124, 451, 178], person
 0: 74%, [ 271,  13, 348, 236], person
 2: 69%, [  0, 105, 133, 196], car
--------------------------------------
9858fa22-fc8c-11ee-a297-92fbcf53809c.jpg

AX650N运行YOLO-World S耗时 <5 ms,完全满足实时运行需求。

性能统计

目前我们已经完成了基于AX650N、AX630C、AX620Q芯片平台的YOLO-World适配。

Platform FPS
AX650N 220
AX630C 33
AX620Q 24

结束语

随着Open-Vocabulary Object Detection网络模型的快速发展,越来越多有趣的多模态AI应用将逐渐从云端服务迁移到边缘侧设备和端侧设备。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编解码器
    +关注

    关注

    0

    文章

    258

    浏览量

    24225
  • 计算机视觉
    +关注

    关注

    8

    文章

    1698

    浏览量

    45980
  • PAN
    PAN
    +关注

    关注

    1

    文章

    19

    浏览量

    14279
  • 自动驾驶
    +关注

    关注

    784

    文章

    13786

    浏览量

    166399
  • AI芯片
    +关注

    关注

    17

    文章

    1880

    浏览量

    34994

原文标题:爱芯分享 | 基于AX650N/AX620Q部署YOLO-World

文章出处:【微信号:爱芯元智AXERA,微信公众号:爱芯元智AXERA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于AX650N/AX630C部署端侧大语言模型Qwen2

    本文将分享如何将最新的端侧大语言模型部署到超高性价比SoC上,向业界对端侧大模型部署的开发者提供一种新的思路。
    的头像 发表于 07-06 17:43 3513次阅读
    基于<b class='flag-5'>AX650N</b>/<b class='flag-5'>AX</b>630C<b class='flag-5'>部署</b>端侧大语言模型Qwen2

    爱芯元智发布第三代智能视觉芯片AX650N,为智慧生活赋能

    中国 上海 2023 年 3 月 6 日 ——人工智能视觉感知芯片研发及基础算力平台公司爱芯元智宣布推出第三代高算力、高能效比的SoC芯片——AX650N。这是继AX620AX630系列后,爱芯元
    发表于 03-07 10:57 1602次阅读
    爱芯元智发布第三代智能视觉芯片<b class='flag-5'>AX650N</b>,为智慧生活赋能

    【爱芯派 Pro 开发板试用体验】篇一:开箱篇

    ,超高算力的的SoC芯片,这是继AX620AX630系列后,第三代高算力、高能效比的SoC芯片——AX650N。支持8K@30fps的ISP,以及H.264、H.265编解码的VPU。接口方面
    发表于 11-15 11:32

    【爱芯派 Pro 开发板试用体验】爱芯元智AX650N部署yolov5s 自定义模型

    爱芯元智AX650N部署yolov5s 自定义模型 本博客将向你展示零基础一步步的部署好自己的yolov5s模型(博主展示的是安全帽模型),利用yolov5 官方的代码工具导出onnx模型,并通过
    发表于 11-16 19:34

    【爱芯派 Pro 开发板试用体验】爱芯元智AX650N部署yolov8s 自定义模型

    爱芯元智AX650N部署yolov8s 自定义模型 本博客将向你展示零基础一步步的部署好自己的yolov8s模型(博主展示的是自己训练的手写数字识别模型),本博客教你从训练模型到转化成利于
    发表于 11-24 20:40

    【爱芯派 Pro 开发板试用体验】ax650使用ax-pipeline进行推理

    /AXERA-TECH/ax-pipeline.git 下载sdk cd ax-pipeline ./download_ax_bsp.sh ax650 cd
    发表于 12-19 17:36

    爱芯元智第三代智能视觉芯片AX650N高能效比SoC芯片

    爱芯元智正式推出第三代高算力、高能效比的SoC芯片——AX650N。这是继AX620AX630系列后,爱芯元智推出的又一款高性能智能视觉芯片。 AX650N是一款兼具高算力与高能效比
    的头像 发表于 03-10 17:13 4073次阅读

    基于AX650N部署DETR

    目标检测作为计算机视觉应用的基础任务,一直备受william hill官网 重点关注。从最早学术界的Two-Stage方案Faster-RCNN,到首个利于工业界高效率部署的One-Stage方案SSD(Single
    的头像 发表于 05-15 14:27 830次阅读
    基于<b class='flag-5'>AX650N</b><b class='flag-5'>部署</b>DETR

    基于AX650N部署EfficientViT

    的速度。为了实现对ViT模型的实时部署,微软和港中文共同在CVPR2023提出论文《EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention》。
    的头像 发表于 05-26 10:30 1035次阅读

    基于AX650N部署SegFormer

    语义分割(Semantic Segmentation)是计算机视觉中的一项基本任务。与单张图像分类任务相比,语义分割相当于是像素级别上的分类任务。语义分割为许多下游应用特别是近几年来的智能驾驶威廉希尔官方网站 的落地提供了可能。
    的头像 发表于 06-20 16:37 663次阅读
    基于<b class='flag-5'>AX650N</b><b class='flag-5'>部署</b>SegFormer

    基于AX650N部署SegFormer

    语义分割(Semantic Segmentation)是计算机视觉中的一项基本任务。与单张图像分类任务相比,语义分割相当于是像素级别上的分类任务。
    的头像 发表于 06-20 16:37 696次阅读
    基于<b class='flag-5'>AX650N</b><b class='flag-5'>部署</b>SegFormer

    爱芯元智发布新一代IPC SoC芯片AX630C和AX620Q

    中国 深圳 2023 年 10 月 27 日 ——AI视觉芯片研发及基础算力平台公司爱芯元智宣布,发布新一代IPC SoC芯片产品AX630C和AX620Q,以领先行业水平的高画质、智能处理和分析等
    发表于 10-27 16:26 1605次阅读
    爱芯元智发布新一代IPC SoC芯片<b class='flag-5'>AX</b>630C和<b class='flag-5'>AX620Q</b>

    爱芯元智AX620E和AX650系列芯片正式通过PSA Certified安全认证

    万物互联的时代,安全性已成为物联网产品设计及部署的基本要求。近日,爱芯元智AX620E和AX650系列芯片(包含AX630C/AX620Q/
    的头像 发表于 04-23 15:45 806次阅读
    爱芯元智<b class='flag-5'>AX620</b>E和<b class='flag-5'>AX650</b>系列芯片正式通过PSA Certified安全认证

    爱芯元智AX620E和AX650芯片获PSA一级安全认证

    据认证资料显示,爱芯元智AX620E系列是专为IPC及其他智能视觉应用而生的高性能AI视觉处理器,在高画质、智能处理和分析等方面均处于业界领先地位。该系列芯片采用Arm® Cortex®-A53双核处理器,并集成了新一代爱芯智眸4.0 AI-ISP
    的头像 发表于 04-23 17:04 843次阅读

    使用OpenVINO C# API部署YOLO-World实现实时开放词汇对象检测

    的快速准确识别,并通过AR威廉希尔官方网站 将虚拟元素与真实场景相结合,为用户带来沉浸式的交互体验。在本文中,我们将结合OpenVINO C# API使用最新发布的OpenVINO 2024.0部署 YOLO-World实现实时开放词汇对象检测:
    的头像 发表于 08-30 16:27 628次阅读
    使用OpenVINO C# API<b class='flag-5'>部署</b><b class='flag-5'>YOLO-World</b>实现实时开放词汇对象检测