本文介绍 Python DataFrame API 中的 CLIP 图像向量、图文相似度和图像质量评分算子。
使用前须知
-
仅实时计算引擎 VVR 11.8 及以上版本支持。
-
模型相关算子支持跑在 CPU 或 GPU 之上,根据是否配置了 GPU 资源自动选择 device。
-
除
image_quality_score外,本页算子均为模型类算子。
算子清单
|
分类 |
算子 |
说明 |
|
向量与相似度 |
从图像生成 CLIP 嵌入向量。 |
|
|
计算图像与文本之间的 CLIP 余弦相似度。 |
||
|
质量评分 |
计算综合质量评分。 |
|
|
评估 NSFW 内容风险。 |
||
|
评估图像美学质量。 |
||
|
评估图像包含水印的风险。 |
通用 Runtime 参数
函数签名保留各算子实际支持的 Runtime 参数。为避免重复,算子参数表只说明业务参数,Runtime 参数统一说明如下。本页除 image_quality_score 外,其余算子均为模型类算子。
|
参数 |
类型 |
默认值 |
适用范围 |
说明 |
|
|
|
|
本页全部算子 |
UDF 并发度。 |
|
|
|
|
本页模型类算子 |
模型共享方式。 |
|
|
|
|
本页模型类算子 |
Batch UDF 批大小。 |
|
|
|
|
本页模型类算子 |
每个模型实例申请的 GPU 数量或份额,例如 |
|
|
|
|
本页模型类算子 |
GPU 类型,与 |
图像向量与相似度
image_embedding
从图像生成 CLIP 嵌入向量。
输入类型: DataType.image(),解码后的图像列。
依赖: pip install open_clip_torch torch
函数签名:
image_embedding(
*columns,
model="ViT-B/32",
pretrained="openai",
model_sharing=None,
concurrency=None,
batch_size=None,
num_gpus=None,
gpu_type=None
)
|
参数 |
类型 |
默认值 |
说明 |
|
|
|
|
CLIP 模型架构。 注意:目前仅支持内置的 |
|
|
|
|
预训练权重检查点。 |
向量维度取决于所选模型,例如 ViT-B/32 返回 512 维向量。空值输入返回 None。
返回类型: DataType.list(DataType.float32())。
from pyflink.dataframe import col
from pyflink.multimodal.operators import image_embedding
result = df.with_column(
"image_vector",
image_embedding(
col("image"),
model="ViT-B/32",
pretrained="openai"
)
)
image_text_similarity
计算图像与文本之间的 CLIP 余弦相似度。文本列支持固定文本常量或文本列(逐行匹配)。
输入类型:
-
Column1(图像列):
DataType.image(); -
Column2(可选,文本列):逐行文本匹配模式传递
DataType.string() -
设置
text时只传入图像列;text=None时依次传入图像列和文本列。
依赖: pip install open_clip_torch torch
函数签名:
image_text_similarity(
*columns,
text=None,
model="ViT-B/32",
pretrained="openai",
model_sharing=None,
concurrency=None,
batch_size=None,
num_gpus=None,
gpu_type=None
)
|
参数 |
类型 |
默认值 |
说明 |
|
|
|
|
固定文本。 |
|
|
|
|
CLIP 模型架构。 注意:目前仅支持内置的 |
|
|
|
|
预训练权重检查点。 |
返回类型: DataType.float64()。
返回范围为 [-1, 1]。空值图像或逐行文本模式中的空值文本返回 None。
固定文本示例:
from pyflink.multimodal.operators import image_text_similarity
result = df.with_column(
"cat_score",
image_text_similarity(
col("image"),
text="A photo of a cat")
)
逐行文本示例:
result = df.with_column(
"image_text_score",
image_text_similarity(
col("image"),
col("description")
)
)
图像质量评分
image_quality_score
计算综合质量评分,融合清晰度、对比度和色彩丰富度。
输入类型: DataType.image(),解码后的图像列。
依赖: pip install transformers torch
函数签名:
image_quality_score(
*columns,
concurrency=None
)
固定清晰度、对比度和色彩丰富度的计算权重分别为 0.5、0.3 和 0.2。
返回类型: DataType.float64(),取值范围为 [0, 1]。
from pyflink.multimodal.operators import image_quality_score
result = df.with_column(
"quality_score",
image_quality_score(col("image"))
)
image_nsfw_score
使用 HuggingFace 图像分类器评估 NSFW 内容风险。
输入类型: DataType.image(),解码后的图像列。
依赖: pip install transformers torch
函数签名:
image_nsfw_score(
*columns,
hf_nsfw_model="Falconsai/nsfw_image_detection",
model_sharing=None,
concurrency=None,
batch_size=None,
num_gpus=None,
gpu_type=None
)
|
参数 |
类型 |
默认值 |
说明 |
|
|
|
|
HuggingFace NSFW 图像分类模型 ID。 注意:目前仅支持内置默认模型 |
返回类型: DataType.float64()。
取值范围为 [0, 1]。值越大表示 NSFW 内容风险越高。
from pyflink.multimodal.operators import image_nsfw_score
result = df.with_column(
"nsfw_score",
image_nsfw_score(col("image"))
)
image_aesthetic_score
使用美学预测器评估图像美学质量。
输入类型: DataType.image(),解码后的图像列。
依赖: pip install transformers torch
函数签名:
image_aesthetic_score(
*columns,
hf_scorer_model=(
"shunk031/"
"aesthetics-predictor-v2-sac-logos-ava1-l14-linearMSE"
),
model_sharing=None,
concurrency=None,
batch_size=None,
num_gpus=None,
gpu_type=None
)
|
参数 |
类型 |
默认值 |
说明 |
|
|
|
|
HuggingFace 美学评分模型 ID。 注意:目前仅支持内置默认模型 |
返回类型: DataType.float64()。
取值范围为 [0, 1]。值越大表示模型给出的美学评分越高。
from pyflink.multimodal.operators import image_aesthetic_score
result = df.with_column(
"aesthetic_score",
image_aesthetic_score(col("image"))
)
image_watermark_score
使用图像分类器评估图像包含水印的风险。
输入类型: DataType.image(),解码后的图像列。
依赖: pip install transformers torch
函数签名:
image_watermark_score(
*columns,
hf_watermark_model="amrul-hzz/watermark_detector",
model_sharing=None,
concurrency=None,
batch_size=None,
num_gpus=None,
gpu_type=None
)
|
参数 |
类型 |
默认值 |
说明 |
|
|
|
|
HuggingFace 水印检测模型 ID。 注意:目前仅支持内置默认模型 |
返回类型: DataType.float64(),取值范围为 [0, 1]。值越大表示图像越可能包含水印。
from pyflink.multimodal.operators import image_watermark_score
result = df.with_column(
"watermark_score",
image_watermark_score(col("image"))
)