COD论文笔记 Deep Gradient Learning for Efficient Camouflaged 2022

news2024/11/23 23:26:13

动机

这篇论文的动机在于解决伪装目标检测(COD)中的一个关键问题:在复杂背景下,伪装目标与背景的边界模糊,使得检测变得极其困难。现有的方法,如基于边界或不确定性的模型,通常仅响应于伪装目标的稀疏边缘,导致在复杂场景中引入噪声特征。为了克服这些挑战,该论文提出了一种新的深度学习框架,利用对象梯度监督来提高伪装目标检测的精度和效率。

贡献

  1. 提出DGNet框架:引入了一种新的基于深度梯度的框架,名为DGNet,专门用于伪装目标检测。这个框架将任务解耦为两个互相关联的分支,即上下文编码器和纹理编码器。

  2. 设计梯度诱导过渡模块:提出了一种梯度诱导过渡模块(GIT),该模块自动根据软分组策略对来自上下文和纹理分支的特征进行分组。

  3. 高效模型DGNet-S:实现了一个高效版本DGNet-S,在保持高检测精度的同时,仅使用了6.82%的参数,并且达到了实时运行速度(80 fps)。

  4. 多种应用场景:在多种任务中展示了出色的性能,包括息肉分割、缺陷检测和透明物体分割。

创新点

  1. 对象梯度监督:不同于以往仅关注边界或不确定区域的模型,DGNet通过对象梯度监督来挖掘伪装目标内部的判别性模式,减少了噪声特征的引入。

  2. 任务解耦:将任务解耦为上下文和纹理两个分支,有助于缓解从单一分支提取的高层次和低层次特征之间的歧义。

  3. 梯度诱导过渡模块:设计了一种灵活的即插即用模块,通过组内和组间的特征聚合来增强多源特征空间的表示能力。

  4. 高效的计算和参数利用:DGNet-S在保持高性能的同时,显著减少了模型参数和计算开销,使其能够在实际应用中表现优异。

这些动机、贡献和创新点共同构成了该论文的核心内容,并展示了DGNet在伪装目标检测任务中的显著优势。

3.1 Context Encoder

输入和编码器选择

  • 输入图像 I ∈ R 3 × H × W I \in \mathbb{R}^{3 \times H \times W} IR3×H×W
  • 使用EfficientNet作为上下文编码器来获取金字塔特征 { X i } i = 1 5 \{X_i\}_{i=1}^{5} {Xi}i=15

特征降维

  • 为了在解码阶段实现高效的逐元素操作,采用以下两个步骤:
    1. 选择特征层:仅选择前三级特征(即当 i = 3 , 4 , 5 i = 3, 4, 5 i=3,4,5),这些特征保留了视觉场景的丰富语义信息。
    2. 卷积层降维:使用两个堆叠的ConvBR层,卷积核大小为 C i × 3 × 3 C_i \times 3 \times 3 Ci×3×3,将每个候选特征的维度减少到 C i C_i Ci,以减轻后续操作的计算负担。

最终输出

  • 上述步骤后的最终输出是三个上下文特征 { X R i } i = 3 5 ∈ R C i × H i × W i \{X_{R_i}\}_{i=3}^{5} \in \mathbb{R}^{C_i \times H_i \times W_i} {XRi}i=35RCi×Hi×Wi,其中 C i C_i Ci H i = H 2 i H_i = \frac{H}{2^i} Hi=2iH W i = W 2 i W_i = \frac{W}{2^i} Wi=2iW 分别表示特征图的通道数、高度和宽度。

核心点

  • EfficientNet作为编码器:选择EfficientNet的原因在于其高效性和强大的特征提取能力。
  • 特征降维策略:通过选择和降维步骤,确保在保持特征表达能力的同时,减轻计算负担。

总结,这部分详细介绍了如何利用EfficientNet对输入图像进行编码,并通过选择和降维策略获取上下文特征,为后续的解码过程提供高效且富有语义的信息。

3.2 Texture Encoder

引入纹理分支

  • 引入一个专门的纹理分支,通过对象级梯度图进行监督,以补偿上下文特征在几何纹理表示上的不足。

