logo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readme
Files and versions

Updated 1 year ago

image-text-embedding

Chinese Image-Text Retrieval Embdding with Taiyi

author: David Wang


Description

This operator extracts features for image or text(in Chinese) with Taiyi(太乙) which can generate embeddings for text and image by jointly training an image encoder and text encoder to maximize the cosine similarity. This method is developed by IDEA-CCNL.


Code Example

Load an image from path './teddy.jpg' to generate an image embedding.

Read the text 'A teddybear on a skateboard in Times Square.' to generate an text embedding.

Write a pipeline with explicit inputs/outputs name specifications:

from towhee import pipe, ops, DataCollection

img_pipe = (
    pipe.input('url')
    .map('url', 'img', ops.image_decode.cv2_rgb())
    .map('img', 'vec', ops.image_text_embedding.taiyi(model_name='taiyi-clip-roberta-102m-chinese', modality='image'))
    .output('img', 'vec')
)

text_pipe = (
    pipe.input('text')
    .map('text', 'vec', ops.image_text_embedding.taiyi(model_name='taiyi-clip-roberta-102m-chinese', modality='text'))
    .output('text', 'vec')
)

DataCollection(img_pipe('./dog.jpg')).show()
DataCollection(text_pipe('一只小狗')).show()
result1 result2


Factory Constructor

Create the operator via the following factory method

taiyi(model_name, modality)

Parameters:

model_name: str

​ The model name of Taiyi. Supported model names:

  • taiyi-clip-roberta-102m-chinese
  • taiyi-clip-roberta-large-326m-chinese

modality: str

​ Which modality(image or text) is used to generate the embedding.

clip_checkpoint_path: str

​ The weight path to load for the clip branch.

text_checkpoint_path: str

​ The weight path to load for the text branch.

devcice: str

​ The device in string, defaults to None. If None, it will enable "cuda" automatically when cuda is available.


Interface

An image-text embedding operator takes a towhee image or string as input and generate an embedding in ndarray.

Parameters:

data: towhee.types.Image (a sub-class of numpy.ndarray) or str

​ The data (image or text based on specified modality) to generate embedding.

Returns: numpy.ndarray

​ The data embedding extracted by model.

wxywb 42bf1528f0 add weights loading for taiyi. 9 Commits
file-icon .gitattributes
1.1 KiB
download-icon
Initial commit 2 years ago
file-icon README.md
2.5 KiB
download-icon
add weights loading for taiyi. 1 year ago
file-icon __init__.py
831 B
download-icon
add weights loading for taiyi. 1 year ago
file-icon requirements.txt
26 B
download-icon
update the taiyi requirement. 2 years ago
file-icon tabular1.png
18 KiB
download-icon
update the doc. 2 years ago
file-icon tabular2.png
112 KiB
download-icon
update the doc. 2 years ago
file-icon taiyi.py
4.7 KiB
download-icon
add weights loading for taiyi. 1 year ago
file-icon vec1.png
13 KiB
download-icon
update the doc. 2 years ago
file-icon vec2.png
13 KiB
download-icon
update the doc. 2 years ago