图像向量与质量评分

更新时间:
复制 MD 格式

本文介绍 Python DataFrame API 中的 CLIP 图像向量、图文相似度和图像质量评分算子。

使用前须知

  • 仅实时计算引擎 VVR 11.8 及以上版本支持。

  • 模型相关算子支持跑在 CPU 或 GPU 之上,根据是否配置了 GPU 资源自动选择 device。

  • image_quality_score 外,本页算子均为模型类算子。

算子清单

分类

算子

说明

向量与相似度

image_embedding

从图像生成 CLIP 嵌入向量。

image_text_similarity

计算图像与文本之间的 CLIP 余弦相似度。

质量评分

image_quality_score

计算综合质量评分。

image_nsfw_score

评估 NSFW 内容风险。

image_aesthetic_score

评估图像美学质量。

image_watermark_score

评估图像包含水印的风险。

通用 Runtime 参数

函数签名保留各算子实际支持的 Runtime 参数。为避免重复,算子参数表只说明业务参数,Runtime 参数统一说明如下。本页除 image_quality_score 外,其余算子均为模型类算子。

参数

类型

默认值

适用范围

说明

concurrency

Optional[int]

None

本页全部算子

UDF 并发度。None 表示使用框架默认值。

model_sharing

Optional[str]

None

本页模型类算子

模型共享方式。None 表示使用框架默认值。

batch_size

Optional[int]

None

本页模型类算子

Batch UDF 批大小。None 表示使用框架默认值。

num_gpus

Optional[float]

None

本页模型类算子

每个模型实例申请的 GPU 数量或份额,例如 0.5

gpu_type

Optional[str]

None

本页模型类算子

GPU 类型,与 num_gpus 配套设置。

图像向量与相似度

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
)

参数

类型

默认值

说明

model

str

"ViT-B/32"

CLIP 模型架构。

注意:目前仅支持内置的 "ViT-B/32"模型

pretrained

str

"openai"

预训练权重检查点。

向量维度取决于所选模型,例如 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
)

参数

类型

默认值

说明

text

Optional[str]

None

固定文本。None 表示从第二个输入列逐行读取文本。

model

str

"ViT-B/32"

CLIP 模型架构。

注意:目前仅支持内置的 "ViT-B/32"模型

pretrained

str

"openai"

预训练权重检查点。

返回类型: 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
)

参数

类型

默认值

说明

hf_nsfw_model

str

"Falconsai/nsfw_image_detection"

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
)

参数

类型

默认值

说明

hf_scorer_model

str

"shunk031/aesthetics-predictor-v2-sac-logos-ava1-l14-linearMSE"

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
)

参数

类型

默认值

说明

hf_watermark_model

str

"amrul-hzz/watermark_detector"

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"))
)