对象梯度生成

  • 梯度定义:图像梯度描述了图像强度或颜色在相邻位置之间的方向变化,常用于边缘检测和超分辨率。
  • 生成步骤
    1. 原始图像梯度:通过计算原始图像 I I I 的梯度生成图像梯度图,但包含了不相关的背景噪声。
    2. 对象级梯度图:为解决背景噪声问题,引入对象级梯度图 Z G Z_G ZG,该图同时包含对象边界和内部区域的梯度信息。
    3. 公式
      Z G = F E ( I ( x , y ) ) ⋅ Z C Z_G = F_E(I(x, y)) \cdot Z_C ZG=FE(I(x,y))ZC
      其中, F E F_E FE 表示标准的 Canny 边缘检测器, ⋅ \cdot 表示元素逐次相乘。

纹理编码器设计

  • 由于高分辨率的低层特征会引入计算负担,设计了一个轻量级的编码器,而不是使用现成的骨干网络。
  • 层次结构
    1. 卷积层和ReLU激活:使用卷积层和ReLU激活函数的组合(ConvBR)对输入进行处理。
    2. 层次细节
    • Layer #01: 卷积核大小为7,输出通道数为64,步幅为2,零填充为3。
    • Layer #02: 卷积核大小为3,输出通道数为64,步幅为2,零填充为1。
    • Layer #03: 卷积核大小为3,输出通道数为 C g C_g Cg,步幅为2,零填充为1。
    • Layer #04: 卷积核大小为1,输出通道数为1,步幅为1,无填充。
  • 生成纹理特征:从 Layer #03 提取纹理特征 X G ∈ R C g × H g × W g X_G \in \mathbb{R}^{C_g \times H_g \times W_g} XGRCg×Hg×Wg,并通过 Layer #04 用对象级梯度图 Z G Z_G ZG 进行监督。

高分辨率保持

  • 保持较大的分辨率(即 H g = H 8 H_g = \frac{H}{8} Hg=8H W g = W 8 W_g = \frac{W}{8} Wg=8W),因为较小分辨率的特征会丢失大部分几何细节。

总结,纹理编码器通过对象级梯度图进行监督,生成高分辨率的纹理特征,补偿上下文特征在几何纹理表示上的不足,从而增强模型对伪装目标的检测能力。

3.3 Gradient-Induced Transition

设计背景

  • 为了实现上下文特征和纹理特征的自适应融合,而不是采用简单的连接或加法操作,设计了一种灵活的即插即用梯度诱导过渡(GIT)模块。

模块组成

  • GIT模块包含三个主要步骤:梯度诱导分组学习、软分组策略和并行残差学习。

梯度诱导分组学习

  • 特征分组:采用梯度诱导分组策略,将三个上下文特征 { X R i } i = 3 5 \{X_{R_i}\}_{i=3}^{5} {XRi}i=35 和一个纹理特征 X G X_G XG 沿通道维度分割为固定的组。
    • 分组公式:
      { X R i , m } m = 1 M ∈ R K i × H i × W i ← X R i ∈ R C i × H i × W i \{X_{R_i,m}\}_{m=1}^{M} \in \mathbb{R}^{K_i \times H_i \times W_i} \leftarrow X_{R_i} \in \mathbb{R}^{C_i \times H_i \times W_i} {XRi,m}m=1MRKi×Hi×WiXRiRCi×Hi×Wi { X G m } m = 1 M ∈ R K g × H g × W g ← X G ∈ R C g × H g × W g \{X_{G_m}\}_{m=1}^{M} \in \mathbb{R}^{K_g \times H_g \times W_g} \leftarrow X_G \in \mathbb{R}^{C_g \times H_g \times W_g} {XGm}m=1MRKg×Hg×WgXGRCg×Hg×Wg其中, ← \leftarrow 表示特征分组操作, K i = C i M K_i = \frac{C_i}{M} Ki=MCi K g = C g M K_g = \frac{C_g}{M} Kg=MCg 分别表示每个特征组的通道数, M M M 是相应的组数。
  • 特征重组:将上下文和纹理特征组定期排列生成重组特征 Q i Q_i Qi
    Q i ∈ R ( C i + C g ) × H i × W i = ⟨ Y 1 i ; …   ; Y m i ; …   ; Y M i ⟩ Q_i \in \mathbb{R}^{(C_i+C_g) \times H_i \times W_i} = \langle Y_{1_i}; \dots; Y_{m_i}; \dots; Y_{M_i} \rangle QiR(Ci+Cg)×Hi×Wi=Y1i;;Ymi;;YMi
    其中 ⟨ ⋅ ; ⋅ ⟩ \langle \cdot; \cdot \rangle ; 表示通道维度的特征连接, Y m i Y_{m_i} Ymi 由以下公式得出:
    Y m i ∈ R ( K i + K g ) × H i × W i = ⟨ F ↓ ( X G m ) ; X R i , m ⟩ Y_{m_i} \in \mathbb{R}^{(K_i+K_g) \times H_i \times W_i} = \langle F_\downarrow(X_{G_m}); X_{R_i,m} \rangle YmiR(Ki+Kg)×Hi×Wi=F(XGm);XRi,m
    F ↓ ( ⋅ ) F_\downarrow(·) F() 是下采样操作,用于确保 X G m X_{G_m} XGm 的空间分辨率与 X R i , m X_{R_i,m} XRi,m 匹配。

