一
背景
元?dú)鉂M滿的10月份就結(jié)束了,時(shí)間不長(zhǎng),卻產(chǎn)出了上千張照片,找到自己想要的照片有點(diǎn)難度。希望有一種精確的以文搜圖的方法,快速定位到某一類(lèi)圖片(例如:金色頭發(fā)的小姐姐……)。
之前大家熟悉的計(jì)算機(jī)視覺(jué)模型(CV)基本上是采用監(jiān)督學(xué)習(xí)的方式,基于某一類(lèi)數(shù)據(jù)集進(jìn)行有限類(lèi)別的任務(wù)學(xué)習(xí)。這種嚴(yán)格的監(jiān)督訓(xùn)練方式限制了模型的泛化性和實(shí)用性,需要額外的標(biāo)注數(shù)據(jù)來(lái)完成訓(xùn)練時(shí)未曾見(jiàn)過(guò)的視覺(jué)“概念”。
能否有一種“識(shí)別萬(wàn)物”的圖像識(shí)別大模型呢?今天就借此機(jī)會(huì),通過(guò)實(shí)操來(lái)重溫下由OpenAI在2021年初發(fā)布的Zero-Shot視覺(jué)分類(lèi)模型CLIP,并移植到愛(ài)芯派Pro上實(shí)現(xiàn)簡(jiǎn)單的以圖搜文示例。
二
CLIP

Summary of our approach
2021年初由OpenAI發(fā)布的Zero-shot的視覺(jué)分類(lèi)模型CLIP(Contrastive Language–Image Pre-training),該預(yù)訓(xùn)練的模型在沒(méi)有微調(diào)的情況下在下游任務(wù)上取得了很好的遷移效果。作者在30多個(gè)數(shù)據(jù)集上做了測(cè)試,涵蓋了OCR、視頻中的動(dòng)作檢測(cè)、坐標(biāo)定位等任務(wù)。作者特意強(qiáng)調(diào)了CLIP的效果:沒(méi)有在ImageNet上做微調(diào)的CLIP,竟然能和已經(jīng)在ImageNet上訓(xùn)練好的ResNet 50打成平手,簡(jiǎn)直不可思議。
● CLIP網(wǎng)站:
https://openai.com/research/clip
● CLIP論文:
https://arxiv.org/abs/2103.00020
深度學(xué)習(xí)在CV領(lǐng)域很成功,但是現(xiàn)在大家使用最多的強(qiáng)監(jiān)督學(xué)習(xí)方案總體而言存在以下問(wèn)題:
● CV數(shù)據(jù)集標(biāo)注勞動(dòng)密集,成本高昂
● 模型只能勝任一個(gè)任務(wù),遷移到新任務(wù)上非常困難
● 模型泛化能力較差
2.1 預(yù)訓(xùn)練
OpenAI的這項(xiàng)工作CLIP可以解決上述問(wèn)題,思路看起來(lái)很簡(jiǎn)單,看下圖就知道了,簡(jiǎn)單來(lái)說(shuō)CLIP是使用Text Encoder從文本中提取的語(yǔ)義特征和Image Encoder從圖像中提取的語(yǔ)義特征進(jìn)行匹配訓(xùn)練:

pre training
2.2 推理
接下來(lái)是Zero-Shot的推理過(guò)程。給定一張圖片,如何利用預(yù)訓(xùn)練好的網(wǎng)絡(luò)去做分類(lèi)呢?這里作者很巧妙地設(shè)置了一道“多項(xiàng)選擇”。具體來(lái)說(shuō),我給網(wǎng)絡(luò)一堆分類(lèi)標(biāo)簽,比如cat, dog, bird,利用文本編碼器得到向量表示。然后分別計(jì)算這些標(biāo)簽與圖片的余弦相似度;最終相似度最高的標(biāo)簽即是預(yù)測(cè)的分類(lèi)結(jié)果。

