图神经网络(GNN)在生产过程优化中的应用介绍

目录

一、说明

二、图神经网络和应用

2.1 什么是图神经网络?

2.2 将生产系统建模为图形

2.3 过程模拟和假设分析

2.4 优化生产计划

三、生产系统中的图形数据表示

3.1 生产图中的节点表示

3.2 生产图中的边缘表示

3.3 图形表示的好处

3.4 将 GNN 与图形表示集成

3.5 实际应用

四、使用图神经网络的过程仿真和假设分析

4.1 模拟生产过程

4.2 进行假设分析

4.3 示例方案:计算机升级影响

五、使用图神经网络优化生产计划

5.1 以图形形式理解生产计划

5.2 用于动态调度的 GNN

六、案例研究:实施 GNN 进行调度优化

6.1 代码

6.2 第 1 步:图形构造

6.3 第2 步:定义 GNN 模型

6.4 第 3 步:训练 GNN

6.5 第 4 步:生成计划

6.6 第 5 步:可视化计划

6.7 训练损失

6.8 甘特图可视化

6.9 任务的详细细分

6.10 资源需求的解释


一、说明

        图神经网络 (GNN) 是神经网络的一个高级子集,适用于图结构中的数据。在制造过程中,这些网络可用于通过表示和分析生产系统中的复杂关系和依赖关系来优化操作。本文旨在阐明GNN在优化制造过程中的应用,重点是制造系统建模、过程模拟和优化生产计划。

二、图神经网络和应用

2.1 什么是图神经网络?

        图神经网络 (GNN) 处理以图形表示的数据,这是一种由节点(顶点)和边(节点之间的连接)组成的数学结构。每个节点和边都可以具有关联的属性,GNN 的目标是学习这些节点和边的表示,以捕获它们的属性和图形的拓扑。这一特性使 GNN 特别适用于实体之间关系很重要的应用,例如制造过程。

2.2 将生产系统建模为图形

        在制造环境中,生产系统可以概念化为一个图形,其中每个节点代表生产线中的不同阶段,边缘代表物料或信息流。这种图形表示使GNN能够分析不同阶段之间的依赖关系和相互作用,从而有助于识别瓶颈或效率低下。通过调整这些关系或重新配置图形结构,可以实现更高效的生产流程。

2.3 过程模拟和假设分析

        GNN擅长模拟各种场景下的生产过程。通过改变图形的结构或节点和边的属性,GNN可以模拟“假设”场景。例如,如果机器的产出率提高怎么办?或者,如果两个进程之间的连接被重新路由怎么办?这些模拟可以预测这些变化对整个生产过程的影响,有助于决策和流程优化,而无需对生产线进行物理更改。

2.4 优化生产计划

        生产调度涉及分配资源、设置时间表和排序任务,以优化生产力并减少停机时间。将生产计划表示为图表允许 GNN 动态优化这些计划。该网络可以学习生产过程中的模式和约束,使其能够提出调度配置,以优化资源的使用并最大限度地减少完成时间。在任务之间具有复杂依赖关系或生产需求波动不可预测的环境中,这方面尤其有益。

三、生产系统中的图形数据表示

        利用图神经网络 (GNN) 优化生产过程的一个重要步骤是将生产系统有效地表示为图。这涉及识别可建模为节点的生产线组件,以及将关系或物料流建模为边。

3.1 生产图中的节点表示

        在生产图中,节点通常表示机器、工作站甚至单个操作员等实体。每个节点都可以具有运行容量、输出速率、当前状态(活动或空闲)和历史性能指标等属性。节点表示的粒度可能会有所不同;例如,节点可以表示生产线的单台机器或整个部分,具体取决于分析所需的详细程度。

3.2 生产图中的边缘表示

        生产图中的边描述了节点之间的交互或依赖关系。这些可以包括物料流、信息流或依赖关系约束(例如,一个操作在另一个操作完成之前无法启动)。与节点一样,边也可以具有流容量、传输速度或依赖关系类型等属性。这些属性对于准确模拟生产过程的动态至关重要。

