Skip to content
This repository has been archived by the owner on Jun 3, 2020. It is now read-only.

ReigenAraka/omnisearch-operators

Repository files navigation

Omnisearch Operators

[TOC]

什么是 Operator

概念介绍 (可跳转至 search 仓库的概念介绍页)

术语 Operator 是指在 Omnisearch 的一次查询中,对图片的一次操作。Operator 一般基于一个训练好的模型进行推理。Omnisearch 的 Operator 当前支持使用 TensorFlow/paddlepaddle 作为机器学习后端进行模型推理得到特征向量。

Omnisearch 当前内置了一些 Operator 可以完成最简单的使用。如果你想创建一个 Omnisearch 未支持的流程,你可以尝试自己编写一个 Operator,并且用来组合出自己的 search 流程。

根据输入和输出的不同进行划分,我们将 Operator 分成了两类,分别是 Processor 和 Encoder。Encoder 类 Operator 接收图片作为输入,经过内部的模型推理得到表征图片特征的信息作为输出,该信息目前支持特征向量和图片标签两种。Processor 类 Operator 接收图片作为输入,经过内部的模型推理,输出为一组图片,代表为各类Detector。如目标检测器,输入为一张图片,输出为原图片中的物体图片。

下面将会按 Processor 和 Encoder 的分类分别对内置 Operator 的详细介绍,

Prcoessor

  • MTCNN-face-detector
    • 镜像名: face-detector
    • 功能: 识别输入图片中的人脸
    • 接受: image
    • 返回: 识别出的一组人脸图片
    • 样例 pipeline:mtcnn_detect_face -> face_embedding

以 facenet 实现,使用 github 项目 https://github.com/davidsandberg/facenet.git

  • Mask-RCNN-object-detector
    • 镜像名: mask-rcnn-detector
    • 功能: 识别输入图片中的物体
    • 接受: image
    • 返回: 识别出的一组物体图片
    • 样例 pipeline:mask_rcnn -> vgg/xception

附上 mask-rcnn github 链接

  • SSD-object-detector
    • 镜像名: ssd-detector
    • 功能: 识别输入图片中的物体
    • 接受: image
    • 返回: 识别出的一组物体图片
    • 样例pipeline:ssd -> vgg/xception
  • YOLOv3-object-detector
    • 镜像名:yolov3-detector
    • 功能: 识别输入图片中的物体
    • 接受: image
    • 返回: 识别出的一组物体图片
    • 样例 pipeline:yolo -> vgg/xception

以 paddlepaddle yolo v3 模型实现,附链接

Encoder

  • Vgg16
    • 镜像名: vgg16-encoder
    • 向量维度: 512
    • 计算方式: 需要测试
    • 使用场景:
    • 功能: 对输入的图片进行 embedding,得到表征图片的特征向量

以 Keras Application 中 Vgg16 实现该 encoder。

  • Xception
    • 镜像名:xception-encoder
    • 向量维度: 2048
    • 计算方式: 需要测试
    • 使用场景:
    • 功能: 对输入的图片进行 embedding,得到表征图片的特征向量

以 Keras Application 中 Xception 实现该 encoder。

  • Face-encoder
    • 镜像名:face-encoder
    • 向量维度: 128
    • 计算方式: 需要测试
    • 使用场景:
    • 功能: 对识别出来的人脸图片进行 embedding,得到表征人脸特征的向量

Implemented by facenet model. 附上链接

  • SSD-encoder
    • 镜像名: ssd-encoder
    • 标签:MSCOCO 的90种类别
    • 计算方式: 结构化数据
    • 使用场景:
    • 功能: 对输出的图片进行物体检测,得到表征图片中的物品信息的标签。

附上 github 链接

快速开始

PS: 待 docker hub 确定后上传拉取 (需要修改相关参数)

# 拉取对应版本的 docker 镜像, ${tag}应替换为可选的tag
docker pull zilliz/face-encoder:${tag}
# 以该镜像快速启动一个容器,同时设置容器配置:
# 1. 将容器的50004端口映射到本机,50004是 face-encoder 默认的映射端口
# 2. 将容器的 /app/tmp 目录映射到本机,以方便查看/调试 encoder 内部图片缓存
docker run -p 50004:50004 -v `pwd`/tmp:/app/tmp -d zilliz/face-encoder:${tag}

更多的,更详细的方式可参考快速开始

如何实现自定义的 Operator

Ominisearch 支持最大灵活度地接入自定义的Operator,核心只要实现预定义的 rpc/rpc.proto 中的 grpc 接口。

以下列出的是实现定制化 Operator 推荐的必要事项,任何人都可以实现这些步骤接入 Search。

  1. 准备模型。
  2. 实现 rpc 目录下的 grpc 接口,以便正常接入 Search。
  3. 编写必要的编译文件以便在多数环境下正常运行。(推荐编写 makefile、 dockerfile)

P.S. 更详细的定制化 Operator 以及 快速实现的样例可参考如何添加自定义 Operator

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published