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

动机

这篇论文的动机在于解决伪装目标检测(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.mzph.cn/news/873593.shtml

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

相关文章

如何定位Milvus性能瓶颈并优化

假设您拥有一台强大的计算机系统或一个应用,用于快速执行各种任务。但是,系统中有一个组件的速度跟不上其他部分,这个性能不佳的组件拉低了系统的整体性能,成为了整个系统的瓶颈。在软件领域中,瓶颈是指整个路径中吞吐…

价格战再起:OpenAI 发布更便宜、更智能的 GPT-4o Mini 模型|TodayAI

OpenAI 今日推出了一款名为 GPT-4o Mini 的新模型,这款模型较轻便且成本更低,旨在为开发者提供一个经济实惠的选择。与完整版模型相比,GPT-4o mini 在成本效益方面表现卓越,价格仅为每百万输入 tokens 15 美分和每百万输出 tokens…

某4G区域终端有时驻留弱信号小区分析

这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置(其阈值为-106)。而这个条件很容易满足,一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…

神经网络之卷积神经网络

目录 一、卷积神经网络概述:1.卷积层:1.1卷积核与神经元:1.2卷积层作用:1.3多通道概念: 2.池化层:2.1池化层作用: 3.隐藏层与卷积层、池化层关系: 一、卷积神经网络概述:…

Flutter TextFiled频繁采集“剪切板信息”

在使用Flutter开发者,输入框是必不可少的功能,最近产品出了需要,要求输入框记住用户登录过的手机号,并在输入框输入时提示出来,这是个很基础的功能,但是在通过测试验收发布到应用市场时,被Vivo拒…

Spring Boot项目中使用MyBatis Generator (MBG) 自动生成Mapper文件

Spring Boot项目中使用MyBatis Generator (MBG) 自动生成Mapper文件可以很大程度上减少编码。本文着重介绍如何在实战中使用MGB自动生成Mapper文件 1. 添加MyBatis Generator依赖 在pom.xml中添加必要的依赖 <dependency><groupId>org.mybatis.spring.boot</…

uniapp中给data中的变量赋值报错

排查了一上午&#xff0c;原本以为是赋值的这个变量有一个键名是空字符串的问题&#xff0c;后来发现是因为在data中定义变量是写的是{}&#xff0c;如果写成null就不会报错了&#xff0c;具体原因不清楚为什么

逻辑回归(Logistic Regression,LR)

分类和回归是机器学习的两个主要问题。 分类处理的是离散数据回归处理的是连续数据 线性回归&#xff1a;回归 拟合一条线预测函数&#xff1a; 逻辑回归&#xff1a;分类——找到一条线可以将不同类别区分开 虽然称为逻辑回归&#xff0c;但是实际是一种分…

2024 HNCTF PWN(hide_flag Rand_file_dockerfile Appetizers TTOCrv_)

文章目录 参考hide_flag思路exp Rand_file_dockerfile libc 2.31思路exp Appetizers glibc 2.35绕过关闭标准输出实例客户端 关闭标准输出服务端结果exp TTOCrv_&#x1f3b2; glibc 2.35逆向DT_DEBUG获得各个库地址随机数思路exp 参考 https://docs.qq.com/doc/p/641e8742c39…

从零开始学量化~Ptrade使用教程(七)——期权相关操作

期权交易 可点击证券代码右侧的选&#xff0c;进入期权选择菜单。通过选择标的商品&#xff0c;认购期权和认沽期权中间的选项&#xff08;包括代码、成交价、幅度%、隐波%、内在价值、时间价值等&#xff09;&#xff0c;以及认购期权或认沽期权&#xff0c;选择所需的期权标的…

计算机网络入门 -- 常用网络协议

计算机网络入门 – 常用网络协议 1.分类 1.1 模型回顾 计算机网络细分可以划为七层模型&#xff0c;分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而上三层可以划为应用层中。 1.2 分类 1.2.1 应用层 为用户的应用进程提供网络通信服务&#xff0…

深入浅出WebRTC—DelayBasedBwe

WebRTC 中的带宽估计是其拥塞控制机制的核心组成部分&#xff0c;基于延迟的带宽估计是其中的一种策略&#xff0c;它主要基于延迟变化推断出可用的网络带宽。 1. 总体架构 1.1. 静态结构 1&#xff09;DelayBasedBwe 受 GoogCcNetworkController 控制&#xff0c;接收其输入…

buu--web做题(4)

目录 [BJDCTF2020]ZJCTF&#xff0c;不过如此 [BUUCTF 2018]Online Tool [BJDCTF2020]ZJCTF&#xff0c;不过如此 <?phperror_reporting(0); $text $_GET["text"]; $file $_GET["file"]; if(isset($text)&&(file_get_contents($text,r)&q…

【iOS】——消息传递底层实现

消息传递是什么 Objective-C是一种动态类型语言&#xff0c;这意味着在编译时并不确定对象的具体类型&#xff0c;而是在运行时决定。消息传递机制允许程序在运行时向对象发送消息&#xff0c;对象再决定如何响应这些消息。 当你通过对象调用方法时&#xff0c;例如像这样[ob…

PhantomJs将html生成img|pdf

PhantomJS PhantomJS是一个可编程的无头浏览器&#xff0c;‌它基于WebKit内核&#xff0c;‌通过JavaScript API进行脚本化操作&#xff0c;它对各种web标准有快速和原生化的支持&#xff0c;包括DOM处理、CSS选择器、JSON、Canvas和SVG。‌无头浏览器指的是一个完整的浏览器内…

Linux——多路复用之poll

目录 前言 一、poll的认识 二、poll的接口 三、poll的使用 前言 前面我们学习了多路复用的select&#xff0c;知道多路复用的原理与select的使用方法&#xff0c;但是select也有许多缺点&#xff0c;导致他的效率不算高。今天我们来学习poll的使用&#xff0c;看看poll较于…

Linux先行一步

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

初识模板【C++】

P. S.&#xff1a;以下代码均在VS2022环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

AV1技术学习:Intra Prediction

对于帧内预测模式编码块&#xff0c;亮度分量的预测模式和色度分量的预测模式在比特流中分别发出信号。亮度预测模式是基于相邻左侧和上侧两个编码块预测上下文的概率模型进行熵编码的。色度预测模式的熵编码取决于色度预测模式的状态。帧内预测以变换块为单位&#xff0c;并使…

Linux下文件I/O操作

读取 time.txt 文件&#xff0c;写入到time_2.txt 一、函数 1.1、open() 函数 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);…