基于PaddleDetection的设备漏油检测

油浸式变压器,是以油作为变压器主要绝缘手段,并依靠油作冷却介质,如油浸自冷,油浸风冷,油浸水冷及强迫油循环等。变压器的主要部件有铁芯,绕组,油箱,油枕,呼吸器,防爆管(压力释放阀),散热器,绝缘套管,分接开关,气体继电器,温度计,净油器等。 油浸变压器硅钢片层间,由于长期浸入变压器,油能渗入其中,并且变压器油有弹性起缓冲作用,故油浸变压器噪声小。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于paddledetection的设备漏油检测 - 创想鸟

一、项目背景

油浸式变压器,是以油作为变压器主要绝缘手段,并依靠油作冷却介质,如油浸自冷,油浸风冷,油浸水冷及强迫油循环等。变压器的主要部件有铁芯,绕组,油箱,油枕,呼吸器,防爆管(压力释放阀),散热器,绝缘套管,分接开关,气体继电器,温度计,净油器等。 油浸变压器硅钢片层间,由于长期浸入变压器,油能渗入其中,并且变压器油有弹性起缓冲作用,故油浸变压器噪声小。

当变压器漏油时会造成以下问题:

变压器渗漏油现象不仅严重影响外观,而且会因变压器需停运排除渗漏而造成经济损失。若变压器地面基础上油迹较多时,还可能成为引发火灾的隐患。渗漏油会严重干扰运行维护人员对变压器储油柜内的密封状况和油位计指示的正确性监视和判断。因渗漏而使油位降低后,可能使带电接头、开关等处在无油绝缘的状况下运行,从而可能导致击穿、短路、烧损,甚至引起设备爆炸。变压器渗漏油后,会使全密封变压器丧失密封状态,易使油纸绝缘遭受外界的空气、水分的入侵而使绝缘性能降低,加速绝缘的老化,影响变压器的安全、可靠运行。此外,当储油柜顶部放气塞、套管导电头等部位出现密封损坏,或者储油柜顶部及其联管存在砂眼时,因部位较高,即使可能不会出现渗漏油现象,但可能进入雨水、潮气,导致绝缘性能变坏,甚至造成绝缘击穿、绕组烧毁事故。

油浸式变压器

基于PaddleDetection的设备漏油检测 - 创想鸟

油浸式变压器出现漏油的情况

基于PaddleDetection的设备漏油检测 - 创想鸟

基于PaddleDetection的设备漏油检测 - 创想鸟

二、PP-YOLOE

论文链接

2.1简介

PP-YOLOE是是一种具有高性能和友好部署的工业级先进目标检测器。我们在之前的PP-YOLOv2的基础上进行了优化,使用anchor-free范式,更强大的backbone和neck,配备了CSPRepResStage、ET-head和动态标签分配算法TAL。我们为不同的实践场景提供了s/m/l/x模型。在COCO testdev上,PP-YOLOE-l的mAP为51.4,使用Tesla V100具有78.1 FPS,与之前最先进的工业模型PP-YOLOv2和YOLOX相比,分别获得了(+1.9 AP,+13.35%提速)和(+1.3 AP,+24.96%提速)的显著提高。此外,在TensorRT和FP16-precision的支持下,PP-YOLOE推理速度达到了149.2 FPS。

基于PaddleDetection的设备漏油检测 - 创想鸟

2.2提出背景

百度在2021年4月提出了[PP-YOLOv2],性能超越同等参数的YOLOv4-CSP和YOLOv5-l,而随后7月份旷视科技的YOLOX一领风骚,受到YOLOX的启发,百度团队优化了PP-YOLOv2,顺手提出了PP-YOLOE。

PP-YOLOv2的总体情况包括:

backbone:具有可变形卷积的ResNet50-vd;neck:具有SPP层的PAN,DropBlock;head:轻量级的IoU感知;激活函数:在backbone中使用ReLU激活,neck中使用Mish激活;标签分配:为每个ground truth目标分配一个anchor box;损失:分类损失、回归损失、目标损失,IoU损失和IoU感知损失;