软分组策略

  • 多尺度非线性投影:启发自并行设计,设置三个并行子分支(即 { N 1 , N 2 , N 3 } \{N_1, N_2, N_3\} {N1,N2,N3})进行软分组。
    • 投影公式:
      A N i = ⟨ F N 1 ( Q i 1 ) ; …   ; F N n ( Q i n ) … F N N ( Q i N ) ⟩ A_{N_i} = \langle F^1_N(Q^1_i); \dots; F^n_N(Q^n_i) \dots F^N_N(Q^N_i) \rangle ANi=FN1(Qi1);;FNn(Qin)FNN(QiN)⟩其中, F N n ( Q i n ) ∈ R C i N × H i × W i = f n ( Q i n , ω n ) F^n_N(Q^n_i) \in \mathbb{R}^{\frac{C_i}{N} \times H_i \times W_i} = f_n(Q^n_i, \omega_n) FNn(Qin)RNCi×Hi×Wi=fn(Qin,ωn) 引入了软非线性,投影函数 f n f_n fn 由具有 C i C_i Ci 个形状为 ( C i + C g ) N × 1 × 1 \frac{(C_i+C_g)}{N} \times 1 \times 1 N(Ci+Cg)×1×1 的卷积层实现,由可学习的权重 ω n \omega_n ωn 参数化。

并行残差学习

  • 残差连接:在不同的分组感知尺度上引入残差学习。
    • GIT函数 T i ( ⋅ , ⋅ ) T_i(\cdot, \cdot) Ti(,) 定义如下: Z i T = T i ( X R i , X G ) = X R i ⊕ ∑ N A N i Z^T_i = T_i(X_{R_i}, X_G) = X_{R_i} \oplus \sum_N A_{N_i} ZiT=Ti(XRi,XG)=XRiNANi其中, N ∈ { N 1 , N 2 , N 3 } N \in \{N_1, N_2, N_3\} N{N1,N2,N3} 表示不同组的缩放因子集, ⊕ \oplus 表示元素逐次相加, ∑ \sum 表示多个项的和。最终输出为 { Z i T } i = 3 5 ∈ R C i × H i × W i \{Z^T_i\}_{i=3}^{5} \in \mathbb{R}^{C_i \times H_i \times W_i} {ZiT}i=35RCi×Hi×Wi

关键点总结

  • 特征分组与重组:通过分组和重组策略,将上下文和纹理特征有效结合。
  • 软分组策略:通过多尺度的非线性投影,增强特征表示能力。
  • 并行残差学习:在不同尺度上进行残差学习,进一步提升特征融合效果。

综上所述,梯度诱导过渡模块(GIT)通过灵活的特征分组、软分组策略和并行残差学习,实现了上下文特征和纹理特征的高效融合,从而提高了伪装目标检测的性能。

3.4 Learning Details

解码器

  • 给定上下文特征 { X R i } i = 3 5 \{X_{R_i}\}_{i=3}^{5} {XRi}i=35,首先应用梯度诱导过渡(GIT)函数 T i ( ⋅ , ⋅ ) T_i(\cdot, \cdot) Ti(,) 得到输出特征 { Z i T } i = 3 5 \{Z^T_i\}_{i=3}^{5} {ZiT}i=35
  • 为了高效地利用上述梯度诱导特征 Z i T Z^T_i ZiT,采用邻居连接解码器(NCD)生成最终预测 P C P_C PC
    P C ∈ R 1 × H × W = NCD ( Z 3 T , Z 4 T , Z 5 T ) P_C \in \mathbb{R}^{1 \times H \times W} = \text{NCD}(Z^T_3, Z^T_4, Z^T_5) PCR1×H×W=NCD(Z3T,Z4T,Z5T)

