Skip to content

基于多模态特征融合的即时社交软件违规图片检测系统。通过结合图像和文本信息,系统支持对OCR后的文本进行高效的敏感词检测,并允许用户自定义敏感词词库。此外,系统能够自动识别图片中的二维码并提取域名进行安全检测,实现对图片的三分类,包括正常、涉黄和敏感信息,并支持建立图片黑白名单库进行匹配。

Notifications You must be signed in to change notification settings

tuxiaobei-scu/Image-Violation-Detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

多模态特征融合即时社交软件违规图片检测系统

系统描述

image-20240102233242723

  • 支持对 OCR 后得到的文本进行高效地敏感词检测,可自定义敏感词词库
  • 自动找出图片内含有的所有二维码并识别结果,通过正则表达式提取出二维码中所包含的域名,进行域名安全检测
  • 对图片进行三分类,根据图片的内容,包括图片特征和文本信息对图片进行分类
  • 支持建立图片黑白名单库,并进行匹配

检测流程:

  • 我们将原始图片输入模型,先通过inception_v3模型来提取图像特征,同时使用Easy OCR模型提取图片中的文本,之后原始文本输入BERT预训练模型来提取文本特征,将提取到的文本特征和图像特征融合后通过MLP 多层感知机进行分类得到最终的分类结果(此处我们的模型为三分类,包括正常、涉黄和敏感信息三类)
  • 使用Easy OCR模型提取到的原始文本信息,将其与铭感词词库中的信息进行比对,得到图像文字铭感词检测结果,其中我们的敏感词检测结果还会进行分类,包括涉政、涉黄以及暴力等
  • 识别获取到图片中的二维码,之后提取二维码中的域名信息,之后调用恶意域名检测接口或者使用本地训练的GRU模型进行检测,得到最终的检测结果。
  • 从本地图片黑白名单文件夹下自动提取图片特征,建立图片黑白名单向量数据库。将待查询图片的特征在向量数据库中进行最近邻检索,得到最相似的结果。

数据评估及结果

如下图所示为8个模型(Our、ERNIE、Inception_v3、Densenet161、Resnet50、Squeeze net_0、VGG16、Alexnet)在准确性、精确度、召回率和F1分数上的对比结果.

image-20240102233624204

Model Name Accuracy Precision Recall F1 Score
Our 0.9244 0.9389 0.9136 0.926
ERNIE 0.6703 0.7434 0.6703 0.6672
Inception_v3 0.8775 0.8803 0.8775 0.8757
Densenet161 0.8853 0.8879 0.8853 0.8843
Resnet50 0.8542 0.8568 0.8542 0.8531
Squeezenet1_0 0.8416 0.8421 0.8416 0.841
VGG16 0.8069 0.8079 0.8069 0.8023
Alexnet 0.6618 0.6264 0.6618 0.5648

以下为7个模型(Our、Inception_v3、Densenet161、Resnet50、Squeezenet_0、VGG16、Alexnet)的P-R曲线对比图。

image-20240102233708743

如下图为7个模型(Our、Inception_v3、Densenet161、Resnet50、Squeeze net_0、VGG16、Alexnet)的ROC曲线和对应的AUC面积对比图。

image-20240102233742263

代码说明

  • train目录为训练代码
    • ocr.py 为图片 OCR 预处理代码
    • final_train.py 为训练代码,train_log 为其产生的训练日志
    • export_onnx.py 为导出模型为 onnx 脚本
    • val.py 为验证代码
  • docker目录为镜像 build 工作文件夹,内含推理 API 代码及所有模型
    • onnx_run.py 为推理 API 代码
    • final_model_v2.onnx 为多模态特征融合分类模型
    • Resnet18_search.onnx 为图片检索特征提取模型
    • easyocrOCR 相关模型
  • deploy 目录为部署文件夹,内含 QQ API 接入脚本
    • .conf.jsonQQ API 配置文件
    • main.pyQQ API 接入程序
    • result.json 为模型推理返回结果样例
    • start.batdocker 启动容器参考命令

使用说明

  • 可直接使用 Docker 环境运行此系统,如果需直接运行可参考 docker/Dockerfile 文件配置环境。

  • 如需构建镜像,请先从 Releases 中下载 model_main.onnxmodel_search.onnx 模型文件到 docker 目录,在 docker 目录下执行 docker build -t image_violation_detection .

接口说明

API POST /check_img

请求参数

base64url 参数二选一,分别表示图片的 base64 编码和图片的 url 地址,推荐使用 base64,从 url 抓取图片可能失败。

返回参数

  • img: 图片编号
  • white_result: 白名单检测结果
  • black_result: 黑名单检测结果
  • imgclass_result:正常、涉黄、敏感图片的预测概率
  • malicious_detect: 二维码检测结果
  • sensitive_detect: 敏感词检测结果
  • ocr_result: OCR 识别结果

返回样例

{
    "code": 0,
    "data": {
        "img": "tmp/41d96af188e8640fe730bd2aebb344dd",
        "white_result":  {"filename": "a.png", "sim": 0.96},
        "black_result":  {"filename": "b.png", "sim": 0.52},
        "imgclass_result": [
            {
                "label": "normal",
                "prob": 0.9997885823249817
            },
            {
                "label": "porn",
                "prob": 0.00018990205717273057
            },
            {
                "label": "sensitive",
                "prob": 2.1459745767060667e-05
            }
        ],
        "malicious_detect": [
            {
                "Wording": "该网站发布了违反国家相关法律规定的内容,已为您拦截。",
                "WordingTitle": "网站含有违规内容",
                "code": 201,
                "detect_time": "2023-04-14 16:41:02",
                "msg": "域名拦截",
                "url": "https://aaa.com"
            }
        ],
        "ocr_result": "测试",
        "sensitive_detect": {
            "category": "None",
            "keyword": "None"
        }
    },
    "msg": "success"
}

运行说明

环境变量

  • ocr_type=baidueasyocr,表示 OCR 识别方法,easyocr 则为本地识别,baidu 则为调用百度 API 识别,需开通 通用文字识别 API。若不包含此环境变量则表示不进行 OCR 识别
  • ocr_client_id=填写百度 API key(仅 OCR 方法为 baidu 时需要)
  • ocr_client_secret=填写百度 API secret(仅 OCR 方法为 baidu 时需要)
  • sensitive_detect_type=remote/local,表示敏感词检测方法,是本地词库匹配还是调用 API,若不设置此环境变量则不进行敏感词检测
  • sen_api_key=仅敏感词检测为 remote 需要,请前往 该网站 获取 API key
  • mal_api_key=二维码域名检测需要,若不设置此环境变量则不进行二维码域名检测,请前往 该网站 获取 API key
  • knn_query_k=黑白名单最大返回个数,若不设置默认为 1,最大不超过 50

运行命令

docker run --env-file env.list -p 5500:5500 --name image_violation_detection -v img_data:/app/img_data --restart=always tuxiaobei/image_violation_detection

env.list 即为环境变量列表,格式为

key1=value1
key2=value2
...

宿主机 img_data 目录即存储黑白名单图片,其中 img_data/white 下存储白名单图片,其中 img_data/black 下存储白名单图片

About

基于多模态特征融合的即时社交软件违规图片检测系统。通过结合图像和文本信息,系统支持对OCR后的文本进行高效的敏感词检测,并允许用户自定义敏感词词库。此外,系统能够自动识别图片中的二维码并提取域名进行安全检测,实现对图片的三分类,包括正常、涉黄和敏感信息,并支持建立图片黑白名单库进行匹配。

Resources

Stars

Watchers

Forks

Packages

No packages published