COCO性能对比:

PP-YOLOv2:49.1 mAP,68.9 FPS(Tesla V100)YOLOX:50.1 mAP,68.9 FPS(Tesla V100)PP-YOLOE-l:51.4mAP,78.1 FPS(Tesla V100)

可以看到PP-YOLOE精度比PP-YOLOv2和YOLOX略有提升,但是速度却提升了接近10FPS

2.3PP-YOLOE的改进

基于PaddleDetection的设备漏油检测 - 创想鸟

PP-YOLOE网络结构

基于PaddleDetection的设备漏油检测 - 创想鸟

2.3.1Anchor-free

Anchor-free方式最先在YOLOv1中出现,由于直接预测位置不准确,在后面的 YOLOv2、v3、v4和v5中均采用了Anchor方式。YOLOX中认为按聚类方式确定最优Anchor尺寸局限于特定领域,难以推广,此外还增加了head的复杂度与每张图像的预测数量,故采用了Anchor-free方式。同样,PP-YOLOE中亦采用Anchor-free方式。论文中的实验证明采用Anchor-free方式加快了模型速度,但是精度相比于基线PP-YOLOv2降低了0.3mAP。

2.3.2RepResBlock

残差连接引入了缓解梯度消失问题的捷径,也可以被视为模型集成方法。密集连接聚合了具有不同感受野的中间特征,在目标检测任务上表现出良好的性能。受此启发,PP-YOLOE提出了一种新颖的 RepResBlock,它结合了残差连接和密集连接,用于骨干和颈部。启发于TreeBlock

首先,简化了原来的 TreeBlock,如图(a)所示。

然后,用逐元素添加操作替换连接操作,如图(b)所示。

因此,在推理阶段,可以将 RepResBlock 重新参数化为ResNet-34以RepVGG样式使用的基本残差块,如图(c)所示。

与 ResNet 类似,骨干网名为 CSPRepResNet,包含一个由三个卷积层组成的主干和四个由我们的RepResBlock堆叠的后续阶段,如图(d)所示。

在每个阶段,使用跨阶段部分连接来避免大量3×3在每个阶段,使用跨阶段部分连接来避免大量3×3卷积层带来的大量参数和计算负担。ESE(Effective Squeeze and Extraction)层也用于在构建主干时在每个CSPRepResStage中施加通道注意力。

基于PaddleDetection的设备漏油检测 - 创想鸟

2.3.3Task Alignment Learning(TAL)

TAL由动态标签分配与任务对齐损失组成。动态标签分配意味着预测感知,根据预测,为每个ground truth目标分配动态的正样本。通过显式对齐两个任务,TAL可以同时获得最高的分类准确率和最精确的边界框。TAL可提升精度0.9mAP。

2.3.4Efficient Task-aligned Head(ET-head)

Decoupled head结构会使分类和定位任务分离独立,缺乏任务特异性学习,故提出了ET-head。使用 ESE 替换 TOOD 中的层注意,简化分类分支到快捷方式的对齐,并将回归分支的对齐替换为分布焦点损失(DFL)层,ET-head可提升精度0.5mAP。

三、项目内容

3.1环境配置

In [ ]

%cd work/# gitee 国内下载比较快!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.4# github# !git clone https://github.com/PaddlePaddle/PaddleDetection.git -b release/2.4

In [ ]

#安装PaddleDetection依赖!pip install -r /home/aistudio/work/PaddleDetection/requirements.txt

In [ ]

#编译安装paddledet%cd work/PaddleDetection!python setup.py install

In [3]

#安装其他依赖from PIL import Image  import matplotlib.pyplot as pltimport numpy as npimport os import random

In [ ]

#测试安装是否成功,最后输出OK,说明编译安装成功!python ppdet/modeling/tests/test_architectures.py

3.2准备数据集