损失函数

  • 整体优化目标定义为:
    L = L C ( P C , Z C ) + L G ( P G , Z G ) L = L_C(P_C, Z_C) + L_G(P_G, Z_G) L=LC(PC,ZC)+LG(PG,ZG)
    其中, L C L_C LC L G L_G LG 分别代表分割损失和对象梯度损失函数。
  • 分割损失 L C L_C LC:由加权交并比损失 L wIoU L_{\text{wIoU}} LwIoU 和加权二值交叉熵损失 L wBCE L_{\text{wBCE}} LwBCE 组成。它们根据像素的难度分配自适应权重,以关注全局结构和难度较大的像素。
  • 对象梯度损失 L G L_G LG:采用标准的均方误差损失函数。

训练设置

  • 模型在PyTorch/Jittor工具箱中实现,并在单个NVIDIA RTX TITAN GPU上进行训练和推理。
  • 初始化:模型参数初始化采用 [50] 的策略,骨干网络使用在ImageNet上预训练的权重进行初始化,以防止过拟合。
  • 骨干网络特征提取:从EfficientNet骨干网络的前三个侧输出(包括stage-4 (X_3),stage-6 (X_4),和stage-8 (X_5))提取特征,舍弃最后的Conv1×1、池化和全连接层。
  • 变体实例:考虑性能与效率的权衡,实例化了两个变体以适应不同的计算开销需求(见表2)。

训练过程

  • 优化器:使用Adam优化器,学习率调整采用SGDR策略的余弦退火部分,最小/最大学习率设置为 (10{-5}/10{-4}),最大调整迭代次数为20。
  • 批量大小:设置为12,最大训练轮数为100。
  • 数据增强:在训练过程中,每张图像调整为352×352,并使用四种数据增强技术:颜色增强、随机翻转、随机裁剪和随机旋转。
  • 训练时间:DGNet和DGNet-S分别需要8.8和7.9小时达到网络收敛。

测试设置

  • 输入调整:将输入图像调整为352×352,并在三个未见测试数据集上测试DGNet-S和DGNet。
  • 预测输出:取最终输出 P C P_C PC 作为预测图,不使用任何启发式后处理技术,如DenseCRF。

关键点总结

  • 解码器设计:通过NCD解码器实现上下文特征的有效利用,生成高质量的分割预测。
  • 损失函数:组合加权交并比损失和加权二值交叉熵损失,增强模型对全局结构和难度较大像素的关注;采用均方误差损失进行对象梯度监督。
  • 训练与优化:采用有效的初始化和优化策略,结合数据增强技术,确保模型的收敛和泛化性能。
  • 测试流程:调整输入图像尺寸并直接使用预测输出,不进行额外的后处理,简化推理过程。

综上所述,这部分详细描述了DGNet的学习过程,包括解码器设计、损失函数定义、训练设置和测试流程,确保了模型的高效训练和精确推理。

在这里插入图片描述

图3的详细解释

图3展示了所提出的DGNet的整体流程。该网络由两个相互关联的学习分支组成,即上下文编码器和纹理编码器。以下是图中各部分的详细说明:

  1. 输入图像 (a) Image

    • 输入图像 I I I 进入上下文编码器和纹理编码器。
  2. 上下文编码器 (Context Encoder)

    • 该编码器从输入图像中提取上下文特征 { X i R } i = 3 5 \{X^R_i\}_{i=3}^{5} {XiR}i=35
    • 上下文编码器的输出特征 X 3 R , X 4 R , X 5 R X^R_3, X^R_4, X^R_5 X3R,X4R,X5R 进入梯度诱导过渡模块(GIT)。
  3. 纹理编码器 (Texture Encoder)

    • 纹理编码器从输入图像中提取纹理特征 X G X^G XG
    • 纹理编码器的输出特征 X G X^G XG 也进入梯度诱导过渡模块(GIT)。
  4. 梯度诱导过渡模块 (Gradient-Induced Transition, GIT)

    • GIT模块将上下文特征和纹理特征进行融合,生成过渡特征 { Z i T } i = 3 5 \{Z^T_i\}_{i=3}^{5} {ZiT}i=35
    • GIT模块包括三个子模块 T 3 , T 4 , T 5 T_3, T_4, T_5 T3,T4,T5,分别对 X 3 R , X 4 R , X 5 R X^R_3, X^R_4, X^R_5 X3R,X4R,X5R X G X^G XG 进行处理和融合。
  5. 邻居连接解码器 (Neighbor Connected Decoder, NCD)

    • GIT的输出特征 { Z i T } i = 3 5 \{Z^T_i\}_{i=3}^{5} {ZiT}i=35 通过NCD解码器生成最终的预测图 P C P^C PC
    • 解码器将多层特征进行整合,生成伪装目标的分割结果。
  6. 监督信号 (Supervision Signals)

    • Ground-Truth (b):真实的分割标签 Z C Z^C ZC,用于计算分割损失 L C L_C LC
    • Object Boundary ©:对象边界,作为对比,说明了仅使用边界监督时的不足。
    • Image Gradient (e):图像梯度,通过计算原始图像的梯度生成,但包含了不相关的背景噪声。
    • Object Gradient (d):对象梯度图 Z G Z^G ZG,通过对原始图像 I I I 和真实标签 Z C Z^C ZC 进行元素逐次相乘生成,包含了对象边界和内部区域的梯度信息,作为纹理编码器的监督信号,用于计算梯度损失 L G L_G LG