Zero-Shot prediction
從論文中公開(kāi)的效果非常不錯(cuò),CLIP的Zero-Shot遷移能力非常強(qiáng)。在ImageNet各種系列分類(lèi)任務(wù)上,CLIP無(wú)需ImageNet標(biāo)注數(shù)據(jù)訓(xùn)練,通過(guò)Zero-Shot分類(lèi)效果就可以達(dá)到ResNet監(jiān)督訓(xùn)練結(jié)果,并且泛化性和魯棒性更好。

CLIP on ImageNet
三
愛(ài)芯派Pro(AX650N)
搭載愛(ài)芯元智第三代高能效比智能視覺(jué)芯片AX650N。集成了八核Cortex-A55 CPU,10.8TOPs@INT8 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模型和視覺(jué)大模型。提供豐富的開(kāi)發(fā)文檔,方便用戶進(jìn)行二次開(kāi)發(fā)。

愛(ài)芯派Pro(AX650N inside)
四
上板示例
為了方便大家快速體驗(yàn)CLIP的效果,我們?cè)贕ithub上開(kāi)源了對(duì)應(yīng)的DEMO以及相關(guān)預(yù)編譯好的NPU模型,方便大家快速體驗(yàn)。
● Github鏈接:
https://github.com/AXERA-TECH/CLIP-ONNX-AX650-CPP
提供的DEMO包內(nèi)容說(shuō)明
文件名 |
描述 |
main |
DEMO執(zhí)行程序 |
image_encoder.axmodel |
圖像編碼模型(AX650N NPU) |
image_encoder.onnx |
圖像編碼模型(CPU) |
images |
測(cè)試圖片集 |
text_encoder.onnx |
文本編碼模型 |
text.txt |
文本輸入序列 |
vocab.txt |
文本詞集 |
feature_matmul.onnx |
特征比對(duì)模型 |
4.1 耗時(shí)統(tǒng)計(jì)
CLIP image encoder的模型,我們采用精度更好的基于ViT-B的Backbone
Backbone |
輸入尺寸 |
參數(shù)量 |
計(jì)算量 |
ViT-B/32 |
1,3,224,224 |
86M |
4.4G MACs |
單獨(dú)運(yùn)行的耗時(shí)分析如下:
root@maixbox:~/qtang/CLIP# /opt/bin/ax_run_model -m image_encoder.axmodel -w 3 -r 10
Run AxModel:
model: image_encoder.axmodel
type: NPU3
vnpu: Disable
affinity: 0b001
repeat: 10
warmup: 3
batch: 1
pulsar2 ver: 1.8-patch1 6fa8d395
engine ver: [Axera version]: libax_engine.so V1.27.0_P3_20230627143603 Jun 27 2023 14:58:22 JK 1.1.0
tool ver: 1.0.0
cmm size: 93238580 Bytes
------------------------------------------------------
min = 4.158 ms max = 4.220 ms avg = 4.198 ms
------------------------------------------------------
從上面可以看出,使用AX650N上的NPU運(yùn)行image encoder,最快可以達(dá)到238 images/秒的特征提取速度,也就是說(shuō)只需短短的4.2秒就能完成前面提及到的1000張照片的特征提取。
4.2 測(cè)試一
使用5張圖片,簡(jiǎn)單來(lái)展示下CLIP具體的效果

5張測(cè)試圖片
測(cè)試結(jié)果

批量測(cè)試
從實(shí)際上板運(yùn)行l(wèi)og可以看出,最后的特征匹配“matmul Inference”耗時(shí)<0.0008s,也就是不到1毫秒就能從1000張圖片中搜索到與文本對(duì)應(yīng)的置信度最高的圖片。
4.3 測(cè)試二
下面是AX650N上CLIP DEMO的Pipeline分別使用CPU后端和NPU后端運(yùn)行image encoder模型的耗時(shí)&CPU負(fù)載對(duì)比:

CPU版本