该项目应用的数据集,一部分为我们在现场采集的变压器或者一些电器设备的漏油图片,一部分为数据扩增得到。我们通过下面的程序段得到的是划分好的voc格式的数据集,但是目前PP-YOLOE仅支持coco格式的数据集,所以还需要将划分好的数据集转换成coco数据集。

硅基智能 硅基智能

基于Web3.0的元宇宙,去中心化的互联网,高质量、沉浸式元宇宙直播平台,用数字化重新定义直播

硅基智能 62 查看详情 硅基智能 In [5]

#解压数据集!unzip -oq /home/aistudio/data/data146144/oil.zip -d /home/aistudio/data/#划分数据集#根据挂载的数据集制作制作标签文件,并进行划分#生成train.txt和val.txtrandom.seed(2020)xml_dir  = '/home/aistudio/data/oil/Annotations'#标签文件地址img_dir = '/home/aistudio/data/oil/JPEGImages'#图像文件地址path_list = list()for img in os.listdir(img_dir):    img_path = os.path.join(img_dir,img)    xml_path = os.path.join(xml_dir,img.replace('jpg', 'xml'))    path_list.append((img_path, xml_path))random.shuffle(path_list)ratio = 0.8 #测试集和验证集划分比例0.8:0.2train_f = open('/home/aistudio/data/oil/train.txt','w') #生成训练文件val_f = open('/home/aistudio/data/oil/val.txt' ,'w')#生成验证文件for i ,content in enumerate(path_list):    img, xml = content    text = img + ' ' + xml + 'n'    if i < len(path_list) * ratio:        train_f.write(text)    else:        val_f.write(text)train_f.close()val_f.close()#生成标签文档label = ['oil']#设置你想检测的类别with open('/home/aistudio/data/oil/label_list.txt', 'w') as f:    for text in label:        f.write(text+'n')

使用x2coco.py将voc格式的数据集转换成coco数据集 只需要将这四个参数指定成上面生成的标签文件即可

voc_anno_dir 总的标注文件

voc_anno_list 训练数据集文件列表

voc_label_list 标签文件

voc_out_name 输出的coco文件路径

In [ ]

!python tools/x2coco.py         --dataset_type voc         --voc_anno_dir /home/aistudio/data/oil/Annotations         --voc_anno_list /home/aistudio/data/oil/train.txt         --voc_label_list /home/aistudio/data/oil/label_list.txt         --voc_out_name /home/aistudio/data/oil/train.json!python tools/x2coco.py         --dataset_type voc         --voc_anno_dir /home/aistudio/data/oil/Annotations         --voc_anno_list /home/aistudio/data/oil/val.txt         --voc_label_list /home/aistudio/data/oil/label_list.txt         --voc_out_name /home/aistudio/data/oil/valid.json

将转换好的文件放在一个文件夹下,完成转换后,应具有以下文件结构,构成标准的coco格式数据集

基于PaddleDetection的设备漏油检测 - 创想鸟

In [ ]