关键流程总结

  • 输入图像 I I I 被并行输入到上下文编码器和纹理编码器中。
  • 上下文编码器提取高层次的语义特征 X i R X^R_i XiR(如 X 3 R , X 4 R , X 5 R X^R_3, X^R_4, X^R_5 X3R,X4R,X5R)。
  • 纹理编码器提取对象内部的几何纹理特征 X G X^G XG
  • GIT模块将这些上下文特征和纹理特征进行融合,生成更具判别力的过渡特征 Z i T Z^T_i ZiT
  • 最终,NCD解码器对融合后的特征进行解码,生成分割预测 P C P^C PC
  • 使用真实标签 Z C Z^C ZC 和对象梯度图 Z G Z^G ZG 作为监督信号,分别计算分割损失 L C L_C LC 和梯度损失 L G L_G LG

通过这种设计,DGNet能够在复杂背景中有效地检测和分割伪装目标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1936356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

oceanbase架构、功能模块、数据存储、特性、sql流转层等概念详解

一、架构图 OceanBase 数据库采用无共享(Shared-Nothing)分布式集群架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎、事务引擎,运行在普通 PC 服务器组成的集群之上,具备高可扩展性、高…

澎湃算力 玩转AI 华为昇腾AI开发板——香橙派OriengePi AiPro边缘计算案例评测

澎湃算力 玩转AI 华为昇腾AI开发板 香橙派OriengePi AiPro 边缘计算案例评测 人工智能(AI)技术正以前所未有的速度改变着我们的生活、工作乃至整个社会的面貌。作为推动这一变革的关键力量,边缘计算与AI技术的深度融合正成为行业发展的新趋势…

秒懂C++之类与对象(下)

目录 一.static成员 测试: 二.explicit关键字 三.友元(少用) 友元函数: 友元类: 四.内部类(少用) 五.(扩展)编译器的优化 一.static成员 测试: 实现一…

【分布式事务】怎么解决分布式场景下数据一致性问题

分布式事务的由来 拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户余额服务。原本收到充值回调后,可以将修改订单状态和扣减余额放在一个mysql事务…

邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS)

1. 前言 使用过邮件客户端的同学一定见过下面这张图。这是客户端账号配置界面,里面有SSL、STARTTLS选项。刚接触邮件客户端的同学肯定会有这些疑问:什么是SSL?什么是STARTTLS?两者有什么区别?具体该如何选择呢&#x…

首批通过 | 百度通过中国信通院H5端人脸识别安全能力评估工作

2024年5月,中国信息通信研究院人工智能研究所依托中国人工智能产业发展联盟安全治理委员会(AIIA)、“可信人脸应用守护计划”及多家企业代表共同开展《H5端人脸识别线上身份认证安全能力要求及评估方法》的编制工作,并基于该方法开…

创新驱动的力量:探索Web3在技术发展中的作用

随着科技的不断进步和创新,Web3作为新一代互联网技术范式,正在以其去中心化、安全、透明和可编程的特性,深刻影响着全球技术发展的方向和速度。本文将深入探讨Web3技术的核心概念、关键特征以及其在技术创新中的重要作用,展示其在…

【Android】Fragment的静态动态创建以及两种创建方式的生命周期

