PDP

A Perceptual Distinguishability Predictor For JND-Noise-Contaminated Images

摘要:恰察觉失真(JND)模型被广泛用于图像和视频中的感知冗余估计。测量JND模型精度的常用方法是在基于JND模型的图像中注入随机噪声,并检查JND噪声污染的图像在感知上是否可与原始图像区分开。此外,当比较两种不同的JND模型的精度时,在相同的噪声能量水平下产生具有更好质量的JND噪声污染图像的模型是更好的模型。但是在这两种情况下,主观测试都是必要的,这是非常耗时和昂贵的。在这篇文章中,作者提出了一个全参考度量称为PDP(感知可区分性预测),它可以用来确定一个给定的JND噪声污染的图像对比参考图像是否感知可区分的。所提出的度量采用稀疏编码的概念,并从给定的图像对中提取特征向量。然后将特征向量输入多层神经网络进行分类。为了训练网络,作者建立了一个999幅自然图像的公共数据库,这些自然图像具有从大量主观实验中获得的四种不同JND模型的分辨率阈值。结果表明,PDP达到了97.1%的高分类精度。所提出的方法可用于客观地比较各种JND模型,而无需进行任何主观测试。它还可以用来获得适当的比例因子,以提高由任意JND模型估计的JND阈值。

主要工作

  1. 提出一个JND噪声污染图像的感知可区分预测器(PDP);
  2. 为四种不同的JND模型提出了一个具有图像级可区分阈值的数据库;
  3. 提出了一种基于图像内容为任意JND模型选择比例因子的系统方法,用于更精确地估计JND阈值,比较各种JND模型;

感知可区分预测器(PDP)

PDP示意图
上图描述了PDP的流程图。该方法包括两个主要部分:1)学习感知特征检测器,2)感知区分度测量。第二部分本身由以下三个步骤组成:a)特征提取,b)特征相似性度量,c)分类。

学习特征检测器

使用独立成分分析(ICA)来实现,x表示矢量化的图像块,假设x可以用字典中一些基向量的线性叠加来表示,即
在这里插入图片描述
两边同时乘以字典的逆,可得稀疏特征向量
在这里插入图片描述
字典的逆通过对一组自然图像块应用稀疏编码方法获得

学习特征检测器的作用,就是通过将它应用于给定的图像块x,可以获得稀疏特征向量c。

x的选取

从9张图像中随机提取大小为8×8的P(20000)个块,对图像块进行矢量化,生成大小为64 × 20000的数据矩阵X
9张图像

稀疏编码

应用主成分分析(PCA)来降低数据矩阵维数,实验发现K = 50时,可以获得最好的结果。然后使用pca的对角矩阵和C的k个最大特征值 得到白化矩阵w,白化数据Z。最后使用FastICA稀疏编码方法进行特征的学习
FastICA过程
最后一步是为了将获得的特征检测器从白化空间变换到原始空间,最终得到的50个基向量
50个8x8的基向量

感知区分度度量

特征提取:R为参考灰度图像,J为JND噪声污染图像。使用学习特征检测器为R和J提取稀疏特征向量

1)将R和J都划分为8×8不重叠的块,将获得的块矢量化及中心化,得到两个64 × Q的矩阵
2)将使用MS-SSIM计算J中每个块的感知质量分数,保留质量差的块,矩阵大小为64 × G
3)
在这里插入图片描述
4)计算稀疏特征向量的功率,丢弃功率低的向量,矩阵大小为K × H

在这里插入图片描述

特征相似性度量

度量所计算的特征矩阵之间的相似性,就不概述
在这里插入图片描述
最终特征向量h的长度将为2K,因为它是通过h1和h2的连接获得的。因为,在实验中,K = 50,h的长度将是100。

分类:多层感知器

网络的输入和输出神经元的数量分别等于100和1,第一至第三隐藏层的神经元数目分别为128、64和16,Sigmoid函数作为输出层的激活函数。网络的输出是二进制值(0或1),它决定了输入的噪声图像在感知上是否可与参考图像区分开。

数据库

为了训练分类器,文章建立一个图像数据库,其中每个图像有四个与四个不同的JND模型相关的可分辨阈值
1 )采用MIT中的999张1024 × 768彩色图像
2) 采用四个JND模型:Wu2017 、Liu2010 、Wu2013 和Yang2005
JND噪声污染图像生成公式
3)可区分阈值:一个合适的s值,来衡量所采用的JND模型在该参考图像的JND阈值,999 × 4 = 3996个可分辨阈值

可区分阈值测量实验

1)定义一个心理测量函数,该函数将JND噪声污染图像中的噪声能量与相应的感觉(两幅图像之间的可分辨性)联系起来
2)求取初始可区分阈值
3)使用Psi方法自适应地估计可区分阈值和函数斜率

实验结果

PDP的交叉验证精度

在这里插入图片描述

基于PDP的多种JND模型比较

在这里插入图片描述

基于PDP的多种JND模型比较(非数据库模型)

比较步骤
1)将s设置为初始值s0
2)生成JND噪声污染图像
3)在R和J上应用PDP。如果它们在感知上是可区分的,用步长ζ减小S的值,然后返回步骤2。否则将可区分阈值设置为当前值s,然后退出。
在这里插入图片描述

总结