3.3 图形表示的好处

        图形表示为流程优化提供了几个优点:

  1. 复杂依赖关系映射:它允许对生产过程各个组件之间的依赖关系和交互进行清晰的可视化和分析。这对于识别关键路径和潜在瓶颈特别有用。
  2. 场景分析的灵活性:可以轻松修改图表以表示不同的场景,从而可以有效地模拟和探索各种过程调整,而无需进行物理更改。
  3. 动态优化:通过实时数据,GNN 可以不断更新图形表示,并为流程优化提供持续的建议。这种动态方法有助于适应生产需求或操作条件的变化。

3.4 将 GNN 与图形表示集成

        一旦生产系统被建模为图形,GNN就可以用于执行各种优化任务。该网络从节点和边缘的属性以及整体图结构中学习,以预测结果并提出优化建议。例如,通过了解典型的流程模式和某些瓶颈的影响,GNN 可以建议重新路由流程或重新分配资源以提高整体效率。

3.5 实际应用

        在生产环境中实施基于图形的模型可以在制造的各个方面带来显著的增强:

  • 效率提升:通过优化物料和信息流,可以减少生产时间和资源使用。
  • 降低成本:识别效率低下并优化资源分配可以降低运营成本。
  • 增加产量:优化工艺流程和进度可以提高总产量,而无需额外资源。

四、使用图神经网络的过程仿真和假设分析

        一旦生产系统被恰当地表示为图形,图形神经网络(GNN)在制造业中的下一个重要用途就是过程模拟和进行“假设”分析。这种能力对于预测性规划和战略决策非常重要,使制造商能够预见生产线变更的后果,而无需实际实施。

4.1 模拟生产过程

        GNN可以通过操纵图形的结构来模拟整个生产过程。这包括更改节点属性(如机器速度或操作员效率)或修改边缘(如改变物料或信息流)。GNN 评估这些变化如何影响整体生产效率、质量和产量。

        例如,增加特定机器的容量将通过更改图形中节点的属性来表示。然后,GNN 处理此更改,以预测它将如何影响下游流程和整体生产时间表。这种模拟有助于了解机器升级或操作程序更改的潜在影响。

4.2 进行假设分析

        假设分析涉及假设变化并预测其结果。这在制造中特别有用,原因如下:

  1. 风险缓解:在进行代价高昂的更改或投资之前,制造商可以模拟影响,使他们能够做出更明智的决策并降低与流程变更相关的潜在风险。
  2. 最佳资源分配:通过模拟不同的场景,GNN 可以帮助确定最有效的资源分配方式,以最大限度地提高生产力并最大限度地降低成本。
  3. 中断计划:制造商可以模拟中断(如机器故障或供应延迟),以计划和制定最佳响应策略,从而最大限度地减少停机时间及其对生产的影响。

4.3 示例方案:计算机升级影响

        考虑一个场景,制造商正在考虑升级生产线关键部分的机器。使用 GNN 进行此假设分析所涉及的具体步骤是:

  1. 图形修改:更新表示计算机的节点以反映增加的容量或效率。
  2. 仿真:运行 GNN 模型,使用更新的图形模拟生产过程。
  3. 结果分析:分析变化如何影响生产时间、成本和最终产品质量。

此分析有助于确定升级是否会导致足够的改进以证明成本的合理性,或者其他修改是否可能更有效。

五、使用图神经网络优化生产计划

        对于生产工程来说,调度是一项重要的任务,涉及确定操作的最佳顺序和时间,以最大限度地提高效率和产量。图神经网络 (GNN) 通过利用生产过程的图形表示,为应对这一挑战提供了一种复杂的方法。最后一节讨论如何利用 GNN 来优化生产计划,提高制造运营的整体生产力。

