通過(guò)ModelScope開(kāi)源Embedding模型將圖片轉(zhuǎn)換為向量
本文介紹如何通過(guò)ModelScope魔搭社區(qū)中的視覺(jué)表征模型將圖片轉(zhuǎn)換為向量,并入庫(kù)至向量檢索服務(wù)DashVector中進(jìn)行向量檢索。
ModelScope魔搭社區(qū)旨在打造下一代開(kāi)源的模型即服務(wù)共享平臺(tái),為泛AI開(kāi)發(fā)者提供靈活、易用、低成本的一站式模型服務(wù)產(chǎn)品,讓模型應(yīng)用更簡(jiǎn)單。
ModelScope魔搭社區(qū)的愿景是匯集行業(yè)領(lǐng)先的預(yù)訓(xùn)練模型,減少開(kāi)發(fā)者的重復(fù)研發(fā)成本,提供更加綠色環(huán)保、開(kāi)源開(kāi)放的AI開(kāi)發(fā)環(huán)境和模型服務(wù),助力綠色“數(shù)字經(jīng)濟(jì)”事業(yè)的建設(shè)。 ModelScope魔搭社區(qū)將以開(kāi)源的方式提供多類優(yōu)質(zhì)模型,開(kāi)發(fā)者可在平臺(tái)上免費(fèi)體驗(yàn)與下載使用。
在ModelScope魔搭社區(qū),您可以:
免費(fèi)使用平臺(tái)提供的預(yù)訓(xùn)練模型,支持免費(fèi)下載運(yùn)行
一行命令實(shí)現(xiàn)模型預(yù)測(cè),簡(jiǎn)單快速驗(yàn)證模型效果
用自己的數(shù)據(jù)對(duì)模型進(jìn)行調(diào)優(yōu),定制自己的個(gè)性化模型
學(xué)習(xí)系統(tǒng)性的知識(shí),結(jié)合實(shí)訓(xùn),有效提升模型研發(fā)能力
分享和貢獻(xiàn)你的想法、評(píng)論與模型,讓更多人認(rèn)識(shí)你,在社區(qū)中成長(zhǎng)
前提條件
DashVector:
已創(chuàng)建Cluster:創(chuàng)建Cluster
已獲得API-KEY:API-KEY管理
已安裝最新版SDK:安裝DashVector SDK
ModelScope:
已安裝最新版SDK:
pip install -U modelscope
商品圖像同款特征
簡(jiǎn)介
本模型是對(duì)商品圖像進(jìn)行表征向量提取,用戶可基于表征向量進(jìn)行大規(guī)模的同款/相似款商品搜索;無(wú)需額外輸入,模型可自動(dòng)進(jìn)行箱包商品的主體摳圖,并基于主體提取結(jié)果完成表征向量提取。
模型ID | 向量維度 | 度量方式 | 向量數(shù)據(jù)類型 | 備注 |
damo/cv_resnet50_product-bag-embedding-models | 512 | Cosine | Float32 |
關(guān)于商品圖像同款特征模型更多信息請(qǐng)參考:商品圖像同款特征
使用示例
需要進(jìn)行如下替換代碼才能正常運(yùn)行:
DashVector api-key替換示例中的{your-dashvector-api-key}
DashVector Cluster Endpoint替換示例中的{your-dashvector-cluster-endpoint}
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from dashvector import Client
product_embedding = pipeline(
Tasks.product_retrieval_embedding,
model='damo/cv_resnet50_product-bag-embedding-models'
)
def generate_embeddings(img: str):
result = product_embedding(img)
return result['img_embedding']
# 創(chuàng)建DashVector Client
client = Client(
api_key='{your-dashvector-api-key}',
endpoint='{your-dashvector-cluster-endpoint}'
)
# 創(chuàng)建DashVector Collection
rsp = client.create('resnet50-embedding', dimension=512)
assert rsp
collection = client.get('resnet50-embedding')
assert collection
# 向量入庫(kù)DashVector
img_url = 'https://mmsearch.oss-cn-zhangjiakou.aliyuncs.com/maas_test_img/tb_image_share_1666002161794.jpg'
collection.insert(
('ID1', generate_embeddings(img_url))
)
# 向量檢索
docs = collection.query(
generate_embeddings(img_url)
)
print(docs)