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

39 lines
1.2 KiB

from typing import Optional
from pydantic import BaseModel
from towhee import pipe, ops, AutoPipes, AutoConfig
@AutoConfig.register
class ImageEmbeddingConfig(BaseModel):
# config for image_decode
mode: Optional[str] = 'BGR'
# config for image_embedding
model_name: Optional[str] = 'resnet50'
num_classes: Optional[int] = 1000
skip_preprocess: Optional[bool] = False
# config for triton
device: Optional[int] = -1
@AutoPipes.register
def ImageEmbedding(config=None):
if not config:
config = ImageEmbeddingConfig()
if config.device >= 0:
op_config = AutoConfig.TritonGPUConfig(device_ids=[config.device], max_batch_size=128)
else:
op_config = AutoConfig.TritonCPUConfig()
return (
pipe.input('path')
.map('path', 'img', ops.image_decode(mode=config.mode))
.map('img', 'embedding', ops.image_embedding.timm(model_name=config.model_name,
num_classes=config.num_classes,
skip_preprocess=config.skip_preprocess),
config=op_config)
.output('embedding')
)