5.1 以图形形式理解生产计划

        在生产环境中,调度问题可以可视化为图形,其中每个节点表示任务或操作,边表示依赖关系或优先级关系。节点上的属性可能包括操作持续时间、最早开始时间和最晚完成时间,而 Edge 可以携带后续操作之间的最小时间间隔等信息。

5.2 用于动态调度的 GNN

        GNN 可以根据实时数据和不断变化的条件动态调整生产计划。通过从生产绩效和外部因素的历史数据中学习,GNN可以预测潜在的延误或瓶颈,并主动调整计划。以下是 GNN 如何促进动态调度:

  1. 任务持续时间预测:通过分析过去的性能数据,GNN 可以更准确地预测每个任务的持续时间,同时考虑机器性能和操作员效率等因素。
  2. 实时调整:随着条件的变化,例如机器故障或紧急订单插入,GNN 可以实时重新校准计划,最大限度地减少中断并优化流程。
  3. 资源分配:GNN 可以通过了解图中复杂的相互依赖关系来建议资源(机器、操作员)对任务的最佳分配,确保资源得到有效利用而没有瓶颈。

六、案例研究:实施 GNN 进行调度优化

        让我们假设一个工厂,其中使用各种机器和操作员组装多种产品。挑战在于以最大限度地减少空闲时间并满足交付期限的方式安排任务。以下是使用 GNN 的分步方法:

  1. 图形构造:构建一个图形,其中每个节点代表一个任务,边表示必须执行任务的顺序。包括估计任务工期和资源要求等属性。
  2. 训练 GNN:使用历史数据对 GNN 进行训练,了解过去不同的日程安排决策如何影响生产力和截止日期。
  3. 仿真和优化:使用 GNN 模拟不同的调度方案。该网络评估每个方案,并就其在生产力和资源利用率方面的有效性提供反馈。
  4. 实施:实施 GNN 建议的最佳时间表,根据生产车间的持续反馈进行实时调整。

6.1 代码

import torch
from torch_geometric.data import Data
from torch_geometric.nn import GCNConv
import torch.nn.functional as F
import matplotlib.pyplot as plt
import numpy as np# Step 1: Graph Construction
edges = torch.tensor([[0, 1], [1, 2], [1, 3], [2, 4], [3, 4]], dtype=torch.long).t()
node_features = torch.tensor([[10, 1],  # Task 0: Duration 10, Resource Requirement 1[20, 2],  # Task 1: Duration 20, Resource Requirement 2[15, 1],  # Task 2: Duration 15, Resource Requirement 1[10, 1],  # Task 3: Duration 10, Resource Requirement 1[5,  2]   # Task 4: Duration 5, Resource Requirement 2
], dtype=torch.float)data = Data(x=node_features, edge_index=edges)# Step 2: Define the GNN Model
class GNN(torch.nn.Module):def __init__(self):super(GNN, self).__init__()self.conv1 = GCNConv(data.num_node_features, 16)self.conv2 = GCNConv(16, data.num_node_features)  # Output the same size as input featuresdef forward(self, data):x, edge_index = data.x, data.edge_indexx = self.conv1(x, edge_index)x = F.relu(x)x = self.conv2(x, edge_index)return xmodel = GNN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)# Step 3: Train the GNN
for epoch in range(200):optimizer.zero_grad()out = model(data)loss = F.mse_loss(out, data.x)loss.backward()optimizer.step()if epoch % 50 == 0:print(f'Epoch {epoch}: Loss {loss.item()}')# Step 4: Generate Schedule from GNN Output
def generate_schedule(task_durations, dependencies, resource_requirements):num_tasks = len(task_durations)start_times = np.zeros(num_tasks)finish_times = np.zeros(num_tasks)for i in range(num_tasks):if i == 0 or all(dependencies[:,1] != i):start_times[i] = 0  # Start the first task or tasks without dependencies immediatelyelse:dependent_tasks = dependencies[:,0][dependencies[:,1] == i]start_times[i] = max([finish_times[j] for j in dependent_tasks])finish_times[i] = start_times[i] + task_durations[i]schedule = {f'Task {i}': (start_times[i], finish_times[i], resource_requirements[i]) for i in range(num_tasks)}return scheduleoptimized_outputs = model(data).detach().numpy()
optimized_durations = optimized_outputs[:, 0]
resource_requirements = optimized_outputs[:, 1]
schedule = generate_schedule(optimized_durations, edges.numpy().T, resource_requirements)# Step 5: Visualize the Schedule
fig, ax = plt.subplots()
colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
for i, (task, (start, end, resource)) in enumerate(schedule.items()):ax.plot([start, end], [i, i], marker='o', color=colors[i % len(colors)], label=task)ax.text((start + end)/2, i, f'{task}\nResource: {resource:.2f}', horizontalalignment='center', verticalalignment='center')ax.set_yticks(range(len(schedule)))
ax.set_yticklabels(schedule.keys())
ax.set_title('Production Schedule')
ax.set_xlabel('Time')
plt.legend()
plt.show()

