深度学习实战电力设备缺陷检测
本文采用YOLOv11作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv11以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对电力设备缺陷数据集进行训练和优化,该数据集包含丰富的电力设备缺陷图像样本,为模型的准确性和泛化能力提供了有力保障。通过深度学习技术,模型能够自动提取电力设备缺陷的特征并进行分类识别。PyQt5界面设计简洁直观,便于用户操作和实时查看检测结果。本研究不仅提高了电力设备缺陷识别的自动化水平,还为电力设备缺陷系统的构建提供了有力支持,具有重要的理论应用价值。
YOLOv11实战电力设备缺陷检测
文章目录
- 研究背景
- 1.前言
- 1.1 YOLO 系列:目标检测领域的璀璨明星
- 1.2 Transformer与注意力机制:为目标检测注入新活力
- 1.3 电力设备缺陷检测技术:迎接挑战,砥砺前行
- 1.4 YOLOv11算法在电力设备缺陷检测系统中的精彩演绎
- 2.电力设备缺陷数据集介绍
- 3.界面效果演示
- 3.0 项目下载
- 3.1 图像测试
- 3.2 视频测试
- 3.3 摄像头测试
- 4. YOLOv11 原理
- 5 模型训练
- 5.1 Conda环境构建
- 5.2 基础环境构建
- 5.3 安装YOLOv11环境
- 5.4 构建电力设备缺陷检测模型
- 6 系统实现
- 6.1架构设计
- 6.2 系统流程
- 6.3 代码实现
- 安装与资源说明
- 总结与展望
- 结束语
研究背景
1.前言
1.1 YOLO 系列:目标检测领域的璀璨明星
在实时目标检测的算法星空中,YOLO 系列无疑是最为耀眼的星座之一。从 YOLOv5 到 YOLOv11,每一次的迭代都宛如一次华丽的蜕变,在性能、速度与准确度上实现了跨越式的提升。YOLOv11,作为这一系列的最新杰作,凭借其更为深邃复杂的网络架构以及精妙绝伦的训练技巧,将检测的准确性与速度推向了新的高峰。尤其在应对动态视频流中的电力设备缺陷检测任务时,它宛如一位技艺精湛的舞者,展现出了令人赞叹的卓越性能。这些显著的改进,如同强大的引力,使得 YOLO 系列在电力设备缺陷检测领域的应用版图不断拓展,愈发完美地契合了实时性与准确性的双重严苛要求。
多元算法共筑电力设备缺陷标志检测的坚实堡垒
除了光芒四射的 YOLO 系列,其他深度学习算法,诸如 Faster R - CNN、SSD 以及基于 Transformer 的 DETR 等,也纷纷在电力设备缺陷佩戴检测的舞台上崭露头角。它们各具独特的优势,恰似一群才华横溢的艺术家,在不同的领域绽放光彩。Faster R - CNN 以其在检测精度上的非凡表现,犹如一位精雕细琢的工匠,刻画着每一个细节;而 SSD 则在速度方面具备明显优势,恰似一阵疾风,迅速而敏捷。最新的研究恰似一场永不停歇的探索之旅,不断挖掘这些算法的改进版本,力求在速度与准确性之间找到那最为完美的平衡点,如同在钢丝上寻找平衡的舞者,追求极致的和谐。
1.2 Transformer与注意力机制:为目标检测注入新活力
Transformer 在视觉任务中的应用,犹如一颗璀璨的新星划破夜空,吸引了广泛的关注,其中视觉 Transformer(ViT)更是备受瞩目。ViT 通过巧妙引入自注意力机制,仿佛为模型赋予了一双敏锐的眼睛,能够精准捕捉图像中的长距离依赖关系,这在中国电力设备缺陷形态复杂多样且背景纷繁复杂的情况下,显得尤为关键。相较于传统的卷积神经网络(CNN),ViT 在处理图像全局信息时展现出了更为卓越的能力,如同一位宏观把控的大师,为中国电力设备缺陷检测开辟了一片崭新的天地,提供了全新的解决思路。
注意力机制,作为 Transformer 的核心瑰宝,已如同星星之火,在各种深度学习模型中形成燎原之势,在中国电力设备缺陷检测领域更是大放异彩。它赋予了模型对图像特定部分的 “专注” 能力,如同为模型戴上了一副神奇的眼镜,使其能够在复杂的背景或多变的中国电力设备缺陷形态中,依然清晰地定位并准确识别目标,即便在干扰信息如潮水般涌来的环境中,也能稳如泰山,保持较高的检测准确率。
1.3 电力设备缺陷检测技术:迎接挑战,砥砺前行
当前,中国电力设备缺陷检测技术正置身于充满挑战的浪潮之中,亟待提高检测的实时性、准确性以及在多变环境下的适应性,如同在波涛汹涌的大海中航行的船只,需要不断调整航向,迎接风浪的挑战。为了跨越这些难关,研究人员们宛如勇敢的探险家,不断探索新的算法和技术。例如,通过深度学习模型的轻量化设计,如同为船只减轻负重,提高算法的运行效率,使其在复杂的环境中更加灵活敏捷;利用创新的数据增强技术和自适应学习方法,仿佛为船只加固船身,提升模型的泛化能力和鲁棒性,使其能够在各种未知的海域中稳健前行。
1.4 YOLOv11算法在电力设备缺陷检测系统中的精彩演绎
本博客致力于基于 YOLOv11 算法构建一个电力设备缺陷检测系统,并全方位展示其魅力。我们将呈现系统精致的界面效果,如同揭开一幅美丽画卷,让您领略其独特风采;深入阐述其算法原理,恰似探秘一座神秘城堡,为您揭示其中的奥秘;毫无保留地提供代码实现,仿佛为您递上一把开启知识宝库的钥匙;详细分享该系统的实现过程,如同陪伴您走过一段精彩旅程,让您亲身体验其中的艰辛与喜悦。希望本博客的倾心分享能如同一盏明灯,为读者照亮前行的道路,给予您深刻的启示,进而推动更多相关研究的蓬勃发展。本文的核心内容主要涵盖以下几个方面:
- YOLOv11 算法的卓越应用与性能对比
本文不仅详细介绍了基于 YOLOv11 算法的中国电力设备缺陷检测系统的构建历程,如同讲述一个精彩的创业故事,而且还深入细致地比较了 YOLOv7、YOLOv6、YOLOv5 等早期版本的性能差异,仿佛展开一场激烈的武林高手对决。这一全面深入的比较研究,恰似一本权威的指南,为中国电力设备缺陷检测技术的选型提供了坚实有力的参考依据。特别是 YOLOv11 算法在效率和精准度方面所展现出的显著优势,犹如一座明亮的灯塔,为 电力设备缺陷检测指明了一条更为高效、更为准确的技术路径。 - PyQt5 打造的友好用户界面
通过 Python 的 PyQt5 库精心打造的电力设备缺陷检测系统,不仅具备高效卓越的检测能力,如同一位内功深厚的武林高手,更提供了直观便捷、令人赏心悦目的用户操作界面,仿佛为用户搭建了一座温馨的家园。这种贴心的设计,使得电力设备缺陷检测变得更加亲切友好,如同一位热情好客的主人,有助于广泛推广 YOLOv11 算法的应用,同时也为电力设备缺陷检测技术的普及和实用化注入了强大的动力,如同春风化雨,滋润着这片技术的田野。 - YOLOv11 模型的深度研究与性能剖析
YOLOv11是YOLO系列的最新版本,旨在提高实时目标检测技术的准确性和效率,引入了C3k2块、SPPF和C2PSA组件,增强了特征提取能力。
主干网络:YOLOv11的主干网络采用了C3k2块,替代了之前版本中的C2f块,提升了计算效率。
颈部结构:在颈部引入了C2PSA模块,增强了空间注意力机制。
头部预测:头部使用了多个C3k2块和CBS层,进一步细化特征图,最终输出边界框和类别标签。支持的计算机视觉任务:
精度与效率:YOLOv11在COCO数据集上取得了更高的平均精度(mAP),同时参数数量减少了22%。
多任务能力:YOLOv11在多种计算机视觉任务中表现出色,包括姿态估计、对象识别、图像分类等。
架构优化:通过改进的架构设计和训练流程,YOLOv11实现了更快的处理速度和更高的计算效率。
2.电力设备缺陷数据集介绍
电力设备缺陷数据集包种常见电力设备缺陷类别,在数据预处理阶段,采取了几项关键步骤以确保数据集的质量。首先,所有图像都经过了自动方向校正。接着,所有图像都被统一调整至640x640像素,通过拉伸的方式来适配这一分辨率。
3.界面效果演示
3.0 项目下载
3.1 图像测试
3.2 视频测试
3.3 摄像头测试
4. YOLOv11 原理
YOLOv11是YOLO系列另一个SOTA模型,该模型是相对于YOLOV5进行更新的。其主要结构如下图所示:
从图中可以看出,网络还是分为三个部分: 主干网络(backbone),特征增强网络(neck),检测头(head) 三个部分。
相比较于YOLOv8模型,其将CF2模块改成C3K2,同时在SPPF模块后面添加了一个C2PSA模块,且将YOLOv10的head思想引入到YOLO11的head中,使用深度可分离的方法,减少冗余计算,提高效率
主干网络:YOLOv11的主干网络采用了C3k2块,替代了之前版本中的C2f块,提升了计算效率。
class C3k2(C2f):"""Faster Implementation of CSP Bottleneck with 2 convolutions."""def __init__(self, c1, c2, n=1, c3k=False, e=0.5, g=1, shortcut=True):"""Initializes the C3k2 module, a faster CSP Bottleneck with 2 convolutions and optional C3k blocks."""super().__init__(c1, c2, n, shortcut, g, e)self.m = nn.ModuleList(C3k(self.c, self.c, 2, shortcut, g) if c3k else Bottleneck(self.c, self.c, shortcut, g) for _ in range(n))
颈部结构:在颈部引入了C2PSA模块,增强了空间注意力机制。
C2PSA是对 C2f 模块的扩展,它结合了PSA(Pointwise Spatial Attention)块,用于增强特征提取和注意力机制。通过在标准 C2f 模块中引入 PSA 块,C2PSA实现了更强大的注意力机制,从而提高了模型对重要特征的捕捉能力。
头部预测:头部使用了多个C3k2块和CBS层,进一步细化特征图,最终输出边界框和类别标签。
5 模型训练
模型训练主要分为如下几步:
5.1 Conda环境构建
新人安装Anaconda环境可以参考博主写的文章Anaconda3与PyCharm安装配置保姆教程
5.2 基础环境构建
新人安装PyTorch GPU版本可以参考博主写的文章基于conda的PyTorch深度学习框架GPU安装教程
5.3 安装YOLOv11环境
conda create -n yolov11 python=3.8
conda activate yolov11
pip install ultralytics
5.4 构建电力设备缺陷检测模型
电力设备缺陷检测系统,分别为
{0: '110kV双玻璃', 1: '玻璃污秽', 2: '玻璃缺失', 3: '聚合物污秽', 4: '破损盘片', 5: '绝缘子', 6: '污闪'}
电力设备缺陷数据集训练集一共15,887左右,验证集4,641张,标注格式采用yolo格式组织
imagestrainimage1.jpgimage2.jpg...valimage11.jpgimage22.jpg...labelstrainimage1.txtimage2.txt...valimage11.txtimage22.txt...
我们开启训练之旅的第一步是导入一系列不可或缺的模块,其中涵盖了 os 模块,它犹如一把万能钥匙,为我们处理各种文件路径相关的操作提供了便利;torch 模块恰似一台强大的引擎,助力我们高效地执行各类数值计算任务;yaml 模块则如同一位精准的翻译官,能够帮助我们轻松解析配置文件中的各种信息;还有专门的 YOLO 类,它是我们构建模型的关键基石,为实例化模型奠定了基础。
紧接着,我们着手确定训练过程所依托的计算设备。在这个环节中,我们秉持优先选择的策略,将目光聚焦于 GPU(cuda:0),因为它具备强大的并行计算能力,能够极大地加速训练过程。然而,若 GPU(cuda:0)不可用,我们也做好了充分的应对准备,即退而求其次,选择使用 CPU 来继续我们的训练任务。尽管 CPU 的计算速度相对较慢,但它依然能够确保训练工作的顺利进行,为我们的研究提供持续的支持。
import os
import torch
import yaml
from ultralytics import YOLO # 导入YOLO模型
device = "cuda:0" if torch.cuda.is_available() else "cpu"
接下来,我们对一些基本的训练参数进行了设定,其中包括工作进程数以及批次大小。随后,明确了数据集的名称与路径,并且借助 abs_path 函数获取到了配置文件的绝对路径。这样做能够保证在不同的运行环境下路径具有一致性,同时也提升了代码的可移植性。
workers = 1
batch = 8data_name = "FireSmoke"
data_path = abs_path(f'datasets/{data_name}/{data_name}.yaml', path_type='current') # 数据集的yaml的绝对路径
unix_style_path = data_path.replace(os.sep, '/')# 获取目录路径
directory_path = os.path.dirname(unix_style_path)')
在加载数据配置文件之前,必须先读取并解析 YAML 格式的配置文件。这一环节极为重要,原因在于该配置文件中涵盖了训练过程所需的关键信息,例如类别标签以及数据集路径等等。我们对配置文件中的“path”键值进行修改,以此确保模型能够准确无误地找到训练和验证数据。
# 读取YAML文件,保持原有顺序
with open(data_path, 'r') as file:data = yaml.load(file, Loader=yaml.FullLoader)
# 修改path项
if 'path' in data:data['path'] = directory_path# 将修改后的数据写回YAML文件with open(data_path, 'w') as file:yaml.safe_dump(data, file, sort_keys=False)
接着,我们加载了预先训练好的 YOLOv11 模型,进而开启了训练进程。YOLO 类的 train 方法接纳了众多参数,其中有数据路径、设备、工作进程数、输入图像的尺寸、训练周期以及批次大小。在此处,name参数为训练任务赋予了标识,便于后续进行追踪与分析。
model = YOLO(abs_path('./weights/yolo11s.pt'), task='detect') # 加载预训练的YOLOv11模型
results = model.train( # 开始训练模型data=data_path, # 指定训练数据的配置文件路径workers=0, imgsz=640, # 指定输入图像的大小为640x640epochs=100, # 指定训练100个epochbatch=batch, # 指定每个批次的大小为8name='train_v11_' + data_name # 指定训练任务的名称
)
训练50个epoch输出如下
6 系统实现
6.1架构设计
MainWindow 类的核心目标是打造一个用户友好的交互式中国电力设备缺陷检测系统。为了达成这一目标,采用了将界面、媒体处理与模型进行集成的设计理念。通过对象组合的手段,把不同的处理器和模型整合在一起,使得每个功能模块都可以独立运作。与此同时,还运用信号和槽机制来实现模块之间的交互以及数据的传递。
我们的系统设计理念以三层架构作为核心,分别是处理层、界面层以及控制层。在系统设计过程中,我们将重点置于确保各个组件能够协同运作的同时,保持充分的模块独立性,以便于未来进行维护和升级。
处理层(Processing Layer):通过运用模块化的处理层,我们对 YOLOv11Detector 类所实现的深度学习模型予以封装。如此一来,图像处理与目标检测的复杂性对于其他系统组件而言是不可见的。这种封装不但提升了系统的可靠性,还使得未来替换或升级模型变得更为容易。
界面层(UI Layer):在界面层方面,我们借助 PyQt5 库构建出一套完整的用户界面,提供了直观的操作按钮、状态标签以及实时的图像显示。该界面不但能够对用户的操作做出响应,还能实时反馈模型的检测结果,进而提高用户的操作便利性与系统的交互性。界面的设计目标在于降低用户的学习曲线,即便是没有技术背景的用户也能够轻松掌握。
控制层(Control Layer):控制层是连接用户界面与后端处理模块的桥梁。在这一层中,MainWindow 类肩负着响应用户交互、控制视频流处理以及展示模型预测结果的重任。通过信号和槽机制,我们能够将用户的操作转化为系统的响应,例如启动和停止视频流、调整检测设置等。这样的设计不仅提高了系统反应的及时性,还增强了用户的控制感。
6.2 系统流程
当用户启动我们的应用程序时,系统会首先对 MainWindow 类进行实例化。该类不但负责初始化用户界面,设定窗口大小以及展示区域,还会准备好后续处理所需的各类参数。用户界面作为与系统交互的重要桥梁,为用户提供了选择视频输入源的机会。输入源的灵活性可谓此系统的一大亮点,用户能够选择实时视频流、预录视频文件或者单张图片作为检测的媒介。
一旦输入源被用户选定,系统就会开始调用内置的媒体处理器来进行数据的读取与处理。这个过程涵盖了摄像头的实时捕获设置、视频文件的解码读取以及图像数据的加载至内存等环节。这些环节均是自动进行的,无需用户进行手动配置,充分彰显了智能化的设计理念。
接下来,系统将进入连续的处理循环,持续对实时获取的帧数据进行分析。在预处理阶段,系统会通过一系列的图像处理技术,例如缩放、色彩转换等,让每帧图像符合 YOLOv11 模型的输入标准。这一步骤对于提升模型的识别效率与准确度起着至关重要的作用。
紧接着,经过预处理的图像会被送入经过训练的 YOLOv11 模型进行实时检测。模型能够快速地在图像中定位中国电力设备缺陷,并对它们进行分类,其结果将用于后续的界面更新。我们的系统设计允许在用户界面上实时显示检测框,标注目标类别,并在界面上实时展示检测的统计数据。这种即时的反馈为用户提供了清晰的视觉指引,有助于他们了解当前环境的安全状况。
6.3 代码实现
在现代计算机视觉领域中,把深度学习模型应用于实时图像处理任务已然成为一项关键技术。在本博客里,我们会详细阐述如何运用 YOLOv11 算法,并结合 PyQt5 来创建一个实时目标检测系统。这个系统能够在视频流中识别并标注特定对象,比如生活中常见的电力设备缺陷检测。
(1)引入必要的库:
首先,系统的构建从导入必要的 Python 模块开始。sys 模块是 Python 内置的模块,它提供了诸多与 Python 解释器紧密相关的功能。例如,sys.argv 可用于获取命令行参数,这在启动应用程序时非常重要。time 模块允许我们获取当前时间,这对于性能评估以及监控推理时间起着至关重要的作用。OpenCV 库(cv2)是图像处理的核心,它提供了一系列强大的功能来捕捉和处理图像数据。
import cv2
import numpy as np
from PyQt5.QtCore import QTimer, Qt, pyqtSignal, QThread
from PyQt5.QtGui import QImage, QPixmap, QPalette
from PyQt5.QtWidgets import QMainWindow, QFileDialog, QDesktopWidgetfrom ui_mainwindow import Ui_MainWindow
from utils import image_read_from_chinese_pathfrom ultralytics import YOLO
(2)设置主窗口:
构建用户界面(UI)是实现系统的关键一步。我们借助 PyQt5 库构建了图形用户界面。QMainWindow 作为我们窗口的基类,为展示处理后的图像提供了一个画布。
class MyMainWindow(QMainWindow):def __init__(self, parent=None):# 调用父类构造函数,创建窗体super().__init__(parent)# 创建UI对象self.ui = Ui_MainWindow()# 构造UI界面self.ui.setupUi(self)self.set_centre()self.image_file_path = None
(3)初始化模型
self.model = YOLO('./weights/best.pt')
(4)界面信号槽绑定
self.ui.comboBox_source.currentIndexChanged.connect(self.comboBox_source_slot)self.ui.toolButton_fileOpen.clicked.connect(self.toolButton_fileOpen_slot)
self.ui.pushButton_infer.clicked.connect(self.pushButton_infer_slot)
self.ui.pushButton_infer_stop.clicked.connect(self.pushButton_infer_stop_slot)
self.ui.doubleSpinBox_conf.valueChanged.connect(self.doubleSpinBox_conf_slot)
self.ui.horizontalSlider_conf.valueChanged.connect(self.horizontalSlider_conf_slot)self.ui.doubleSpinBox_iou.valueChanged.connect(self.doubleSpinBox_iou_slot)
self.ui.horizontalSlider_iou.valueChanged.connect(self.horizontalSlider_iou_slot)
(5)图像显示
@staticmethod
def show_image(img_src, label):try:# img_src = cv2.resize(img_src, None, fx=0.5, fy=0.5)ih, iw, _ = img_src.shapew = label.geometry().width()h = label.geometry().height()# 保持纵横比# 找出长边if iw > ih:scal = w / iwnw = wnh = int(scal * ih)img_src_ = cv2.resize(img_src, (nw, nh))else:scal = h / ihnw = int(scal * iw)nh = himg_src_ = cv2.resize(img_src, (nw, nh))frame = cv2.cvtColor(img_src_, cv2.COLOR_BGR2RGB)img = QImage(frame.data, frame.shape[1], frame.shape[0], frame.shape[2] * frame.shape[1],QImage.Format_RGB888)label.setPixmap(QPixmap.fromImage(img))except Exception as e:print(repr(e))
安装与资源说明
离线安装配置文件说明
总结与展望
在本博客当中,我们对一个基于 YOLOv11 模型的实时电力设备缺陷检测系统进行了详细的介绍。该系统采用模块化的设计方式,充分运用了合理的架构设计,从而具备良好的可维护性与可扩展性。它的用户界面十分友好,能够实时展示电力设备缺陷检测和识别的结果。
此系统支持摄像头、视频、图像以及批量文件等多种输入源,能够满足用户在不同场景下的需求。后续可以添加更多的预训练模型,以增加检测和识别的种类;对用户界面进行优化,增强个性化设置;并且积极倾听用户反馈,期望不断改进系统,从而更好地满足用户的需求。
结束语
由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。
相关文章:
深度学习实战电力设备缺陷检测
本文采用YOLOv11作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv11以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对电力设备缺陷数据集进行训练和优化,该数据集包含丰富的电力设备缺…...
随机产生4位随机码(java)
Random类: 用于生成随机数 import java.util.Random; 导入必要的类 generateVerificationCode()方法: 这是一个静态方法,可以直接通过类名调用 返回一个6位数字的字符串,首位不为0 生成首位数字: random.nextInt…...
音视频入门基础:RTCP专题(4)——RTCP协议简介(下)
本文接着《音视频入门基础:RTCP专题(3)——RTCP协议简介(中)》,继续对RTCP协议进行简介。本文的一级标题从“十四”开始。 十四、SDES: Source Description RTCP Packet 本段内容对应《RFC 3550》的第6.5节…...
PyCharm2024.3.5专业版解决Conda executable is not found问题
项目场景: pycharm使用anaconda 内的虚拟环境 pycharm 2024.3.5 专业版 C:\Users\Administrator>conda infoactive environment : transmute_recipe_generatoractive env location : D:\anaconda3\envs\transmute_recipe_generatorshell level : 1user config…...
滑动窗口思想 面试算法高频题
基本思想 滑动窗口思想其实就是快慢型的特例 计算机网络中滑动窗口协议(Sliding Window Protocol),该协议是TCP实现流量控制等的核心策略之一。事实上在与流量控制、熔断、限流、超时等场景下都会首先从滑动窗口的角度来思考问题࿰…...
Linux中特殊的变量
1.$# 含义:表示传入脚本或函数的参数数量。 用法:用于检查用户是否提供了足够的参数。 示例: #!/bin/bash echo "参数数量: $#"2.$? 含义:表示上一条命令的退出状态。如果命令成功执行,值为 0;…...
Linux文件系统与日志分析
目录 一.日志 1.1日志的定义 1.2日志的功能 1.3日志的分类 1.4日志的文件格式 1.5用户日志 1.6一些常见的日志 1.7日志消息的级别 二.系统日志管理 rsyslog 2.1rsyslog的定义 2.2rsyslog 配置文件 2.3rsyslog的实际应用----单独显示某一服务的日志 1.编辑rsyslog配…...
从传统物流到智能调度的全链路升级
一、TMS系统升级的核心目标与整体框架 (一)为什么要升级?传统物流管理的三大痛点 调度效率低下:过去依赖人工分单、手动匹配承运商,订单量大时容易出错,比如不同区域的订单混排导致运输路线绕路ÿ…...
UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题
【[metablriger] UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题】 UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题...
STL_vector_01_基本用法
👋 Hi, I’m liubo👀 I’m interested in harmony🌱 I’m currently learning harmony💞️ I’m looking to collaborate on …📫 How to reach me …📇 sssssdsdsdsdsdsdasd🎃 dsdsdsdsdsddfsg…...
css2学习总结之尚品汇静态页面
css2总结之尚品汇 一、布局 在 PC 端网页中,一般都会有一个固定宽度且水平居中的盒子,来显示网页的主要内容,这是网页 的版心。 版心的宽度一般是 960 ~ 1200 像素之间。 版心可以是一个,也可以是多个。 二、布局相关名词 我…...
Lua 第5部分 表
表( Table )是 Lua 语言中最主要(事实上也是唯一的)和强大的数据结构。 使用表,Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他很多数据结构。 Lua语言也使用表来表示包( package &am…...
01分数规划
https://ac.nowcoder.com/acm/contest/22353/1011 并不需要高级数据结构,对答案二分即可。 假定当前二分的答案为 x x x,则 ∑ v i ∑ w i ≥ x \frac{ \sum_{v_i} }{\sum_{w_i}} ≥ x ∑wi∑vi≥x 成立时 x x x 才可能是最后的答案。 化简式…...
无人机动力系统全维度解析:技术演进、选型策略与未来趋势
一、动力系统技术理念与设计逻辑 (一)核心技术指标 能量密度:决定续航能力的关键参数,单位为 Wh/kg。当前主流锂聚合物电池能量密度约 250-300Wh/kg,氢燃料电池可达 500-800Wh/kg,航空燃油则高达 12,000W…...
重新审视中国的GB标准(44495 – 44497)
此前,我们深入探讨了中国新推出的智能互联汽车(ICV)网络安全标准GB Standard 44495-2024。我们探讨了该标准对汽车制造商的影响、与UNECE R155和ISO/SAE 21434等全球标准的一致性,以及该标准对未来汽车网络安全的意义。 然而,GB 44495-2024并…...
Linux进程控制(五)之做一个简易的shell
文章目录 做一个简易的shell预备知识代码实现运行结果 做一个简易的shell 重谈Shell shell是操作系统的一层外壳程序,帮我们用户执行指令, 获取到指令后,交给操作系统,操作系统执行完后,把执行结果通过shell交给用户…...
Apache Kafka全栈技术解析
目录 第一章 Kafka概述与核心价值 1.1 消息队列的演进与Kafka的诞生 1.2 Kafka的核心应用场景 1.3 Kafka生态全景图 第二章 Kafka核心概念与架构解析 2.1 核心概念深度剖析 2.2 Kafka架构设计精要 第三章 Kafka环境搭建与配置 3.1 单机部署实战 3.2 集群部署最佳实践 …...
结合 Flink/Spark 进行 AI 大数据处理(实时数据 + AI 推理的应用场景)
随着企业对实时智能决策的需求日益增强,将 Flink / Spark 等流批计算框架 与 大模型推理能力相结合,正在成为 AI 工业化落地的重要实践路径。本篇文章将深入介绍如何将 AI 模型集成到大数据流处理系统中,实现实时感知、智能判断与自动反馈。 1. 为什么需要“实时数据 + AI 推…...
开发PDF时,如何比较 PDF 文件
在 PDF 论坛上,“如何比较 PDF 文件”是一个经常被提到的问题。在开始之前,重要的是要明确你想要比较的内容是什么。 不同的 PDF 文件可能看起来一样吗? 是的,可能。不同的 PDF 创建工具可能会生成在视觉上完全相同的页面&#x…...
自动提取pdf公式 ➕ 输出 LaTeX
# 创建打包脚本的主内容 script_content """ from doc2x.extract_formula import extract_formula_imgs from pix2text import Pix2Text from PIL import Image import osdef main():pdf_path "your_file.pdf" # 将你的PDF命名为 your_file.pdf 并…...
abaqus二次开发python程序集
abaqus二次开发python程序集 1、设置字体背景色等2、读取模态频率并写入 csv 文件3、在两个窗口快速对比各价模态 1、设置字体背景色等 # _*_ coding:UTF-8 _*_from abaqusConstants import* def fontsize(sessionNone):#设置字体session.viewports[Viewport: 1].viewportAnno…...
高级java每日一道面试题-2025年3月23日-微服务篇[Nacos篇]-如何使用Nacos进行服务发现?
如果有遗漏,评论区告诉我进行补充 面试官: 如何使用Nacos进行服务发现? 我回答: 在Java高级面试中讨论如何使用Nacos进行服务发现时,可以从多个角度深入探讨,包括基本概念、配置步骤、代码示例以及高级特性。以下是综合了多种信息的详细回…...
k8s核心资源对象一(入门到精通)
本文将深入探讨Kubernetes中的核心资源对象,包括Pod、Deployment、Service、Ingress、ConfigMap和Secret,详细解析其概念、功能以及实际应用场景,帮助读者全面掌握这些关键组件的使用方法。 一、pod 1 pod概念 k8s最小调度单元,…...
了解 DeepSeek R1
了解DeepSeek R1 R1探索纯强化学习是否可以在没有监督微调的情况下学会推理的能力。 ‘Aha’ Moment 这种现象有点类似于人类在解决问题时突然意识到的方式,以下是它的工作原理: 初始尝试:模型对解决问题进行初始尝试识别:识别…...
【C语言】大小端字节序和字节序判断
前言: 在上章介绍了整形在内存的储存,了解了原码,反码,补码,知道了整数在内存的储存一般是补码,解决了负数相加的问题。 那么在本章为大家讲解一下大小端字节序。 一那字节序是什么呢? 字节…...
DrissionPage移动端自动化:从H5到原生App的跨界测试
一、移动端自动化测试的挑战与机遇 移动端测试面临多维度挑战: 设备碎片化:Android/iOS版本、屏幕分辨率差异 混合应用架构:H5页面与原生组件的深度耦合 交互复杂性:多点触控、手势操作、传感器模拟 性能监控:内存…...
ARM 汇编启动代码详解:从中断向量表到中断处理
ARM 汇编启动代码详解:从中断向量表到中断处理 引言 在嵌入式系统开发中,ARM 处理器(如 Cortex-A 系列)的启动代码是系统初始化和运行的基础。启动代码通常包括中断向量表的创建、初始化硬件状态(如关闭缓存和 MMU&a…...
笔试专题(七)
文章目录 乒乓球筐(哈希)题解代码 组队竞赛题解代码 删除相邻数字的最大分数(线性dp)题解代码 乒乓球筐(哈希) 题目链接 题解 1. 两个哈希表 先统计第一个字符串中的字符个数,再统计第二个字…...
React基础知识(一)
文章目录 概念特点React基本使用hello_react案例虚拟DOM的两种创建方式使用jsx创建使用js创建 虚拟DOM和真实DOM React jsxXMLjsx语法规则作用基本语法规则js语句和js代码babel.js作用 模块与组件模块组件 React面向组件编程函数式组件类组件 概念 react是一个将数据渲染为Htm…...
红黑树(Red-Black Tree)核心知识点与面试高频问题
红黑树(Red-Black Tree)核心知识点与面试高频问题 一、红黑树的核心性质 红黑树是一种自平衡的二叉搜索树,通过以下规则确保平衡性: 节点颜色:每个节点是红色或黑色。 根节点:根必须是黑色。 叶子节点&a…...
SpringBoot整合SSM
一、SpringBoot整合SSM SpringBoot整合SpringSpringBoot整合SpringMVCSpringBoot整合MyBatis(主要) 步骤一:创建SpringBoot工程,添加druid依赖 <!-- todo 1 添加druid连接池依赖--> <dependency><groupId>co…...
set/multiset容器
1.概念 所有元素会在插入时自动排序 set/multiset属于关联式容器,底层结构是用二叉树实现。 set不允许重复元素,multiset允许重复元素。 2. set构造和赋值 set<T> st; set(const set &st);// 拷贝构造函数 set& operator(const set &a…...
vim 编辑器 使用教程
Vim是一款强大的文本(代码)编辑器,它是由Bram Moolenaar于1991年开发完成。它的前身是Bill Joy开发的vi。名字的意义是Vi IMproved。 打开vim,直接在命令行输入vim即可,或者vim <filename>. Vim分为四种模式&a…...
去中心化固定利率协议
核心机制与分类 协议类型: 借贷协议(如Yield、Notional):通过零息债券模型(如fyDai、fCash)锁定固定利率。 收益聚合器(如Saffron、BarnBridge):通过风险分级或博弈论…...
Python高阶函数-filter
1. 基本概念 filter() 是Python内置的高阶函数,用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数,返回一个迭代器,包含使函数返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性计算:filter对象是…...
hive/doris查询表的创建和更新时间
hive查询表的创建和更新时间: SELECT d.NAME AS database_name, t.TBL_NAME AS table_name, FROM_UNIXTIME(t.CREATE_TIME) AS create_time, FROM_UNIXTIME(tp.PARAM_VALUE) AS last_ddl_time FROM metastore.TBLS t JOIN metastore.DBS d ON t.DB_ID d.DB_ID JOIN…...
40常用控件_WindowFrame的影响
window frame 的影响 如果 widget 作为一个窗口(带有标题栏,最小化,最大化,关闭按钮),那么在计算尺寸和坐标的 时候就有两种算法.包含 window frame 和 不包含 window frame. 其中x(),y0,frameGeometry(), pos(),move() 都是按照包含 window frame 的方式来计算 的. 其中 geome…...
PCB 赋能机器人技术革新:核心功能与前沿趋势
一、智能控制中枢的异构集成 采用 20 层刚挠结合板架构,搭载 NVIDIA Jetson AGX Orin SoC(100TOPS 算力),集成 64 位 ARMv8 内核与 32GB 内存,实现多模态传感器数据融合与实时决策。板载 128MB DDR4 缓存支持 μs 级响…...
unity 环形UI菜单实现方法2
在项目中需要一个环形UI并且循环往复的效果,这个方法思路为提前预设好位置,让UI根据坐标预设的移动,然后使用mask遮罩达到循环往复效果的目的。 下图分别分为了三个列表 第一个列表poslist是提前预设的位置 第二个列表为背景暂时不用看 第三个…...
Redis进阶--主从复制
目录 一、引言 二、介绍 三、解决问题 四、配置主从复制 1.复制 全量复制: 部分复制: 实时复制: 五、总结 一、引言 本篇文章将继续介绍Redis中的主从复制机制 二、介绍 主从复制是在分布式系统中实现的,希望有多个服务器…...
Redisson分布式锁:原理、使用
1. Redisson简介 Redisson是一个基于Redis的Java客户端库,提供了丰富的分布式对象和服务(如分布式锁、信号量、Map等)。其核心优势在于简化分布式锁的实现,并解决了原生Redis分布式锁的常见问题(如死锁、误删…...
Java设计模式之外观、享元、组合模式《三国争霸:模式风云录》
第一章:乱世起(外观初现) 黄巾余孽张角三兄弟操控"混沌子系统",各地流民不堪996劳役。观国隐士诸葛孔明出山,在博望坡构建首个"军师智脑": /*** 外观模式:军师智…...
设计模式之解释器模式:原理、实现与应用
引言 解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言的文法表示,并提供一个解释器来解释该语言中的句子。解释器模式适用于需要解析特定语法规则的场景,如正则表达式、SQL解析等。本文将深入…...
redis itheima
缓存问题 核心是如何避免大量请求到达数据库 缓存穿透 既不存在于 redis,也不存在于 mysql 的key,被重复请求 public Result queryById(Long id) {String key CACHE_SHOP_KEYid;// 1. redis & mysqlString shopJson stringRedisTemplate.opsFo…...
AF3 OpenFoldDataModule类setup方法解读
AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类 setup 方法用于设置数据集的关键部分,负责根据不同的模式(训练、验证或预测)生成和初始化相应的数据集。 源代码: def setup(self, stage=None):# Most of the arguments are the same for the three datasets data…...
服务器报错:xxx/libc.so.6: version `GLIBC_2.32‘ not found
/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by ./aima-sim-app-main) 解决思路 根据错误信息,您的应用程序 aima-sim-app-main 和 libmujoco.so.3.1.6 库依赖于较新的 GNU C Library (glibc) 版本(如 GLIBC_2.32, GLIBC…...
FPGA状态机设计:流水灯实现、Modelsim仿真、HDLBits练习
一、状态机思想 1.概念 状态机(Finite State Machine, FSM)是计算机科学和工程领域中的一种抽象模型,用于描述系统在不同状态之间的转换逻辑。其核心思想是将复杂的行为拆解为有限的状态,并通过事件触发状态间的转移。 2.状态机…...
机试题——最少乘坐公交次数
题目描述 春节将近,小明想在节日期间逛一逛城里的 ( N ) 个著名景点。所有景点都能通过坐公交到达。需要设计一种公交路线方案,让小明能最快地逛完所有景点。 输入描述 第一行:一个整数 ( N ),表示景点数量,满足 ( …...
防孤岛保护装置在分布式光伏并网中的应用
什么是光伏的“孤岛效应” 孤岛islanding 包含负荷和电源的部分电网,从主网脱离后继续孤立运行的状态。孤岛可分为非计划性孤岛和计划性孤岛。 孤岛效应的危害 当电网侧停电检修,若并网光伏电站的逆变器仍在继续供电,维修人员不一定…...
记一次gitlab服务器负载过高问题处理
服务器上进程 /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru 进程服务器cpu占用过高应该怎么处理 tail -f /var/log/gitlab/gitlab-rails/production.log调整 Unicorn 配置:unicorn.rb 是 Unicorn 服务器的配…...