知识蒸馏避坑指南:为什么你的学生模型总把缺陷当正常?(附CDO解决方案)

news2026/3/13 17:25:08
知识蒸馏避坑指南为什么你的学生模型总把缺陷当正常(附CDO解决方案)最近在和一些做工业质检的朋友交流时发现一个挺有意思的现象大家满怀期待地部署了基于知识蒸馏的缺陷检测模型初期效果惊艳但运行一段时间后误报率却悄悄爬升甚至开始把一些明显的缺陷也判定为“正常”。这感觉就像你教一个学生认苹果他不仅学会了认红富士还自作主张地把梨、西红柿甚至红色的气球都归为苹果这种“过度聪明”反而成了麻烦。问题的核心往往出在知识蒸馏过程中一个容易被忽视的陷阱——过度泛化或者说学生模型学“太好”了以至于把异常也当成了正常知识的一部分。这种现象在学术上有个更精确的术语叫做overgeneration。它并非模型能力不足恰恰相反是学生模型在教师模型的“言传身教”下对正常样本的特征规律掌握得过于“透彻”形成了一种强大的内插和外推能力。当遇到训练时从未见过的、但某些局部特征与正常样本相似的缺陷时学生模型会自信地将其映射到已学习的正常特征空间中导致输出与教师模型高度相似从而被系统误判为正常。这直接动摇了知识蒸馏用于异常检测的基本前提即学生模型只对见过的正常样本产生与教师一致的响应。今天我们就来深入剖析这个坑是如何形成的并借助一篇2023年的前沿工作——CDOCollaborative Discrepancy Optimization探讨一套系统性的解决方案。1. 过度泛化知识蒸馏在异常检测中的“阿喀琉斯之踵”知识蒸馏Knowledge Distillation的基本思想优雅而直观用一个庞大、复杂但精确的教师模型Teacher Model去指导一个轻量、高效的学生模型Student Model学习。在图像缺陷检测场景下我们通常只用大量正常样本进行训练。理想情况下学生模型通过模仿教师对正常样本的特征表达学会“正常”的模样。当输入一张缺陷图像时由于学生从未学习过这种模式其内部特征表示应与教师产生显著差异这个差异就是缺陷的“信号”。然而现实往往比理想骨感。学生模型尤其是具备一定容量和表达能力的网络其学习目标是最小化与教师在正常样本上的特征差异。这个优化过程本质上是在拟合一个高维特征空间中的流形。当这个流形被拟合得过于光滑、连续时它就具备了强大的泛化能力。这种能力对于分类任务或许是福音但对于异常检测却是灾难。为什么会出现 overgeneration我们可以从几个层面来理解特征空间的连续性假设深度学习模型倾向于学习平滑的映射函数。在正常样本密集的区域模型学到的特征表示是连续且可微的。当一个缺陷样本的某些局部纹理、颜色或形状恰好落在这个连续空间的某个“插值点”上时模型会自然地给出一个平滑的、与邻近正常样本相似的特征输出。教师模型的“知识偏差”教师模型本身是在特定数据集如ImageNet上预训练的其提取的特征本身就带有强烈的先验。这些特征对于区分1000类物体可能非常有效但对于区分“正常产品”和“细微划痕”这种细微差异可能并不敏感。学生模仿的可能已经是带有某种“模糊性”的知识。缺乏负样本约束这是最根本的原因。整个训练过程只告诉学生“什么是正常”从未明确告知“什么不是正常”。就像只给孩子看圆形然后问他正方形是不是圆形他可能会根据“有角”来判断不是但如果看到一个非常接近圆形的椭圆他就可能犹豫甚至误判。模型缺乏对“异常边界”的认知。注意这里说的“负样本”并非指缺陷样本我们通常没有或很少而是指一种机制用于模拟或定义“非正常”的特征区域从而为学生模型划定学习的边界。一个常见的误区是认为 overgeneration 只发生在模型过于复杂时。实际上即使是一个相对简单的学生网络如果训练时间足够长或正常样本的多样性不足同样可能陷入对正常模式的“过拟合式泛化”即对训练分布内的变化极其敏感但对分布外的异常却丧失了区分度。这导致模型在测试集同分布正常样本上表现完美却在遇到真实缺陷时失灵。2. CDO框架解析用“虚拟缺陷”为学生模型设立警戒线面对 overgeneration 的挑战2023年发表在IEEE Transactions on Industrial Informatics上的论文《Collaborative Discrepancy Optimization for Reliable Image Anomaly Localization》提出了一种名为CDO的协作差异优化框架。其核心思想非常巧妙既然无法获取真实的缺陷样本那就主动制造“虚拟缺陷”来约束学生模型的学习过程。CDO不再满足于让学生模型被动地模仿教师而是引入了一种对抗性的协作机制。它让学生在模仿教师对正常样本反应的同时还必须学会对“看起来像正常、但实则有问题的”样本做出截然不同的反应。整个框架的流程可以概括为以下几个关键步骤正常样本特征提取教师模型和学生模型同时处理一批正常图像分别提取其特征。虚拟缺陷生成对同一批正常图像施加特定的噪声或扰动生成一批“伪缺陷”样本。这种扰动不是随机的而是经过设计的旨在破坏图像的局部正常结构同时保持全局语义不至于完全崩塌以模拟真实缺陷可能的表现形式。双路径差异优化一致性路径对于原始正常样本优化学生模型使其特征输出尽可能接近教师模型。这是传统知识蒸馏的目标。差异性路径对于生成的虚拟缺陷样本优化学生模型使其特征输出尽可能远离教师模型。这是CDO的核心创新。动态权重平衡由于正常样本和虚拟缺陷样本的“学习难度”不同CDO引入了一个动态权重调整模块灵感来源于Focal Loss自动降低那些已经学得很好的“简单”样本的损失权重同时增加那些难以区分的“困难”样本无论是正常还是虚拟缺陷的权重迫使模型聚焦于决策边界附近的样本。下面这个表格对比了传统知识蒸馏与CDO框架在目标上的本质区别比较维度传统知识蒸馏 (用于异常检测)CDO (协作差异优化)训练样本仅正常样本正常样本 虚拟缺陷样本学生-教师关系单向模仿学生对正常样本输出 → 接近教师双向协作对正常样本接近对虚拟缺陷样本远离优化目标最小化正常样本的特征差异最小化正常样本差异 最大化虚拟缺陷样本差异对 overgeneration 的应对无 explicit 约束依赖模型容量和运气通过虚拟缺陷主动定义异常边界显式约束核心隐喻学生模仿老师画圆学生不仅学画圆还要学会识别并拒绝画得像圆的椭圆或其它形状CDO的这种设计相当于在特征空间中不仅拉近了学生和教师对于正常样本的“点”还在这些点的周围有策略地推开了一些“锚点”虚拟缺陷对应的特征从而在学生模型的决策边界上树立了明确的“此路不通”的标识。当遇到真实缺陷时只要其特征落入这些被推开的区域或其延伸方向模型就能更可靠地将其识别为异常。3. 关键技术点拆解从理论到实现的细节理解了CDO的宏观框架我们再来深入其内部的几个关键技术点这些是决定方案能否成功落地的细节。3.1 虚拟缺陷的生成艺术噪声不是随便加的“在正常样本上加噪声”听起来简单但加什么样的噪声、加在何处、强度如何都大有讲究。CDO论文中探索了多种噪声类型其选择标准是生成的虚拟缺陷应能有效破坏图像的局部正常模式但又不至于变成完全无意义的随机噪声。因为后者对学生模型来说太容易区分起不到约束决策边界的作用。一种有效的策略是使用结构化噪声或局部遮挡。例如模拟划痕的线性噪声、模拟污渍的块状噪声、或者随机擦除图像的一小部分。这比高斯白噪声或椒盐噪声更贴近工业缺陷的物理成因。在实践中我们可以定义一个噪声生成函数库import numpy as np import cv2 def generate_virtual_defect(image, defect_typescratch, intensity0.3): 生成虚拟缺陷。 Args: image: 输入的正常图像 (H, W, C) defect_type: 缺陷类型如 scratch, stain, blob intensity: 缺陷强度或尺寸系数 Returns: defective_image: 添加了虚拟缺陷的图像 h, w, c image.shape defective_image image.copy() if defect_type scratch: # 模拟划痕随机生成一条线段并在线段附近添加暗色或亮色像素 x1, y1 np.random.randint(0, w), np.random.randint(0, h) angle np.random.uniform(0, 2*np.pi) length int(min(h, w) * intensity) x2 int(x1 length * np.cos(angle)) y2 int(y1 length * np.sin(angle)) cv2.line(defective_image, (x1, y1), (x2, y2), (0, 0, 0), thickness2) # 黑色划痕 # 可以添加高斯模糊使划痕边缘更自然 roi defective_image[max(0,y2-5):min(h,y25), max(0,x2-5):min(w,x25)] if roi.size 0: defective_image[max(0,y2-5):min(h,y25), max(0,x2-5):min(w,x25)] cv2.GaussianBlur(roi, (5,5), 1) elif defect_type stain: # 模拟污渍生成一个椭圆形的暗色区域 center_x, center_y np.random.randint(w//4, 3*w//4), np.random.randint(h//4, 3*h//4) axis_x, axis_y int(w*intensity/4), int(h*intensity/4) stain_mask np.zeros((h, w), dtypenp.uint8) cv2.ellipse(stain_mask, (center_x, center_y), (axis_x, axis_y), 0, 0, 360, 255, -1) stain_mask stain_mask.astype(np.float32) / 255.0 for c in range(c): defective_image[:,:,c] defective_image[:,:,c] * (1 - stain_mask*0.7) # 变暗70% elif defect_type blob: # 模拟凸起或凹陷局部区域仿射变换或亮度变化 # 此处简化处理为局部亮度变化 x, y np.random.randint(0, w//2), np.random.randint(0, h//2) bw, bh int(w*intensity), int(h*intensity) defective_image[y:ybh, x:xbw, :] defective_image[y:ybh, x:xbw, :] * np.random.uniform(0.5, 1.5) defective_image np.clip(defective_image, 0, 255).astype(np.uint8) return defective_image提示虚拟缺陷的生成需要结合具体业务场景。对于纺织品检测可能需要模拟断线、跳线对于金属表面可能需要模拟凹坑、锈迹。最好的方法是分析真实缺陷的形态学特征然后用程序化的方式去近似模拟。3.2 动态权重调整让模型学会“攻坚克难”在训练过程中不同的样本对模型学习的贡献度是不同的。一些背景简单、纹理均匀的正常样本学生模型可能很快就能学得和教师模型一样好继续在这些样本上投入大量计算资源是低效的。相反那些纹理复杂、边缘模糊的正常样本或者那些与正常样本极其相似的虚拟缺陷样本即“难样本”才是提升模型判别能力的关键。CDO借鉴了Focal Loss的思想为每个样本的损失项分配一个动态权重。这个权重与当前学生模型在该样本上表现的“好坏”成反比。具体来说对于一个正常样本如果学生模型的特征与教师模型的特征已经非常接近差异小则认为该样本是“易学的”降低其损失权重如果差异仍然很大则增加其权重。对于虚拟缺陷样本逻辑则相反如果学生模型的特征已经与教师模型的特征足够远差异大则降低权重如果差异小即学生误将虚拟缺陷判断为正常则大幅增加权重。这种动态调整机制使得优化过程始终聚焦于那些最难区分的样本迫使模型去啃“硬骨头”从而更有效地塑造清晰的决策边界。其数学形式可以简化为对于正常样本损失 (L_{normal}) 和虚拟缺陷样本损失 (L_{defect})总损失为 [ L_{total} \alpha \cdot w_{normal} \cdot L_{normal} \beta \cdot w_{defect} \cdot L_{defect} ] 其中 (w_{normal}) 和 (w_{defect}) 是根据当前批次中每个样本的预测差异动态计算得到的权重系数(\alpha) 和 (\beta) 是用于平衡两项损失的超参数。3.3 特征差异的度量选择适合的“尺子”如何衡量学生模型与教师模型特征输出的“接近”或“远离”这需要一把合适的“尺子”即差异度量函数。常见的度量方式包括均方误差MSE/L2 Loss最直接的方式计算特征图之间逐像素的平方差。它对大的差异非常敏感但可能对细微的结构变化不够鲁棒。余弦相似度Cosine Similarity衡量特征向量在方向上的对齐程度对特征的绝对幅度不敏感。在知识蒸馏中有时特征幅度本身也包含信息。感知损失Perceptual Loss基于预训练网络如VGG的中间层特征来计算差异更能捕捉语义层面的相似性但计算成本较高。多尺度特征匹配不仅比较最后一层特征还比较网络中间层的多个特征图迫使学生学习教师的多层次表征。CDO论文中采用了结合MSE和基于注意力的特征匹配方式。在实际应用中我的经验是对于工业缺陷检测这种关注局部纹理和结构异常的任务在中间层而非仅仅最后一层进行多尺度的特征差异计算效果通常更好。因为缺陷往往体现在局部细节的破坏上高层语义特征可能已经丢失了这些细微信息。import torch import torch.nn as nn import torch.nn.functional as F class MultiScaleFeatureLoss(nn.Module): 多尺度特征差异损失。 计算学生和教师模型在指定多个层上的特征图差异。 def __init__(self, scales[0.5, 1.0, 2.0], loss_typel1): super().__init__() self.scales scales self.loss_type loss_type if loss_type l1: self.criterion nn.L1Loss(reductionnone) elif loss_type l2: self.criterion nn.MSELoss(reductionnone) else: raise ValueError(fUnsupported loss type: {loss_type}) def forward(self, feat_s, feat_t): Args: feat_s: 学生模型特征字典 {layer_name: feature_map} feat_t: 教师模型特征字典 {layer_name: feature_map} Returns: loss: 多尺度特征差异损失值 total_loss 0.0 for layer_name in feat_s.keys(): f_s feat_s[layer_name] f_t feat_t[layer_name] # 确保特征图尺寸一致可能需要插值 if f_s.shape[-2:] ! f_t.shape[-2:]: f_s F.interpolate(f_s, sizef_t.shape[-2:], modebilinear, align_cornersFalse) per_pixel_loss self.criterion(f_s, f_t.detach()) # 教师特征不梯度 # 可以引入空间注意力权重例如根据特征幅值加权 # weight torch.sigmoid(f_t.abs().mean(dim1, keepdimTrue)) # per_pixel_loss per_pixel_loss * weight layer_loss per_pixel_loss.mean() total_loss layer_loss return total_loss / len(feat_s)4. 实战部署与调优指南理论再完美也需要经过实战的检验。将CDO思路应用到你的具体项目中需要注意以下几个实操环节。第一步教师模型的选择与特征层锁定教师模型不参与训练其作用是提供稳定的、高质量的特征“锚点”。通常选择在大型数据集如ImageNet上预训练好的经典网络如ResNet、VGG、或效率更高的MobileNet、EfficientNet。关键一步是确定从教师模型的哪些层提取特征。过早的层如浅层卷积包含过多低级细节边缘、颜色可能对噪声过于敏感过深的层如全连接层前语义信息高度抽象可能丢失缺陷的局部信息。一个常见的策略是选择网络中间偏后的多个层例如ResNet50的stage3和stage4的输出进行多尺度特征匹配。选定后务必冻结教师模型的所有参数。第二步学生模型的结构设计学生模型可以是与教师结构相同但更窄的版本也可以是完全不同的轻量架构。在工业场景推理速度往往是关键。你可以选择TinyNet、小型ResNet或自定义的轻量CNN。一个重要的技巧是让学生模型与教师模型在选定的特征层上具有相同的空间分辨率这样可以避免不必要的上采样/下采样带来的信息损失或计算开销。如果结构差异导致分辨率不同需要在损失计算前进行对齐。第三步损失函数的组合与超参数调优CDO的总损失函数是多项的混合体。你需要平衡正常样本的一致性损失(L_{norm})虚拟缺陷的差异性损失(L_{def})可能的辅助损失如用于稳定训练的蒸馏损失KL散度或特征分布正则化损失。超参数 (\alpha)正常损失权重和 (\beta)缺陷损失权重的设定至关重要。起初可以设为1:1然后根据验证集上正常样本的重建误差和虚拟缺陷的区分度进行调整。如果模型对正常样本拟合太差可以适当增大 (\alpha)如果 overgeneration 依然明显则增大 (\beta)。动态权重的敏感系数也需要调试通常从一个较小的值开始如2.0观察难易样本的权重分布是否合理。第四步训练策略与数据流水线渐进式训练初期可以主要训练一致性损失让学生先学会“正常”的样子训练中期再逐步引入虚拟缺陷和差异性损失进行“精修”。数据增强对正常样本使用标准的数据增强旋转、裁剪、颜色抖动是必要的这能增加正常样本的多样性让模型学习的正常流形更健壮。但注意虚拟缺陷应在增强后的正常样本上生成以确保一致性。批次构成每个训练批次应包含等量的原始正常样本和其对应的虚拟缺陷样本。这保证了两种监督信号的平衡。第五步验证与监控不要只看整体的AUC或准确率。建立更细致的评估指标正常样本的重建误差分布应该尽可能低且集中。虚拟缺陷样本的差异分数分布应该与正常样本的误差分布有显著区分度且均值越高越好。在保留的、少量真实缺陷样本如果有上的表现这是最终的试金石。在训练过程中实时绘制这些指标的曲线。如果发现虚拟缺陷的差异分数在下降向正常样本靠拢那就是 overgeneration 开始发生的危险信号需要立刻检查并调整 (\beta) 或虚拟缺陷的生成强度。5. 超越CDO更多对抗过度泛化的思路CDO提供了一条通过引入“负约束”来解决问题的清晰路径。沿着这个思路我们还可以探索更多变体和补充策略。思路一基于对抗样本的约束虚拟缺陷是通过启发式规则生成的。我们可以更进一步使用对抗攻击的方法来生成“最具迷惑性”的虚拟缺陷。具体来说固定教师和学生模型通过反向传播生成一个对正常样本的扰动这个扰动的目标是最小化学生与教师在该扰动样本上的特征差异即让学生误判。然后将这个对抗样本作为虚拟缺陷加入到训练中并最大化学生与教师在其上的差异。这种方法生成的虚拟缺陷是当前模型最可能犯错的“盲点”针对性更强。思路二特征空间的正则化除了在样本层面制造差异我们还可以直接在学生模型学习的特征空间上施加约束防止其过度平滑。例如特征稀疏化鼓励学生模型的特征表示是稀疏的这可以增加特征的鉴别性使其对异常输入更敏感。对比学习思想将同一个正常样本的不同增强视图作为正样本对要求它们的特征相近将正常样本与虚拟缺陷样本作为负样本对要求它们的特征相远。这能在特征空间形成更紧凑的类内分布和更分离的类间分布。思路三不确定性估计的引入让学生模型不仅输出特征还输出对该特征预测的不确定性。在训练时对于正常样本要求特征准确且不确定性低对于虚拟缺陷样本允许特征不准确但要求其不确定性必须高。在推理时如果一个样本的特征差异不大但模型给出的不确定性很高我们仍然可以将其判定为可疑异常交由人工复核。这为决策增加了一层安全垫。选择哪种思路这取决于你的具体约束。如果计算资源充足追求极致性能可以尝试对抗样本生成。如果希望方案简单可解释CDO的原生方法已经足够强大。如果对误报的容忍度极低引入不确定性估计是一个稳健的选择。在实际项目中我通常会先实现并调优基础的CDO框架将其作为强基线然后再根据剩余的痛点有选择地引入上述进阶技术进行迭代优化。知识蒸馏在工业缺陷检测中的应用远未定型overgeneration 只是我们深入模型行为理解过程中遇到的一个典型问题。CDO框架的价值在于它打破了“只教什么是对的”的单向思维引入了“同时明确什么是错的”的对抗性视角。这种思路不仅适用于缺陷检测对于任何基于分布内数据学习、需要检测分布外样本的任务如欺诈检测、网络入侵检测都有启发意义。模型不是越“聪明”、泛化能力越强就越好在安全关键的领域我们需要的是在划定边界内精准、在边界外警惕的“专业”模型。下次当你发现学生模型开始“自作聪明”时不妨试试为它设立一些“虚拟的警戒线”。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…