一
背景
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)領(lǐng)域一項(xiàng)重要的任務(wù)。開(kāi)集目標(biāo)檢測(cè)(Open-set Object Detection)與閉集目標(biāo)檢測(cè)(Closed-set Object Detection)是目標(biāo)檢測(cè)領(lǐng)域的兩個(gè)概念。
之前我們已經(jīng)適配了基于Transformer結(jié)構(gòu)的開(kāi)集目標(biāo)檢測(cè)經(jīng)典之作:OWL-ViT(Open-World Localization with Vision Transformers)。去年大模型、多模態(tài)模型學(xué)術(shù)界的研究也取得了爆發(fā)式的進(jìn)展,代表作是由IDEA-Research提出的GroundingDINO ,雖然GroundingDINO效果不錯(cuò),但畢竟是學(xué)術(shù)界的成果,在邊緣側(cè)/端側(cè)AI芯片上部署性能并不容易和理想。
到了2024年,是否學(xué)術(shù)界/工業(yè)級(jí)已經(jīng)迭代出了更快、更強(qiáng)、更易部署的開(kāi)集目標(biāo)檢測(cè)模型了呢?
當(dāng)然有!它就是接下來(lái)走馬觀花分享的開(kāi)集目標(biāo)檢測(cè)工業(yè)級(jí)力作:YOLO-World。同時(shí)我們還嘗試在AX650N、AX620Q上完成端到端的部署,給行業(yè)內(nèi)對(duì)邊緣側(cè)/端側(cè)部署開(kāi)集目標(biāo)檢測(cè)模型的愛(ài)好者提供一種新的思路。
二
YOLO-World介紹
● 官方在線DEMO:
https://www.yoloworld.cc/
● 論文傳送門(mén):
https://arxiv.org/pdf/2401.17270
● Github項(xiàng)目:
https://github.com/AILab-CVC/YOLO-World
YOLO-World由Tencent AI Lab、ARC Lab (AI Research Center) at Tencent PCG (Platform and Content Group) 以及華中科技大學(xué)電子信息與通信學(xué)院(School of EIC, Huazhong University of Science & Technology)合作提出的一個(gè)創(chuàng)新的實(shí)時(shí)開(kāi)放詞匯目標(biāo)檢測(cè)方法,它通過(guò)結(jié)合視覺(jué)-語(yǔ)言建模和大規(guī)模數(shù)據(jù)集上的預(yù)訓(xùn)練,增強(qiáng)了YOLO(You Only Look Once)檢測(cè)器的開(kāi)放詞匯檢測(cè)能力。

YOLO-World的主要貢獻(xiàn)和特點(diǎn)包括:
●開(kāi)放詞匯檢測(cè)能力:YOLO-World能夠檢測(cè)超出預(yù)定義類別的更廣泛對(duì)象,這對(duì)于現(xiàn)實(shí)世界的復(fù)雜場(chǎng)景非常有用,因?yàn)楝F(xiàn)實(shí)世界中的對(duì)象類別是多樣且不斷變化的;
● 高效率:YOLO-World在保持高準(zhǔn)確度的同時(shí),還實(shí)現(xiàn)了高效率的檢測(cè),這對(duì)于需要實(shí)時(shí)處理的應(yīng)用場(chǎng)景(如自動(dòng)駕駛、監(jiān)控等)至關(guān)重要;

●Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN):提出了一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu)RepVL-PAN,它通過(guò)更好的視覺(jué)-語(yǔ)義表示來(lái)增強(qiáng)文本和圖像特征之間的交互;

●區(qū)域-文本對(duì)比損失:引入了一種新的區(qū)域-文本對(duì)比損失函數(shù),以促進(jìn)模型學(xué)習(xí)區(qū)域和文本之間的對(duì)應(yīng)關(guān)系,這對(duì)于開(kāi)放詞匯檢測(cè)的性能至關(guān)重要;
● 預(yù)訓(xùn)練方案:論文提出了一種有效的預(yù)訓(xùn)練方案,通過(guò)在大規(guī)模檢測(cè)、定位和圖像-文本數(shù)據(jù)集上進(jìn)行區(qū)域-文本對(duì)比學(xué)習(xí),將檢測(cè)數(shù)據(jù)、定位數(shù)據(jù)和圖像-文本數(shù)據(jù)統(tǒng)一為區(qū)域-文本對(duì);
●零樣本性能:在LVIS數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,YOLO-World在零樣本設(shè)置下取得了35.4的平均精度(AP),同時(shí)保持了52.0 FPS的高幀率,這顯示了其在大規(guī)模詞匯檢測(cè)上的強(qiáng)大能力(精度&速度均領(lǐng)先 GLIP和Grounding DINO);