NPU版本
Pipeline各模塊統(tǒng)計(jì) |
CPU |
NPU |
耗時(shí) |
440 ms |
7 ms |
CPU負(fù)載 (滿載800%) |
397% |
90% |
內(nèi)存占用 |
1181 MiB |
460 MiB |
4.3 測(cè)試三
前面介紹的是Meta開(kāi)源的英文語(yǔ)料的CLIP模型,當(dāng)然也有社區(qū)大佬提供了中文語(yǔ)料微調(diào)模型:
輸入圖片集:

input images
輸入文本:“金色頭發(fā)的小姐姐”
輸出結(jié)果:

CLIP中文示例
五
交互示例
我們最近還更新了基于愛(ài)芯派Pro的交互式以文搜圖示例,更加直觀的展現(xiàn)其功能。
● Demo安裝步驟可參考
https://github.com/AXERA-TECH/CLIP-ONNX-AX650-CPP/releases
六
結(jié)束語(yǔ)
隨著Vision Transformer網(wǎng)絡(luò)模型的快速發(fā)展,越來(lái)越多有趣的AI應(yīng)用將逐漸從云端服務(wù)遷移到邊緣側(cè)設(shè)備和端側(cè)設(shè)備。例如基于本文提及到的CLIP模型,在端側(cè)可以實(shí)現(xiàn)以下場(chǎng)景應(yīng)用:
●事件抓拍相機(jī),實(shí)時(shí)抓拍監(jiān)控場(chǎng)景下各種突發(fā)事件
●事件快速回溯,從海量的視頻數(shù)據(jù)中快速找到某一特點(diǎn)人物和事件
●智能NAS,家用私有網(wǎng)盤(pán)不再擔(dān)心找不到照片
同時(shí)為了降低社區(qū)開(kāi)發(fā)者Transformer模型在邊緣側(cè)移植的研究門(mén)檻,業(yè)界優(yōu)秀的開(kāi)源智能硬件公司矽速科技推出的基于AX650N的社區(qū)開(kāi)發(fā)板愛(ài)芯派Pro(MAIX-IV)已經(jīng)正式上架,歡迎關(guān)注。
-
圖像識(shí)別
+關(guān)注
關(guān)注
9文章
526瀏覽量
38879 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
9文章
1706瀏覽量
46549 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1222瀏覽量
25264
原文標(biāo)題:愛(ài)芯分享 | 基于AX650N+CLIP的以文搜圖展示
文章出處:【微信號(hào):愛(ài)芯元智AXERA,微信公眾號(hào):愛(ài)芯元智AXERA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
奧泰爾AX600-S雙頻2×2WiFi6AP
VS6621S80&40 IEEE 802.11 a/b/g/n/AC/ax 1T1R+藍(lán)牙5.4Combo模塊手冊(cè)
AI SoC # 愛(ài)芯元智AX650N詳細(xì)介紹:原生支持Transformer架構(gòu)模型 適用部署DeepSeek R1

無(wú)法在DLP650NIR上面顯示8位灰度圖嗎?
揭秘Cu Clip封裝:如何助力半導(dǎo)體芯片飛躍

重磅發(fā)布 | 矽速 M4N Dock 支持 DeepSeek R1,端側(cè)大模型部署新標(biāo)桿!

海康威視文搜存儲(chǔ)系列:跨模態(tài)檢索,安防新境界
海康威視發(fā)布多模態(tài)大模型文搜存儲(chǔ)系列產(chǎn)品
部署DeepSeek R1于AX650N與AX630C平臺(tái)

新品 | 可拼接燈板矩陣 Puzzle Unit &amp; 創(chuàng)意固定套件CLIP-A/CLIP-B

請(qǐng)問(wèn)TPA3244,RESET FAULT CLIP_OTW怎么跟MCU連接?
TPA3220功放的OTW_CLIP管腳會(huì)異常拉低,為什么?
TAS5630電路PBTL接法,CLIP燈無(wú)法滅是怎么回事?
基于AX650N芯片部署MiniCPM-V 2.0高效端側(cè)多模態(tài)大模型

基于AX650N/AX630C部署端側(cè)大語(yǔ)言模型Qwen2

評(píng)論