参考: 33.3-Fragment的创建-静态创建2_哔哩哔哩_bilibili Fragment的创建_从现有代码创建foutran-CSDN博客 【Android】Fragment的基本用法、Fragment和活动间的通信、Fragment的生命周期、动态加载布局的技巧_android fragment-CSDN博客 文章目录 Fragment的静态创…

贝锐蒲公英远程运维方案:即装即用、无需专线,断网也可远程维护

目前,公路、隧道、桥梁、航道,甚至是施工现场和工业生产环境等,都采用了实时监测方案。 通过部署各类传感器和摄像头等设备,现场视频画面和控制单元(如PLC、工控机等)数据可以实时回传,用于集中…

0711springNews新闻系统管理 实现多级评论

0611springmvc新闻系统管理-CSDN博客 0711springNews新闻系统管理项目包 实现多级评论-CSDN博客 数据库字段 需要添加父节点id,通过该字段实现父评论和子评论的关联关系。 对象属性 实现链表,通过一个父评论可以找到它对应的所有子孙评论。 业务层 实现…

linux集群架构--web服务器--nginx检查模块/算法/rewrite知识补充

web集群-负载均衡 轮询算法 (1)概述 决定负载均衡如何把请求分发给后端节点,这种分发的方式就是轮询算法 (2)轮询算法 面试题:说说常见nginx轮询算法 rr,wrr,ip_hash,lc算法(最小连接数&…

CH03_布局

第3章:布局 本章目标 理解布局的原则理解布局的过程理解布局的容器掌握各类布局容器的运用 理解 WPF 中的布局 WPF 布局原则 ​ WPF 窗口只能包含单个元素。为在WPF 窗口中放置多个元素并创建更贴近实用的用户男面,需要在窗口上放置一个容器&#x…

基于 Three.js 的 3D 模型加载优化

作者:来自 vivo 互联网前端团队- Su Ning 作为一个3D的项目,从用户打开页面到最终模型的渲染需要经过多个流程,加载的时间也会比普通的H5项目要更长一些,从而造成大量的用户流失。为了提升首屏加载的转化率,需要尽可能…

怎么关闭 Windows 安全中心,手动关闭 Windows Defender 教程

Windows 安全中心(也称为 Windows Defender Security Center)是微软 Windows 操作系统内置的安全管理工具,用于监控和控制病毒防护、防火墙、应用和浏览器保护等安全功能。然而,在某些情况下,用户可能需要关闭 Windows…

通义千问AI模型对接飞书机器人-集成飞书机器人(2-2)

接上一篇 通义千问AI模型对接飞书机器人-模型配置(2-1) 1、通过飞书机器人对接ai的在线接口 参考文档:发送 HTTP 请求 1.1 创建飞书应用 创建流程 配置http请求 http请求地址上一篇百炼平台配置的应用地址 1.2 企业自建应用对接AI 添加应用…

小程序-5(vant组件+全局数据共享+分包+tabBar案例)

目录 1.使用npm包 小程序对npm的支持和限制 使用vant组件 使用CSS变量定制主题样式 API的promise化 2.全局数据共享 小程序中的全局数据共享方案 安装MobX相关的包 创建MobX的store实例 将Store中的成员绑定到页面中 在页面上使用Store中的成员 将Store中的成员绑定…

pyqt/pyside QTableWidget失去焦点后,选中的行仍高亮的显示

正常情况下pyqt/pyside的QTableWidget,点击input或者按钮失去焦点后 行的颜色消失了 如何在失去焦点时保持行的选中颜色,增加下面的代码: # 获取当前表格部件的调色板 p tableWidget.palette()# 获取活跃状态下的高亮颜色和高亮文本颜色&a…

防火墙内容安全综合实验

一、实验拓扑 二、实验要求 1,假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 2,我们需要针对办公区用户进行上网行为管理,要…

仿源码大师主界面UI的iAPP源文件

仿源码大师首页主界面的布局 首页,分类,需求,我的 就只有这几个界面内容而已 资源静态 没有任何动画和功能 纯UI布局 纯UI布局 他的最新版已经不是这个UI布局 放心使用 以学习参考为目的,如有不妥望告知 原创,纯…

国内微短剧系统平台抖音微信付费小程序app开发源代码交付

微短剧作为当下热门的内容,结合抖音平台的广泛用户基础,开发微短剧付费小程序APP具有显著的市场潜力,用户对于短剧内容的需求旺盛,特别是在言情、总裁、赘婿等热门题材方面,接下来给大家普及一下微短剧小程序系统。 顺…