在本节中,我们将演练用于使用图神经网络 (GNN) 优化生产计划的 Python 代码。本解释旨在简单明了且技术性强,面向有兴趣将 GNN 应用于实际生产调度问题的读者。

6.2 第 1 步:图形构造

首先,我们构建代表生产系统的图形。图形的节点表示任务,边表示任务之间的依赖关系。每个节点都具有任务的初始持续时间和资源需求等功能。

edges = torch.tensor([[0, 1], [1, 2], [1, 3], [2, 4], [3, 4]], dtype=torch.long).t()
node_features = torch.tensor([[10, 1],  # Task 0: Duration 10, Resource Requirement 1[20, 2],  # Task 1: Duration 20, Resource Requirement 2[15, 1],  # Task 2: Duration 15, Resource Requirement 1[10, 1],  # Task 3: Duration 10, Resource Requirement 1[5,  2]   # Task 4: Duration 5, Resource Requirement 2
], dtype=torch.float)data = Data(x=node_features, edge_index=edges)
  • edges:定义任务之间的依赖关系。例如,必须在任务 1 开始之前完成任务 0。
  • node_features:每行表示一个任务及其初始持续时间和资源需求。

6.3 第2 步:定义 GNN 模型

我们使用 PyTorch Geometric 定义一个简单的 GNN 模型。该模型由两个图形卷积层组成。

class GNN(torch.nn.Module):def __init__(self):super(GNN, self).__init__()self.conv1 = GCNConv(data.num_node_features, 16)self.conv2 = GCNConv(16, data.num_node_features)  # Output the same size as input featuresdef forward(self, data):x, edge_index = data.x, data.edge_indexx = self.conv1(x, edge_index)x = F.relu(x)x = self.conv2(x, edge_index)return x
  • GCNConv:基于图结构处理节点特征的图卷积层。
  • forward:定义模型的前向传递。它接受输入数据,应用两个卷积层,中间有一个 ReLU 激活。

6.4 第 3 步:训练 GNN

我们训练 GNN 模型来学习优化的任务持续时间和资源需求。训练循环运行 200 个周期,最大限度地减少了预测任务特征和初始任务特征之间的均方误差损失。

