图像安全性检测
更新时间:2026-06-15
简介
图像安全性(NSFW)检测器,支持多源输入与批量推理。
功能描述
- 使用预训练的图像分类模型进行 NSFW 概率检测,输出每张图片的 NSFW 置信度分数。
- URL 地址(image_url)
- Base64 编码(image_base64)
- 二进制流(image_binary)
- 通过配置 batch_size 进行批量推理以提升吞吐性能。
- 内容安全审核:电商、社交平台的图片审核流程。
- 生产管线中的预过滤:在图像处理/生成任务之前进行安全性筛查。
- 仅输出数值型 NSFW 置信度(0~1),不保存图像;如需持久化请在上游/下游管线中实现。
- 请确保模型路径(model_path)与模型名称(model_name)在本地可用,或已正确配置权重下载策略。
算子参数
输入
| 输入 | 含义 |
|---|---|
| images | 包含输入图像的数组,支持 URL/base64/数组 格式。 |
输出
| 输出 | 含义 |
|---|---|
| result | 包含检测结果的数组,每个元素为NSFW 置信度分数(float),若检测失败则为 None。 |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| image_src_type | str | 'image_url' | 输入图像的格式类型,支持: - url地址(image_url) - base64编码(image_base64) - 二进制流(image_binary) 描述: 输入图像的格式类型。 可选值: ["image_url", "image_base64", "image_binary"] 默认值: "image_url" |
| model_path | str | '/opt/aihc/models' | 模型基础路径。 描述: 预训练模型在本地的根目录路径。 默认值: "/home/ray/workdir/models" |
| model_name | str | 'Falconsai/nsfw_image_detection' | 模型名称/子目录。 描述: 在 model_path 下的具体模型目录名称。 可选值: ["Falconsai/nsfw_image_detection"] 默认值: "Falconsai/nsfw_image_detection" |
| dtype | str | 'float16' | 模型推理精度选择: - float16: 更快的推理速度 - float32: 最高精度但显存消耗最大 可选值:["float16", "float32"] 默认值:"float16" |
| batch_size | int | 16 | 批量推理的图片数量。 描述: 每次送入模型进行推理的图片数量,批量越大吞吐越高,但显存占用也更高。 默认值: 16 |
| rank | int | 0 | GPU 编号。 描述: 推理所使用的 GPU 编号,CPU 推理时可保持为 0。 默认值: 0 |
调用示例
Python
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.image.image_nsfw_detect import ImageNsfwDetect
10
11if __name__ == "__main__":
12 if os.getenv("DAFT_RUNNER", "native") == "ray":
13 import ray
14 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
15 daft.set_runner_ray()
16 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
17
18 # TODO: 根据实际场景准备样本数据
19 samples = {"images": [...]}
20 ds = daft.from_pydict(samples)
21 constructor_kwargs = {
22 "image_src_type": 'image_url',
23 "model_path": '/opt/aihc/models',
24 "model_name": 'Falconsai/nsfw_image_detection',
25 "dtype": 'float16',
26 "batch_size": 16,
27 }
28 ds = ds.with_column(
29 "result",
30 aihc_udf(
31 ImageNsfwDetect,
32 construct_args=constructor_kwargs,
33 num_cpus=1,
34 concurrency=4,
35 batch_size=8,
36 )(col("images")),
37 )
38 ds.show()
评价此篇文章
