使用OpenVINO部署并行的人体关键点检测模型
使用OpenVINO部署并行的人体关键点检测模型
- 1 OpenVINO工具包 简介
- 2 OpenVINO 推理引擎的介绍
- 2.1 使用模型优化器转化为IR文件
- 2.2 使用推理引擎进行推理
- 3 OpenVINO 查看推理引擎可用设备
- 4 单线程运行推理引擎
- 4.1 使用Intel 集成GPU 单线程运行
- 4.2 使用Intel 第二代神经计算棒(NCS 2)单线程运行
- 5 多线程运行推理引擎
- 5.1 使用Intel 集成GPU 多线程运行
- 5.2 使用Intel 第二代神经计算棒(NCS 2)多线程运行
- 6 使用OpenVINO的异步推理方法
1 OpenVINO工具包 简介
OpenVINO™工具包可快速部署模拟人类视觉的应用程序和解决方案。该工具包基于卷积神经网络(CNN),可在英特尔®硬件上扩展计算机视觉(CV)工作负载,从而最大限度地提高性能。
OpenVINO™工具包包括以下组件:
- Deep Learning Deployment Toolkit (DLDT)
- Open Model Zoo
- Post-Training Optimization tool
- Deep Learning Workbench
- Deep Learning Streamer (DL Streamer)
- OpenCV
- Drivers and runtimes for OpenCL™ version 2.1
- Intel® Media SDK
我们主要使用的是第一个组件:Deep Learning Deployment Toolkit (DLDT)——深度学习部署工具包。
深度学习部署工具包主要用于深度学习模型在推理方面的部署和优化,其主要包含两个部分:
- 深度学习模型优化器:
一种跨平台的命令行工具,用于导入模型并为通过推理引擎进行最佳执行做准备。Model Optimizer导入,转换和优化模型,这些模型在流行的框架(例如Caffe *,TensorFlow *,MXNet *,Kaldi *和ONNX *)中进行了培训。 - 深度学习推理引擎:
统一的API,可在许多硬件类型上进行高性能推理,包括以下各项:- 英特尔®CPU
- 英特尔®集成显卡
- 英特尔®神经计算棒2
- 带有英特尔®Movidius™视觉处理单元(VPU)的英特尔 ®视觉加速器设计
参考: OpneVINO官方网站
2 OpenVINO 推理引擎的介绍
2.1 使用模型优化器转化为IR文件
在使用OpenVINO的推理引擎之前,必须使用OpenVINO的模型优化器(Model Optimizer)将深度学习模型文件转化为中间表示(IR)文件(即.bin文件和.xml文件)。具体可以参考:模型优化器开发人员指南.
可以用模型优化器将Tensorflow,MXNet,Kaldi,ONNX模型转化为IR文件。
2.2 使用推理引擎进行推理
使用模型优化器将原始模型转化为IR文件后,便可以使用OpenVINO的推理引擎对深度模型进行推理。
推理引擎是一组C ++库,提供了公共API,可在将模型部署在CPU,GPU,VPU或FPGA等硬件设备上进行推理。尽管推理引擎主要使用C++进行构建,但是也提供了相关的python api。
使用推理引擎的流程如下:
- 1 创建推理引擎核心对象
- 2 读取中间表示
- 3 编译和加载网络到设备
- 4 设置置输入数据
- 5 执行推理
- 6 获取输出
在操作系统为Windows 10的环境下,我们按照上述步骤使用python api来构造推理引擎:
import os
import numpy as np
#调用推理引擎相关模块
from openvino.inference_engine import IENetwork, IECore#创建推理引擎类
class InferenceEngineOpenVINO:#输入IR文件中.xml文件的路径,以及推理设备def __init__(self, net_model_xml_path, device):self.device = devicenet_model_bin_path = os.path.splitext(net_model_xml_path)[0] + '.bin'#1 创建推理引擎核心对象self.ie = IECore()#2 读取中间表示文件(.xml,.bin文件)self.net = IENetwork(model=net_model_xml_path, weights=net_model_bin_path)required_input_key = {'data'}#检验网络的输入和输出是否与设定一致(根据自己网络的情况而定)assert required_input_key == set(self.net.inputs.keys()), \'Demo supports only topologies with the following input key: {}'.format(', '.join(required_input_key))required_output_keys = {'Conv_229', 'Add_151', 'Add_153'}assert required_output_keys.issubset(self.net.outputs.keys()), \'Demo supports only topologies with the following output keys: {}'.format(', '.join(required_output_keys))#3 将网络加载到特定的设备self.exec_net = self.ie.load_network(network=self.net, num_requests=1, device_name=device)#定义推理方法def infer(self, img):# 4 设置输入数据,根据网络输入的格式对输入图片进行缩放input_layer = next(iter(self.net.inputs))n, c, h, w = self.net.inputs[input_layer].shapeif h != img.shape[0] or w != img.shape[1]:self.net.reshape({input_layer: (n, c, img.shape[0], img.shape[1])})self.exec_net = self.ie.load_network(network=self.net, num_requests=1, device_name=self.device)img = np.transpose(img, (2, 0, 1))[None, ]# 5 使用指定设备进行推理inference_result = self.exec_net.infer(inputs={'data': img})# 6 返回推理结果return inference_result
推理引擎构造完成后,我们可以在主函数调用InferenceEngineOpenVINO类来使用推理引擎,得到推理结果
#调用InferenceEngineOpenVINO类
from modules.inference_engine_openvino import InferenceEngineOpenVINO
#实例化对象
net = InferenceEngineOpenVINO(model, device)
#使用推理引擎得到推理结果
inference_result = net.infer(img)
3 OpenVINO 查看推理引擎可用设备
当我们使用需要使用不同设备进行推理的时候,需要查看可执行的设备,特别是当有多个相同的设备的时候,需要加入设备编号进行区别。
同样我们可以使用python api中 Inference_engine 模块中 IECore类的available_devices方法得到当前可用于OpenVINO推理的硬件设备。
本实验所使用的计算机的CPU为:Intel® Core™ i7-8750H,核显为:Intel® UHD Graphics 630。 此外,如图所示,还插入了两枚Intel第二代神经计算棒(NCS2)。
运行下列代码:
from openvino.inference_engine import IECoreie=IECore().available_devices
print(ie)
得到结果:
[E:] [BSL] found 0 ioexpander device
['CPU', 'GNA', 'GPU', 'MYRIAD.2.2-ma2480', 'MYRIAD.2.3-ma2480']
可以看到,检测到了5个设备,包括CPU,GNA,GPU,两个 NCS2 。检测到的两个NCS2 分别具有不同的编号:2.2 和 2.3。
下面我们将讨论运行同时使用推理引擎进行多个推理的情况。
4 单线程运行推理引擎
4.1 使用Intel 集成GPU 单线程运行
我们将使用OpenVINO同时运行两个 人体关键点检测模型。首先我们先看一下运行单个模型在集成GPU的推理的时间。将影片《功夫》的视频片段作为测试对象,测试视频的分辨率为1024×432。可以看到其FPS可以达到25.7。而根据输出显示,GPU推理时间约为0.025s, 推理、计算坐标和渲染所用的总时间约为: 0.043s。
接下来,我们以循序结构串行运行两个关键点检测模型,检测对象不变。可以看到FPS变为10.8FPS,减小到原来的一半左右。推理总时间为:0.050s ,推理、计算坐标和渲染所用的总时间约为: 0.096s。因为串行运行使得前一个模型必须运行完以后再进行后一个模型推理,因此推理时间进行了累加,使得速度变慢。
4.2 使用Intel 第二代神经计算棒(NCS 2)单线程运行
首先我们先看一下运行单个模型在NCS 2的推理的时间。可以看到其FPS可以达到8.0。而根据输出显示,GPU推理时间约为0.115s, 推理、计算坐标和渲染所用的总时间约为: 0.135s。
同样我们使用NCS 2 串行运行两个人体关键点检测模型。由于是串行运行,因此我们只使用一个神经计算棒,运行结果如下所示。推理时间为0.23s左右,总时长为0.27s左右。NCS 2的推理时间和总时间增加为原来的两倍。对比GPU,推理时间延长,而计算坐标,渲染等工作由cpu执行,因此差别不大。
5 多线程运行推理引擎
5.1 使用Intel 集成GPU 多线程运行
我们使用调用python的threading模块,将运行两个模型的代码分别写入fun1和fun2,定义两个线程分别执行,即可完成推理引擎的多线程运行。
import threading
def fun1():''''''
def fun2():''''''
threads = []
threads.append(threading.Thread(target=fun1))
threads.append(threading.Thread(target=fun2))
if __name__ == '__main__':for t in threads:t.start()
运行结果如下:
运行的FPS约为11.5,相较于串行的结果仅有少许提升。为此,我们查看推理用时和所用的总时长。结果如下
当前线程的名字是: Thread-1
推理时间: 0.025995254516601562 总时间: 0.0967397689819336
当前线程的名字是: Thread-2
vpu2 推理时间: 0.02593088150024414 总时间: 0.07882571220397949
我们发现,每个线程的推理时间与之前运行的单个模型的推理时间相差不大,但是总时间却大大增加。说明在一个线程中,推理完成后并没有立刻执行下面的代码,而是等待其它线程运行,因此造成总时间的延长。
究其原因,主要是python多线程是伪多线程,主要是受限于GIL的存在。GIL(Global Interpreter Lock 全局解释器锁),这是目前占统治地位的python解释器CPython中为了保证数据安全所实现的一种锁。不管进程中有多少线程,只有拿到了GIL锁的线程才可以在CPU上运行,即时是多核处理器。对一个进程而言,不管有多少线程,任一时刻,只会有一个线程在执行。对于CPU密集型的线程,其效率不仅仅不高,反而有可能比较低。
5.2 使用Intel 第二代神经计算棒(NCS 2)多线程运行
由于使用神经计算棒进行并行测试,我们使用两根计算棒分别进行运行两个模型。分别将推理引擎的device设置如下。
from modules.inference_engine_openvino import InferenceEngineOpenVINO
net1 = InferenceEngineOpenVINO(model,device='MYRIAD.2.2-ma2480' )
net2 = InferenceEngineOpenVINO(model,device='MYRIAD.2.3-ma2480' )
测试结果如下所示。FPS达到了4.8左右,相较于串行运行性能有所提升,但是仍未达到单个模型运行的性能,原因同上。
6 使用OpenVINO的异步推理方法
为了提高多个模型的运行速度,克服python 的伪多线程带来的困难,使用推理引擎中异步推理的python api,之前运行的推理引擎使用的都是 ExecutableNetwork 类中的 infer() 方法,infer()方法为阻塞执行,即当前 infer() 语句运行完毕后,才执行下一条语句。因此使用infer()方法执行两个模型的推理是串行的,只有上一个模型运行完毕后,下一个模型才能运行,造成时间的浪费。
根据 Intel 曹慧燕老师的指导,我采用推理引擎的异步推理方法来异步运行两个模型。根据官网的 python api指南,将 ExecutableNetwork 类中的 infer() 方法替换为start_async()方法。重新构造推理引擎如下:
import os
import numpy as np
from openvino.inference_engine import IENetwork, IECoreclass InferenceEngineOpenVINO:def __init__(self, net_model_xml_path, device):self.device = devicenet_model_bin_path = os.path.splitext(net_model_xml_path)[0] + '.bin'self.net = IENetwork(model=net_model_xml_path, weights=net_model_bin_path)required_input_key = {'data'}assert required_input_key == set(self.net.inputs.keys()), \'Demo supports only topologies with the following input key: {}'.format(', '.join(required_input_key))required_output_keys = {'Conv_229', 'Add_151', 'Add_153'}assert required_output_keys.issubset(self.net.outputs.keys()), \'Demo supports only topologies with the following output keys: {}'.format(', '.join(required_output_keys))self.ie = IECore()self.exec_net1 = self.ie.load_network(network=self.net, num_requests=1, device_name='MYRIAD.2.2-ma2480')self.exec_net2 = self.ie.load_network(network=self.net, num_requests=1, device_name='MYRIAD.2.3-ma2480')def infer(self, img1,img2, request_id):input_layer = next(iter(self.net.inputs))n, c, h, w = self.net.inputs[input_layer].shapeif h != img1.shape[0] or w != img1.shape[1]:self.net.reshape({input_layer: (n, c, img1.shape[0], img1.shape[1])})self.exec_net1 = self.ie.load_network(network=self.net, num_requests=1, device_name='MYRIAD.2.2-ma2480')img1 = np.transpose(img1, (2, 0, 1))[None, ]if h != img2.shape[0] or w != img2.shape[1]:self.net.reshape({input_layer: (n, c, img2.shape[0], img2.shape[1])})self.exec_net2 = self.ie.load_network(network=self.net, num_requests=1, device_name='MYRIAD.2.3-ma2480')img2 = np.transpose(img2, (2, 0, 1))[None, ]infer_request_handle1 = self.exec_net1.start_async(request_id=request_id, inputs={'data': img1})infer_request_handle2 = self.exec_net2.start_async(request_id=request_id, inputs={'data': img2})infer_status1 = infer_request_handle1.wait()infer_status2 = infer_request_handle2.wait()inference_result11 = infer_request_handle1.outputs['Conv_229']inference_result21 = infer_request_handle1.outputs['Add_151']inference_result31 = infer_request_handle1.outputs['Add_153']inference_result12 = infer_request_handle2.outputs['Conv_229']inference_result22 = infer_request_handle2.outputs['Add_151']inference_result32 = infer_request_handle2.outputs['Add_153']inference_result_1 = (inference_result11[0],inference_result21[0], inference_result31[0])inference_result_2 = (inference_result12[0],inference_result22[0], inference_result32[0])return inference_result_1,inference_result_2
重新运行程序,得到在两根神经计算帮的结果如下:
可以看到FPS达到了6.3左右。相较于之前单线程、多线程有了充分的提高。之所以小于之前单个模型的8 FPS,主要是由于异步运行要设置一个略高于推理时间的等待时间,防止程序在一次运行未完成时多次调用设备。除了推理以外,后续的关键点计算和渲染也的时间也是需要双倍的,因此其FPS略小于单个模型运行时间。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- SRE是什么?
SRE是什么? SRE(Site Reliability Engineering),站点可靠性工程,起源于2003年。在系统管理员模式下,通常是通过人工操作完成任务,而SRE倾向通过设计、构建自动化工具来取代人工操作。SRE的本质是用软件工程的思维和方法解决复杂的运维问题。 DevOps是在2008年年末流行起来,…...
2024/4/24 10:24:21 - Git原理架构概述
Git是一个开源分布式版本控制系统,可以高速并且有效的处理很小到非常大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开源版本控制软件 什么是版本控制? 版本控制一般是指程序开发过程中的代码版本,配置文件及说明文档等文件修改变更的管理,版…...
2024/5/7 16:44:43 - 小白业余时间整理一些面试题-2
毕业一年后,趁工作闲暇之余整理一些Java面试题,上传到网上纯粹当做笔记,有错欢迎指出 --(2) java基础篇 一、JDK 和 JRE 有什么区别? jdk:java开发工具包,包含jre,jre中包含jvm jre:java运行环境 jvm:jre的一部分,他是整个java实现跨平台的最核心部分,负责解释执行Java字…...
2024/5/8 2:01:00 - 苹果X更换电池-苹果x电池寿命80%要换吗?
手机电池寿命小于80%,是否需要更换电池,这主要取决于用户的使用体验。苹果电池更换。我爱家电维修网告诉你如果感觉还可以,没有明显的使用经验,不一定需要立即更换,可以继续使用。 如果感觉寿命明显下降,并且伴随着电话卡的变化,建议更换新电池,让设备新鲜,可以更好地…...
2024/4/29 4:37:18 - 一对一视频直播APP开发要点
每个时代都有每个时代的印记,季节轮回交替,生命生生不息。科学技术蓬勃发展的今天,你记住了这个时代的什么呢?这是个色彩斑斓的世界,每一刻都值得被记录。 在这场激烈的竞争之中,少不了程序大神的付出,代码的从无到有,从初始到完善,无论是一对一直播还是传统直播模式,…...
2024/5/7 13:39:40 - 在CentOS8下安装使用MySQL8
1、下载安装CentOS81.1 下载搜索下载安装CentOS8(https://www.centos.org/download/)。1.2 安装在虚拟机中选择DVD ISO文件路径,自定义安装,不要缺省安装,选择中文。1.3 更新安装完成后重启,在登录界面用root登录,然后更新系统:[root@localhost~]# dnf upgrade更新完成…...
2024/4/21 23:11:17 - 一个java版本的复杂spark例子
首先说一下这个spark程序的目的。这个程序是要求对网站收到的http请求数据计算一些特征值,要求每10秒钟计算一次最近2小时的数据的特征值。这就需要用到spark的滑动窗口运算了。数据是从topic为app的kafka中读取,计算出来的特征值发往topic为app_FEATURE的kafka中。代码如下:…...
2024/4/24 2:45:31 - Redis复习总结面试资料
Redis复习总结面试资料 文章目录Redis复习总结面试资料概述什么是RedisRedis有哪些优缺点为什么要用 Redis /为什么要用缓存为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快数据类型Redis有哪些数据类型Redis的应用场景持久化什么是Redis持久化?Redis 的持久化机…...
2024/5/8 0:00:00 - SpringBoot之缓存@CachePut的使用
背景: 由于开发过程中总会涉及到一些业务需要实现数据信息的高效响应,而且对内存的要求又不是很大的前提下缓存是比较好的选择。1. SpringBoot为我们提供了一些高速开发的缓存其中@Cache就是比较官方化的,而且是符合JSP107规范。关于具体的缓存介绍请看上篇博客:JSR107缓存…...
2024/5/2 5:54:05 - 面试 | 百度测试开发岗位面试题目回顾
本文为霍格沃兹测试学院学员 JQY 同学面试百度高级测试开发工程师岗位的经历汇总,自带二次元呆萌搞笑风格. 百度测试开发面试题整理 一面题目 1、自我介绍一下2、说一下你们工作中的测试流程3、数据库熟吗?用过哪些数据库?索引会吗?事务了解吗?写一个 SQL 查询语句:给一…...
2024/5/7 19:01:44 - zookeeper复习总结面试资料
zookeeper复习总结面试资料 1. ZooKeeper 是什么? ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分…...
2024/4/21 2:48:15 - .net core 3.1 webapi接口项目框架搭建二:JWT 身份验证
JWT 身份验证引言引用依赖包添加身份认证相关服务到容器中swagger 中配置JWT开启中间件生成Token获取claims中的参数信息接口中添加[Authorize()]jwt 自定义策略 引言 JWT定义与优缺点 引用依赖包Microsoft.AspNetCore.Authentication.JwtBearer System.IdentityModel.Tokens.J…...
2024/4/18 23:27:11 - 基于JavaWeb的SSH的人力资源管理系统(源码+数据库+论文)
人力资源是现代企业发展的重要资源之一,加强人力资源的管理对于提高企业的核心竞争力和促进企业的长远发展有着深刻的意义。传统的人员管理方法在使用上存在着保密性低、模式老化、查询不方便等弊病。随着先进的人力资源管理思想的引进和计算机技术在企业管理领域的应用日益广…...
2024/5/6 2:21:22 - 消息中间件MQ(RabbitMQ)复习总结面试资料
文章目录为什么使用MQ?MQ的优点消息队列有什么优缺点?RabbitMQ有什么优缺点?你们公司生产环境用的是什么消息中间件?Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?MQ 有哪些常见问题?如何解决这些问题?什么是RabbitMQ?rabbitmq 的使用场景RabbitMQ基本概念Rabbit…...
2024/5/7 18:45:07 - Spring Cloud Bus 服务总线,实现全局广播/定点通知
本文目录:写在开头环境说明1.了解 Spring Cloud Bus2.1 Bus 何方神圣 (Bus 是什么)2.2 Bus 原理2.Bus的两种设计思想2.1 触发客户端2.2 触发服务端2.3 如何选型3.环境搭建4.Bus 动态刷新全局广播配置4.1 集群版客户端组建4.2 服务端配置中心/客户端 pom 引入Bus总线依赖4.3 服…...
2024/5/7 7:02:08 - Tomcat复习总结面试资料
Tomcat复习总结面试资料 文章目录Tomcat复习总结面试资料Tomcat是什么?Tomcat的缺省端口是多少,怎么修改tomcat 有哪几种Connector 运行模式(优化)?Tomcat有几种部署方式?tomcat容器是如何创建servlet类实例?用到了什么原理?Tomcat工作模式Tomcat顶层架构Tomcat顶层架构小…...
2024/5/6 1:32:41 - 自动控制之PID原理
自动控制原理 从控制的方式看,自动控制系统有闭环和开环两种。 闭环控制: 闭环控制也就是(负)反馈控制,原理与人和动物的目的性行为相似,系统组成包括传感器(相当于感官),控制装置(相当于脑和神经),执行机构(相当于手腿和肌肉)。传感器检测被控对象的状态信息(输…...
2024/5/8 0:15:05 - 后端面试38讲——数据结构原理(笔记)
数组 (1)连续内存空间 (2)相同数据类型 优点:知道下标可以快速查询内容 链表 (1)内存空间可以不连续 (2)有指向下一个数据元素的地址指针 优点:插入、删除操作简单 Hash表 以K-V方式存储,Hash 表的物理存储其实是一个数组,如果我能够根据 Key 计算出数组下标,那么就…...
2024/4/29 3:22:06 - 1.16亿起拍!或是史上最贵法拍房?
如何捡漏法拍房?如何避坑?如何实现拍到即赚到? 请关注云拍圈! 近日,厦门顶级豪宅——云顶庄园有一套总价1.16亿的别墅爆出即将被拍卖。目前已经吸引了8725人围观,448人设置提醒。 据阿里法拍官网显示,该房源是厦门目前标价最高的70年住宅性质法拍房。 云顶庄园此次爆出的…...
2024/4/25 7:33:56 - 学生个人信息管理系统_c语言课设课程设计
一个基于C语言的学生成绩管理系统,适合大一学生设计C语言课程设计参考之用。 源代码下载链接:https://pan.baidu.com/s/1UsdFE9o_plwNdR8-cQtlfw 提取码:miuz 程序介绍: 一、程序基本介绍:编译器:Dev C++;数据存储方式:记事本二:程序实现的功能 1、个人信息的新增:此…...
2024/4/24 0:18:44
最新文章
- 论文辅助笔记:Tempo之modules/lora.py
1 LoRALayer 基类 2 Linear 2.1 __init__ 2.2 reset_parameter & train 2.3 forward 3 MergeLinear 3.1__init__ enable_lora指定了哪些输出特征使用lora 3.2 reset_parameters & zero_pad & merge_AB 3.3 train & forward...
2024/5/8 2:09:09 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 01背包问题 小明的背包
2.小明的背包1 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> using namespace std; const int N1010;//开始写的105 开小了 样例过了但最后只过了很少一部分 int n,m; int v[N],w[N]; int f[N][N];int main() {cin>>n>>m;for(int i1;i<n;i){cin>&…...
2024/5/5 8:41:06 - PHP获取亚马逊商品详情api接口
亚马逊提供了一个名为Product Advertising API(PA API)的接口,可以用来获取亚马逊商品的详细信息。 要使用PA API,您需要进行以下几个步骤: 注册为亚马逊合作伙伴,并创建一个亚马逊开发人员账户。创建一个…...
2024/5/5 12:13:00 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/7 19:05:20 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/7 22:31:36 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/8 1:37:40 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/7 14:19:30 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/8 1:37:39 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/7 16:57:02 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/7 14:58:59 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/7 1:54:46 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/7 21:15:55 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/8 1:37:35 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/7 16:05:05 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/7 16:04:58 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/8 1:37:32 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/7 16:05:05 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/8 1:37:31 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/8 1:37:31 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/7 11:08:22 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/7 7:26:29 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/8 1:37:29 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/7 17:09:45 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57