model = GNN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)for epoch in range(200):optimizer.zero_grad()out = model(data)loss = F.mse_loss(out, data.x)loss.backward()optimizer.step()if epoch % 50 == 0:print(f'Epoch {epoch}: Loss {loss.item()}")
  • optimizer:用于训练的 Adam 优化器。
  • loss:模型预测与原始节点特征之间的均方误差损失。
  • print:每 50 个周期输出一次损失,以监控训练进度。

6.5 第 4 步:生成计划

        训练后,我们使用模型的输出来生成优化的生产计划。这涉及根据优化的持续时间和依赖关系计算每个任务的开始和完成时间。

def generate_schedule(task_durations, dependencies, resource_requirements):num_tasks = len(task_durations)start_times = np.zeros(num_tasks)finish_times = np.zeros(num_tasks)for i in range(num_tasks):if i == 0 or all(dependencies[:,1] != i):start_times[i] = 0  # Start the first task or tasks without dependencies immediatelyelse:dependent_tasks = dependencies[:,0][dependencies[:,1] == i]start_times[i] = max([finish_times[j] for j in dependent_tasks])finish_times[i] = start_times[i] + task_durations[i]schedule = {f'Task {i}': (start_times[i], finish_times[i], resource_requirements[i]) for i in range(num_tasks)}return scheduleoptimized_outputs = model(data).detach().numpy()
optimized_durations = optimized_outputs[:, 0]
resource_requirements = optimized_outputs[:, 1]
schedule = generate_schedule(optimized_durations, edges.numpy().T, resource_requirements)
  • generate_schedule:用于计算任务开始和完成时间的函数。它确保任务在其依赖项完成后启动。
  • optimized_outputs:模型的输出,包含优化的任务持续时间和资源需求。
  • schedule:包含每个任务的开始和结束时间以及资源需求的字典。

6.6 第 5 步:可视化计划

最后,我们使用 Matplotlib 可视化生产计划。每个任务在甘特图上都表示为一个折线段。

fig, ax = plt.subplots()
colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
for i, (task, (start, end, resource)) in enumerate(schedule.items()):ax.plot([start, end], [i, i], marker='o', color=colors[i % len(colors)], label=task)ax.text((start + end)/2, i, f'{task}\nResource: {resource:.2f}', horizontalalignment='center', verticalalignment='center')ax.set_yticks(range(len(schedule)))
ax.set_yticklabels(schedule.keys())
ax.set_title('Production Schedule')
ax.set_xlabel('Time')
plt.legend()
plt.show()
  • fig, ax = plt.subplots():为绘图创建一个新图形。
  • ax.plot:将每个任务绘制为一个线段,并包含开始和结束时间。
  • ax.text:添加文本标签以显示资源要求。
  • ax.set_yticks和 :使用任务名称标记 y 轴。ax.set_yticklabels
  • ax.set_title和 :设置图表的标题和 x 轴标签。ax.set_xlabel
  • plt.legend和 :添加图例并显示绘图。plt.show

输出

结果在甘特图中可视化,该甘特图显示每个任务的开始和结束时间,以及资源需求。以下是输出的详细细分。

6.7 训练损失

GNN 的训练过程通过不同时期的损失值进行监控:

  • Epoch 0: Loss 75.969 — 由于模型以随机权重开始,因此预计会有如此高的初始损失。
  • Epoch 50: Loss 14.671 — 损失显著减少,表明模型正在从数据中学习。
  • Epoch 100: Loss 14.352 — 损失继续减少,但速度较慢。
  • Epoch 150: Loss 14.186 — 损失趋于稳定,表明模型已达到合理的精度水平。

这些损失值表明,该模型正在有效地学习,以根据图结构和节点特征优化任务持续时间和资源分配。

6.8 甘特图可视化

甘特图提供了优化生产计划的可视化表示。每个任务在时间轴上显示为一个线段,开始和结束时间由 GNN 的预测确定。

  • X 轴(时间):表示计划任务的时间线。
  • Y 轴(任务):每行对应一个任务,从任务 0 到任务 4 标记。
  • 线段:每个线段的长度对应任务持续时间,它们在 X 轴上的位置表示开始和结束时间。

6.9 任务的详细细分

任务 0(蓝色):

  • 开始时间: 0
  • 结束时间:8点左右
  • 资源需求:1.25
  • 依赖项:无(立即启动)

任务 1(绿色):

  • 开始时间:0(可立即开始)
  • 结束时间:15点左右
  • 资源需求:1.58
  • 依赖项:无(立即启动)

任务 2(红色):

  • 开始时间:任务 1 结束后,大约 15 点
  • 结束时间:30左右
  • 资源需求:1.38
  • 依赖关系:任务 1

任务 3(青色):

  • 开始时间:任务 1 结束后,大约 15 点
  • 结束时间:30左右
  • 资源需求:1.34
  • 依赖关系:任务 1

任务 4(洋红色):

  • 开始时间:任务2和任务3结束后,30点左右
  • 结束时间:约45
  • 资源需求:1.54
  • 依赖关系:任务 2 和任务 3

6.10 资源需求的解释

  • 每个任务的资源要求也显示在任务标签旁边。这些值表示完成任务所需的资源量(例如,人力、机器工时)。
  • 任务 1 的资源要求最高 (1.58),这可能表明它是资源密集型任务。
  • 任务 0 的资源需求最低 (1.25),表明与其他任务相比,它需要的资源更少。

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

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

相关文章

博睿数据应邀出席双态IT用户大会,分享《构建云原生时代的一体化智能可观测性》

5月31日-6月2日,第十二届双态IT用户大会于成都成功举行,此次大会由DCMG和双态IT论坛联合主办,聚焦“信创时代的组织级云原生能力建设”和“组织级云原生运维能力建设”两大会议主题,旨在推动双态IT落地与创新,为企业数…

(学习笔记)数据基建-数据质量

数据基建-数据质量 数据质量数据质量保障措施如何推动上下游开展数据质量活动数据质量保障如何量化产出数据质量思考全链路数据质量保障项目 数据质量 概念:数据质量,意如其名,就是数据的准确性,他是数据仓库的基石,控…

容器(Docker)安装

centos安装Docker sudo yum remove docker* sudo yum install -y yum-utils#配置docker的yum地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装指定版本 - 可以根据实际安装版本 sudo yum install -y docke…

easyexcel动态表头导出

动态表头导出excel 红框固定&#xff0c;绿框动态 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>工具类 import com.alibaba.excel.util…

【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重载

目录 一、 日期类的实现 Date.h 1.1 GetMonthDay函数&#xff08;获取某年某月的天数&#xff09; 问&#xff1a;这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢&#xff1f; 1.2 CheckDate函数&#xff08;检查日期有效性&#xff09;、Print函数&#xff08;…

【WP】猿人学13_入门级cookie

https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候&#xff0c;就会重新给match/13发包&#xff0c;这个包返回一段js代码&#xff0c;应该是生成cookie的 <script>document.cookie(y)(u)(a…

【初阶数据结构】栈和队列(附题目)

目录 1.栈 1.1栈的概念及结构 1.2栈的实现 1.2.2实现结构的选择 a.数组 b.链表 c.更优的选择 1.2.3实现结构 a.栈的结构体 b.栈的初始化 c.栈的销毁 d.入栈 e.出栈 f.获取栈顶元素 g.获取栈中有效元素个数 h.检测队列是否为空&#xff0c;如果为空返回非零结…

m1系列芯片aarch64架构使用docker-compose安装seata

之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 seata 镜像, 所以就尝试的安装了下, 亲测可用: 使用该命令查看正在运行的 seata 容器 docker ps | grep seata 一. docker-compose.yml 命令编写 volumes 命令所指定的宿主机映射地址, 需要根据自己的电脑环境更换 环…

MySQL条件查询

018条件查询之或者or or表示或者&#xff0c;还有另一种写法&#xff1a;|| 案例&#xff1a;找出工作岗位是MANAGER和SALESMAN的员工姓名、工作岗位 注意字符串一定要带单引号 select ename, job from emp where jobmanager or jobsalesman;任务&#xff1a;查询20和30部门的…

西湖大学最新AI工具:识别虚假新闻和辨别AI生成内容,准确率达99%

你好&#xff0c;我是郭震 随着人工智能技术的发展&#xff0c;生成式AI在文本生成领域展示了惊人的潜力。然而&#xff0c;随之而来的虚假新闻和AI生成的文章让人们难以分辨。 近日&#xff0c;西湖大学团队发布了一款名为Fast-DetectGPT的新工具&#xff0c;为识别虚假新闻和…

Linuxftp服务001匿名登入

在Linux系统中搭建FTP&#xff08;File Transfer Protocol&#xff09;服务&#xff0c;可以让用户通过网络在服务器与其他客户端之间传输文件。它有几种登入模式&#xff0c;今天我们讲一下匿名登入。 操作系统 CentOS Stream9 操作步骤 首先我们先下载ftp [rootlocalhost…

数字智能数字人直播带货软件系统 实现真人形象的1:1克隆 前后端分离 带完整的安装代码包以及搭建教程

系统概述 数字智能数字人直播带货小程序源码系统是一套集人工智能、3D建模、云计算等技术于一体的综合性解决方案。该系统通过深度学习算法&#xff0c;能够实现对真人形象的精准捕捉和1:1克隆&#xff0c;使数字人在直播过程中呈现出与真人无异的表现力。同时&#xff0c;系统…

OpenCv之简单的人脸识别项目(动态处理页面)

人脸识别 准备九、动态处理页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.定义视频处理脚本4.定义相机抓取脚本5.定义关闭窗口的函数6.按钮设计6.1视频处理按钮6.2相机抓取按钮6.3返回按钮 7.定义关键函数8.动态处理…

el-input添加clearable属性 输入内容时会直接撑开

<el-inputclearablev-if"item.type number || item.type text":type"item.type":placeholder"item.placeholder":prefix-icon"item.icon || "v-model.trim"searchform[item.prop]"></el-input>解决方案 添加c…

安全专业的硬件远控方案 设备无网也能远程运维

在很多行业中&#xff0c;企业的运维工作不仅仅局限在可以联网的IT设备&#xff0c;不能连接外网的特种设备也需要专业的远程运维手段。 这种特种设备在能源、医疗等行业尤其常见&#xff0c;那么我们究竟如何通过远程控制&#xff0c;对这些无网设备实施远程运维&#xff0c;…

【简报】VITA 74 (VNX)C

VNX 模块标准 12.5 mm Module • 母板 MiniPCIe • 200 针连接器 • 75mm &#xff08;长&#xff09; X 89mm &#xff08;宽&#xff09; X 12.5mm &#xff08;高&#xff09; •应用 1 个 SBC 2 I/O 载波 3 个 GPS / IMU / SAASM 4 存储和内存 19 mm Module • 母板 …

鸿蒙轻内核M核源码分析系列九 互斥锁Mutex

多任务环境下会存在多个任务访问同一公共资源的场景&#xff0c;而有些公共资源是非共享的临界资源&#xff0c;只能被独占使用。鸿蒙轻内核使用互斥锁来避免这种冲突&#xff0c;互斥锁是一种特殊的二值性信号量&#xff0c;用于实现对临界资源的独占式处理。另外&#xff0c;…

60V降压12V0.3A稳压芯片 48V降压5V0.3A电源IC-惠海H6246

惠海H6246降压开关控制器芯片是一款降压恒压的电源管理芯片&#xff0c;适用于高压输入、低压输出的应用。以下是对该产品的详细分析&#xff1a; 首先&#xff0c;H6246降压恒压芯片它内置60V耐压MOS&#xff0c;能够在48V的输入电压下稳定工作&#xff0c;并且具有宽压8V-48V…

vue开发网站--对文章详情页的接口内容进行处理

一、需求 接口返回的数据中既包含文字也包含图片&#xff0c;并且需要对图片进行处理&#xff08;设置最大宽度为100%并拼接域名&#xff09; 可以按照以下步骤进行操作&#xff1a; 二、代码 <template><div class"details"><div class"infos…

docker registry-harbor私有镜像仓库安装

本博文将引导您安装和配置Harbor私有镜像仓库。安装前&#xff0c;请确保您已安装Docker和Docker Compose。 前置环境 需要安装docker和docker-compose 下载Harbor Harbor的最新版本可以从GitHub下载。这里以2.9.4版本为例&#xff1a; 下载地址&#xff1a;https://github…