!mkdir oil%cd oil!mkdir images &&mkdir annotations!mv /home/aistudio/data/oil/train.json /home/aistudio/work/PaddleDetection/oil/annotations!mv /home/aistudio/data/oil/valid.json /home/aistudio/work/PaddleDetection/oil/annotations!cp -r /home/aistudio/data/oil/JPEGImages/* /home/aistudio/work/PaddleDetection/oil/images/%cd ..

3.3 训练

首先查看PP-YOLOE使用的配置文件PaddleDetection/configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml 可以看到依赖的相关配置文件如下图所示:基于PaddleDetection的设备漏油检测 - 创想鸟 注意:这里将预训练权重换成coco数据集上的预训练权重,更多预训练权重

具体的配置文件修改情况以及说明情况,请转至基于PaddleDetection的绝缘子的缺陷检测查看

注意:这里一定注意coco_detection.yml的配置修改,否则加载数据集失败,无法训练。这里提供示例

基于PaddleDetection的设备漏油检测 - 创想鸟

In [ ]

#训练之前,可以通过-h查看train.py的使用相关说明!python tools/train.py -h

In [ ]

#** 注意: ** 使用默认配置训练需要设置--amp以避免显存溢出.#!python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --amp#或者运行下面这条指令,边训练边评估,开启可视化!python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --amp --eval --use_vdl=True --vdl_log_dir="./output"

3.4评估

In [ ]

#评估模型!python -u tools/eval.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml  -o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco/best_model.pdparams

3.5推理

In [9]

#使用图片进行推理测试,这里亦可以通过-c直接指定一些参数!python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml -o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco1/best_model.pdparams --infer_img=/home/aistudio/work/PaddleDetection/oil/images/025.jpg#也可以通过--infer_dir指定目录并推理目录下所有图像
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations  if data.dtype == np.object:W0518 13:31:56.372510 10921 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W0518 13:31:56.377290 10921 device_context.cc:465] device: 0, cuDNN Version: 7.6.[05/18 13:32:00] ppdet.utils.checkpoint INFO: Finish loading model weights: /home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco1/best_model.pdparams100%|█████████████████████████████████████████████| 1/1 [00:00<00:00,  3.20it/s][05/18 13:32:00] ppdet.engine INFO: Detection bbox results save in output/025.jpg

In [ ]

#对测试结果图片进行可视化img_path= "/home/aistudio/work/PaddleDetection/output/025.jpg"img = Image.open(img_path)plt.figure("test_img", figsize=(100,100))plt.imshow(img)plt.show()

基于PaddleDetection的设备漏油检测 - 创想鸟

3.6模型导出

PP-YOLOE在GPU上部署或者速度测试需要通过tools/export_model.py导出模型。

当使用Paddle Inference但不使用TensorRT时,运行以下的命令导出模型

通过-o weight指定我们训练好的最优模型

In [ ]

!python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml -o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco/best_model.pdparams

当使用Paddle Inference且使用TensorRT时,需要指定-o trt=True来导出模型,通过-o weight指定我们训练好的最优模型。

In [ ]

!python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml -o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco/best_model.pdparams trt=True

四、总结

4.1调优

1、如果GPU卡数或者batch size发生了改变,需要按照公式 = lrdefault * (batch_sizenew * GPU_numbernew) / (batch_sizedefault * GPU_numberdefault) 调整学习率。

lrnew=lrdefault∗(batchsizenew∗GPUnumbernew)(batchsizedefault∗GPUnumberdefault)lrnew=lrdefault∗(batchsizedefault∗GPUnumberdefault)(batchsizenew∗GPUnumbernew)

2、加入mixup等数据增强。

sample_transforms:

- Mixup: {alpha: 1.5, beta: 1.5}

mixup是一种运用在计算机视觉中的对图像进行混类增强的算法,它可以将不同类之间的图像进行混合,从而扩充训练数据集。

更多数据增强方式可以参照:数据增强算子

3、学习率优化率策略的设置。常见的有PiecewiseDecay和CosineDecay

4、warmup的配置

更多的调优策略需要大家去尝试,应用完上面这些调优策略,ap能有5个点左右的提升

以上就是基于PaddleDetection的设备漏油检测的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/316437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 07:57:20
下一篇 2025年11月5日 07:57:58

相关推荐

  • Uniapp 中如何不拉伸不裁剪地展示图片?

    灵活展示图片:如何不拉伸不裁剪 在界面设计中,常常需要以原尺寸展示用户上传的图片。本文将介绍一种在 uniapp 框架中实现该功能的简单方法。 对于不同尺寸的图片,可以采用以下处理方式: 极端宽高比:撑满屏幕宽度或高度,再等比缩放居中。非极端宽高比:居中显示,若能撑满则撑满。 然而,如果需要不拉伸不…

    2025年12月24日
    400
  • 如何让小说网站控制台显示乱码,同时网页内容正常显示?

    如何在不影响用户界面的情况下实现控制台乱码? 当在小说网站上下载小说时,大家可能会遇到一个问题:网站上的文本在网页内正常显示,但是在控制台中却是乱码。如何实现此类操作,从而在不影响用户界面(UI)的情况下保持控制台乱码呢? 答案在于使用自定义字体。网站可以通过在服务器端配置自定义字体,并通过在客户端…

    2025年12月24日
    800
  • 如何在地图上轻松创建气泡信息框?

    地图上气泡信息框的巧妙生成 地图上气泡信息框是一种常用的交互功能,它简便易用,能够为用户提供额外信息。本文将探讨如何借助地图库的功能轻松创建这一功能。 利用地图库的原生功能 大多数地图库,如高德地图,都提供了现成的信息窗体和右键菜单功能。这些功能可以通过以下途径实现: 高德地图 JS API 参考文…

    2025年12月24日
    400
  • 如何使用 scroll-behavior 属性实现元素scrollLeft变化时的平滑动画?

    如何实现元素scrollleft变化时的平滑动画效果? 在许多网页应用中,滚动容器的水平滚动条(scrollleft)需要频繁使用。为了让滚动动作更加自然,你希望给scrollleft的变化添加动画效果。 解决方案:scroll-behavior 属性 要实现scrollleft变化时的平滑动画效果…

    2025年12月24日
    000
  • 如何为滚动元素添加平滑过渡,使滚动条滑动时更自然流畅?

    给滚动元素平滑过渡 如何在滚动条属性(scrollleft)发生改变时为元素添加平滑的过渡效果? 解决方案:scroll-behavior 属性 为滚动容器设置 scroll-behavior 属性可以实现平滑滚动。 html 代码: click the button to slide right!…

    2025年12月24日
    500
  • 如何选择元素个数不固定的指定类名子元素?

    灵活选择元素个数不固定的指定类名子元素 在网页布局中,有时需要选择特定类名的子元素,但这些元素的数量并不固定。例如,下面这段 html 代码中,activebar 和 item 元素的数量均不固定: *n *n 如果需要选择第一个 item元素,可以使用 css 选择器 :nth-child()。该…

    2025年12月24日
    200
  • 使用 SVG 如何实现自定义宽度、间距和半径的虚线边框?

    使用 svg 实现自定义虚线边框 如何实现一个具有自定义宽度、间距和半径的虚线边框是一个常见的前端开发问题。传统的解决方案通常涉及使用 border-image 引入切片图片,但是这种方法存在引入外部资源、性能低下的缺点。 为了避免上述问题,可以使用 svg(可缩放矢量图形)来创建纯代码实现。一种方…

    2025年12月24日
    100
  • 如何解决本地图片在使用 mask JS 库时出现的跨域错误?

    如何跨越localhost使用本地图片? 问题: 在本地使用mask js库时,引入本地图片会报跨域错误。 解决方案: 要解决此问题,需要使用本地服务器启动文件,以http或https协议访问图片,而不是使用file://协议。例如: python -m http.server 8000 然后,可以…

    2025年12月24日
    200
  • 旋转长方形后,如何计算其相对于画布左上角的轴距?

    绘制长方形并旋转,计算旋转后轴距 在拥有 1920×1080 画布中,放置一个宽高为 200×20 的长方形,其坐标位于 (100, 100)。当以任意角度旋转长方形时,如何计算它相对于画布左上角的 x、y 轴距? 以下代码提供了一个计算旋转后长方形轴距的解决方案: const x = 200;co…

    2025年12月24日
    000
  • 旋转长方形后,如何计算它与画布左上角的xy轴距?

    旋转后长方形在画布上的xy轴距计算 在画布中添加一个长方形,并将其旋转任意角度,如何计算旋转后的长方形与画布左上角之间的xy轴距? 问题分解: 要计算旋转后长方形的xy轴距,需要考虑旋转对长方形宽高和位置的影响。首先,旋转会改变长方形的长和宽,其次,旋转会改变长方形的中心点位置。 求解方法: 计算旋…

    2025年12月24日
    000
  • 旋转长方形后如何计算其在画布上的轴距?

    旋转长方形后计算轴距 假设长方形的宽、高分别为 200 和 20,初始坐标为 (100, 100),我们将它旋转一个任意角度。根据旋转矩阵公式,旋转后的新坐标 (x’, y’) 可以通过以下公式计算: x’ = x * cos(θ) – y * sin(θ)y’ = x * …

    2025年12月24日
    000
  • 如何让“元素跟随文本高度,而不是撑高父容器?

    如何让 元素跟随文本高度,而不是撑高父容器 在页面布局中,经常遇到父容器高度被子元素撑开的问题。在图例所示的案例中,父容器被较高的图片撑开,而文本的高度没有被考虑。本问答将提供纯css解决方案,让图片跟随文本高度,确保父容器的高度不会被图片影响。 解决方法 为了解决这个问题,需要将图片从文档流中脱离…

    2025年12月24日
    000
  • 如何计算旋转后长方形在画布上的轴距?

    旋转后长方形与画布轴距计算 在给定的画布中,有一个长方形,在随机旋转一定角度后,如何计算其在画布上的轴距,即距离左上角的距离? 以下提供一种计算长方形相对于画布左上角的新轴距的方法: const x = 200; // 初始 x 坐标const y = 90; // 初始 y 坐标const w =…

    2025年12月24日
    200
  • CSS元素设置em和transition后,为何载入页面无放大效果?

    css元素设置em和transition后,为何载入无放大效果 很多开发者在设置了em和transition后,却发现元素载入页面时无放大效果。本文将解答这一问题。 原问题:在视频演示中,将元素设置如下,载入页面会有放大效果。然而,在个人尝试中,并未出现该效果。这是由于macos和windows系统…

    2025年12月24日
    200
  • 为什么 CSS mask 属性未请求指定图片?

    解决 css mask 属性未请求图片的问题 在使用 css mask 属性时,指定了图片地址,但网络面板显示未请求获取该图片,这可能是由于浏览器兼容性问题造成的。 问题 如下代码所示: 立即学习“前端免费学习笔记(深入)”; icon [data-icon=”cloud”] { –icon-cl…

    2025年12月24日
    200
  • 如何利用 CSS 选中激活标签并影响相邻元素的样式?

    如何利用 css 选中激活标签并影响相邻元素? 为了实现激活标签影响相邻元素的样式需求,可以通过 :has 选择器来实现。以下是如何具体操作: 对于激活标签相邻后的元素,可以在 css 中使用以下代码进行设置: li:has(+li.active) { border-radius: 0 0 10px…

    2025年12月24日
    100
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 如何计算旋转后的长方形在画布上的 XY 轴距?

    旋转长方形后计算其画布xy轴距 在创建的画布上添加了一个长方形,并提供其宽、高和初始坐标。为了视觉化旋转效果,还提供了一些旋转特定角度后的图片。 问题是如何计算任意角度旋转后,这个长方形的xy轴距。这涉及到使用三角学来计算旋转后的坐标。 以下是一个 javascript 代码示例,用于计算旋转后长方…

    2025年12月24日
    000
  • 为什么我的 Safari 自定义样式表在百度页面上失效了?

    为什么在 Safari 中自定义样式表未能正常工作? 在 Safari 的偏好设置中设置自定义样式表后,您对其进行测试却发现效果不同。在您自己的网页中,样式有效,而在百度页面中却失效。 造成这种情况的原因是,第一个访问的项目使用了文件协议,可以访问本地目录中的图片文件。而第二个访问的百度使用了 ht…

    2025年12月24日
    000
  • 如何用前端实现 Windows 10 设置界面的鼠标移动探照灯效果?

    如何在前端实现 Windows 10 设置界面中的鼠标移动探照灯效果 想要在前端开发中实现 Windows 10 设置界面中类似的鼠标移动探照灯效果,可以通过以下途径: CSS 解决方案 DEMO 1: Windows 10 网格悬停效果:https://codepen.io/tr4553r7/pe…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信