●下游任務(wù)的適應(yīng)性:預(yù)訓(xùn)練后的YOLO-World在多個(gè)下游任務(wù)上表現(xiàn)出色,包括對(duì)象檢測(cè)和開(kāi)放詞匯實(shí)例分割,這表明了其良好的泛化能力;
●開(kāi)源代碼和模型:論文承諾將預(yù)訓(xùn)練的權(quán)重和代碼開(kāi)源,以便于更多的實(shí)際應(yīng)用和進(jìn)一步的研究。
總的來(lái)說(shuō),YOLO-World的提出為實(shí)時(shí)目標(biāo)檢測(cè)領(lǐng)域帶來(lái)了新的視角,特別是在處理開(kāi)放詞匯和提高模型泛化能力方面,它的創(chuàng)新方法和優(yōu)異性能為未來(lái)的目標(biāo)檢測(cè)研究和應(yīng)用奠定了基礎(chǔ)。
三
愛(ài)芯派Pro(AX650N)
搭載愛(ài)芯元智第三代高能效比智能視覺(jué)芯片AX650N。集成了八核Cortex-A55 CPU,高能效比NPU,支持8K@30fps的ISP,以及H.264、H.265編解碼的VPU。接口方面,AX650N支持64bit LPDDR4x,多路MIPI輸入,千兆 Ethernet、USB、以及HDMI 2.0b輸出,并支持32路1080p@30fps解碼內(nèi)置高算力和超強(qiáng)編解碼能力,滿足行業(yè)對(duì)高性能邊緣智能計(jì)算的需求。通過(guò)內(nèi)置多種深度學(xué)習(xí)算法,實(shí)現(xiàn)視覺(jué)結(jié)構(gòu)化、行為分析、狀態(tài)檢測(cè)等應(yīng)用,高效率支持基于Transformer結(jié)構(gòu)的視覺(jué)大模型和語(yǔ)言類大模型。提供豐富的開(kāi)發(fā)文檔,方便用戶進(jìn)行二次開(kāi)發(fā)。
四
愛(ài)芯派Zero(AX620Q)
搭載愛(ài)芯元智第四代智能視覺(jué)芯片AX620Q,該芯片集成新一代智眸4.0 AI-ISP,最高支持5MP@30fps實(shí)時(shí)真黑光,同時(shí)集成新一代通元4.0高性能、場(chǎng)景優(yōu)化的NPU引擎,使得產(chǎn)品在低功耗、高畫(huà)質(zhì)、智能處理和分析等方面行業(yè)領(lǐng)先。提供穩(wěn)定易用的SDK軟件開(kāi)發(fā)包,方便用戶低成本評(píng)估、二次開(kāi)發(fā)和快速量產(chǎn)。幫助用戶在智能家居應(yīng)用和其他AIoT項(xiàng)目中發(fā)揮更大的價(jià)值。
五
模型獲得
相關(guān)材料
為方便大家轉(zhuǎn)換,我們提供一些必要的參考文件:
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 | 測(cè)試圖片 |
| yolo_world_v2_s_xxx-sub.onnx | 已導(dǎo)出的ONNX模型 |
| yolo_world.json | pulsar2 build依賴的配置文件 |
ONNX導(dǎo)出
雖然YOLO World相比Grounding DINO在工業(yè)部署上已經(jīng)方便很多,但由于開(kāi)集目標(biāo)檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)必然的復(fù)雜性,仍然存在一些Trick值得深究。因此我們熟悉的創(chuàng)新模型部署大佬(ZHEQIUSHUI)貢獻(xiàn)了一些微不足道的修改(YOLO -World Optimize,https://github.com/ZHEQIUSHUI/YOLO-World/tree/not_einsum),在不影響精度的情況下,讓后續(xù)的上板部署更佳便捷。
python環(huán)境安裝
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安裝并下載權(quán)重
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
導(dǎo)出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
完成以上操作后,我們將得到y(tǒng)olo_world_v2_s_obj365v1_goldg_pretrain-55b943ea.onnx模型。
六
模型轉(zhuǎn)換
ONNX模型優(yōu)化
在使用pulsar2工具鏈轉(zhuǎn)換之前,先對(duì)前一步獲得的yolo_world_v2_s_xxx.onnx模型進(jìn)行必要的計(jì)算圖優(yōu)化,便于提高模型部署效率。使用onnx_edit.py優(yōu)化完成后,將獲得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)