1)PDP适用于JND噪声污染图像,具有很高的分类精度和很好的泛化能力
2)提出的数据库可用于生成任意数量的具有可区分阈值的训练样本,能很好的解决数据样本少的问题
3)基于PDP的客观评价标准,无需主观测试便可以很好的比较各种JND模型的准确性和效率

<think>好的,我现在需要回答用户关于PDP图(部分依赖图)在机器学习中的实现方式的问题。首先,我得回忆一下PDP图的基本概念,确保自己理解正确。部分依赖图是用来显示一个或两个特征对机器学习模型预测结果的边际效应,帮助理解特征与目标变量之间的关系。用户可能想知道如何具体实现这个图,可能需要步骤和示例代码。 接下来,我需要考虑用户提到的引用内容。引用[1]和[2]都提到了PDP用于全局和局部解释,特别是连续特征。用户可能对R语言和Python的实现都感兴趣,但根据示例中的Python代码,可能更倾向于Python的实现。不过原引用中的引用[1]提到的是R语言,但用户现在的问题没有指定语言,可能需要同时覆盖或确认。 然后,按照系统指令,需要生成相关问题,并且回答中引用末尾添加标识。需要确保所有数学表达式用$...$,独立公式用$$...$$,并且正确使用LaTeX语法。同时用中文回答,结构清晰。 首先,我需要整理PDP的实现步骤。通常步骤包括:训练模型,选择目标特征,生成网格值,计算每个网格点的平均预测值,绘制图表。每个步骤需要详细说明,可能涉及公式,例如部分依赖函数的数学表达式。 数学公式方面,部分依赖函数的定义是:对于特征$s$,其部分依赖函数为$\hat{f}_s(x_s) = \frac{1}{N}\sum_{i=1}^N \hat{f}(x_s, x_c^{(i)})$,其中$x_c^{(i)}$是数据集中其他特征的观测值。这个需要以独立公式形式呈现,用$$...$$。 然后,实现方式可能分为手动实现和使用库(如scikit-learn)。需要给出Python代码示例,比如使用sklearn的PartialDependenceDisplay或pdpbox库。要确保代码正确,并且解释清楚。 另外,需要注意用户提到的引用,引用[1]和[2],所以在回答中适当的位置加入引用标识,例如在解释全局解释时引用[2]。 可能的问题点:是否需要解释PDP的优缺点?用户的问题主要是实现方式,但可能简要提及注意事项,比如特征相关性的影响,或者计算效率。这部分可以放在注意事项里。 然后,生成的相关问题需要考虑用户可能进一步想了解的内容,比如与其他特征重要性方法的比较,PDP的局限性,或者实际案例应用。 最后,检查是否符合所有系统指令:行内公式正确,独立公式单独成段,LaTeX正确,中文回答,生成相关问题,引用标识正确放置。确保没有使用任何Markdown格式,除了代码块需要用三个反引号包裹。 现在整理这些思路,开始构建回答的结构:概述PDP,数学定义,实现步骤(手动和库),代码示例,注意事项,相关问题。每个部分要简洁明了,符合用户需求。</think>### 部分依赖图(PDP)的实现方式 #### 1. PDP概述 部分依赖图(Partial Dependence Plot, PDP)用于展示一个或两个特征对机器学习模型预测结果的**边际效应**,尤其适用于解释连续特征与目标变量之间的关系[^1]。其核心思想是通过固定目标特征的值,并计算模型预测的平均值,从而消除其他特征的影响。 #### 2. 数学定义 对于特征子集$S$(通常为1-2个特征),部分依赖函数定义为: $$PD_S(x_S) = \frac{1}{N}\sum_{i=1}^N \hat{f}(x_S, x_C^{(i)})$$ 其中: - $x_S$:目标特征的取值 - $x_C^{(i)}$:数据集中其他特征的第$i$个观测值 - $\hat{f}$:训练好的模型预测函数 #### 3. 实现步骤(以Python为例) ##### 方法1:手动实现 1. **训练模型**:使用随机森林、GBDT等支持PDP的模型。 2. **生成网格值**:在目标特征的值域范围内生成均匀间隔的点。 3. **计算平均预测值**: ```python def manual_pdp(model, data, target_feature, grid_values): pdp_values = [] for value in grid_values: modified_data = data.copy() modified_data[target_feature] = value preds = model.predict(modified_data) pdp_values.append(preds.mean()) return pdp_values ``` ##### 方法2:使用`scikit-learn`库 ```python from sklearn.inspection import PartialDependenceDisplay import matplotlib.pyplot as plt # 训练模型后调用 features = [0] # 目标特征的索引 PartialDependenceDisplay.from_estimator(model, X_train, features) plt.show() ``` #### 4. 注意事项 - **特征相关性**:若目标特征与其他特征强相关,PDP可能生成不真实的样本组合[^2]。 - **计算效率**:对大数据集需采用抽样或并行计算优化。 - **分类问题**:需指定预测类型(如概率或类别)。 #### 5. 扩展工具 - `pdpbox`库:提供交互式可视化与多维PDP支持。 - `SHAP`库:结合PDP与Shapley值增强可解释性。 ```python # 使用pdpbox示例 from pdpbox import pdp pdp_isolate = pdp.pdp_isolate(model=model, dataset=X_train, model_features=X_train.columns, feature='age') pdp.pdp_plot(pdp_isolate, 'age') plt.show() ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值