Pulsar2編譯
Pulsar2是新一代AI工具鏈,包含模型轉(zhuǎn)換、離線量化、模型編譯、異構(gòu)調(diào)度四合一超強(qiáng)功能,進(jìn)一步強(qiáng)化了網(wǎng)絡(luò)模型高效部署的需求。在針對(duì)第三代、第四代NPU架構(gòu)進(jìn)行了深度定制優(yōu)化的同時(shí),也擴(kuò)展了算子&模型支持的能力及范圍,對(duì)Transformer結(jié)構(gòu)的網(wǎng)絡(luò)也有較好的支持。

一鍵完成圖優(yōu)化、離線量化、編譯、對(duì)分功能。整個(gè)過(guò)程耗時(shí)不到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板上運(yùn)行。
七
上版部署
AX-Samples
開(kāi)源項(xiàng)目AX-Samples實(shí)現(xiàn)了常見(jiàn)的深度學(xué)習(xí)開(kāi)源算法在愛(ài)芯元智的AI SoC上的示例代碼,方便社區(qū)開(kāi)發(fā)者進(jìn)行快速評(píng)估和適配。
最新版本已開(kāi)始提供AX650系列(AX650A、AX650N)、AX620E系列(AX630C、AX620E)的NPU示例,其中也包含了本文介紹的YOLO-World參考代碼。
https://github.com/AXERA-TECH/ax-samples
運(yùn)行
/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 --------------------------------------

AX650N運(yùn)行YOLO-World S耗時(shí) <5 ms,完全滿足實(shí)時(shí)運(yùn)行需求。
性能統(tǒng)計(jì)
目前我們已經(jīng)完成了基于AX650N、AX630C、AX620Q芯片平臺(tái)的YOLO-World適配。
| Platform | FPS |
| AX650N | 220 |
| AX630C | 33 |
| AX620Q | 24 |
八
結(jié)束語(yǔ)
隨著Open-Vocabulary Object Detection網(wǎng)絡(luò)模型的快速發(fā)展,越來(lái)越多有趣的多模態(tài)AI應(yīng)用將逐漸從云端服務(wù)遷移到邊緣側(cè)設(shè)備和端側(cè)設(shè)備。
審核編輯:劉清
-
編解碼器
+關(guān)注
關(guān)注
0文章
277瀏覽量
25117 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
9文章
1713瀏覽量
47407 -
PAN
+關(guān)注
關(guān)注
1文章
20瀏覽量
14489 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
791文章
14571瀏覽量
174746 -
AI芯片
+關(guān)注
關(guān)注
17文章
2040瀏覽量
36460
原文標(biāo)題:愛(ài)芯分享 | 基于AX650N/AX620Q部署YOLO-World
文章出處:【微信號(hào):愛(ài)芯元智AXERA,微信公眾號(hào):愛(ài)芯元智AXERA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
部署DeepSeek R1于AX650N與AX630C平臺(tái)
AI SoC # 愛(ài)芯元智AX650N詳細(xì)介紹:原生支持Transformer架構(gòu)模型 適用部署DeepSeek R1
愛(ài)芯元智發(fā)布第三代智能視覺(jué)芯片AX650N,為智慧生活賦能
【愛(ài)芯派 Pro 開(kāi)發(fā)板試用體驗(yàn)】篇一:開(kāi)箱篇
【愛(ài)芯派 Pro 開(kāi)發(fā)板試用體驗(yàn)】愛(ài)芯元智AX650N部署yolov5s 自定義模型
【愛(ài)芯派 Pro 開(kāi)發(fā)板試用體驗(yàn)】愛(ài)芯元智AX650N部署yolov8s 自定義模型
【愛(ài)芯派 Pro 開(kāi)發(fā)板試用體驗(yàn)】ax650使用ax-pipeline進(jìn)行推理
愛(ài)芯元智第三代智能視覺(jué)芯片AX650N高能效比SoC芯片
基于AX650N部署DETR
基于AX650N部署EfficientViT
基于AX650N部署SegFormer
基于AX650N部署SegFormer
愛(ài)芯元智發(fā)布新一代IPC SoC芯片AX630C和AX620Q
愛(ài)芯元智AX620E和AX650系列芯片正式通過(guò)PSA Certified安全認(rèn)證
使用OpenVINO C# API部署YOLO-World實(shí)現(xiàn)實(shí)時(shí)開(kāi)放詞匯對(duì)象檢測(cè)

基于AX650N/AX620Q部署YOLO-World
評(píng)論