当前位置: 首页 > news >正文

VGGNet:深度学习中的卷积神经网络经典之作

目录

​编辑

引言

VGGNet的历史背景

VGGNet的特点

1. 深度网络结构

2. 小卷积核的使用

3. 多尺度训练

4. 参数量的优化

5. 去除局部响应归一化

6. 优秀的特征提取能力

VGGNet的应用案例

VGGNet的代码复现

代码解析

结论


引言

在深度学习的浪潮中,卷积神经网络(CNN)以其在图像识别和处理领域的卓越性能而著称。VGGNet,作为一种经典的CNN架构,以其简洁的设计和卓越的性能成为了深度学习领域的一个里程碑。本文将深入探讨VGGNet的特点、历史背景、应用案例,并提供一个基于PyTorch的代码复现,以便读者能够更好地理解和应用这一网络。

VGGNet的历史背景

VGGNet是由牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发的深度卷积神经网络。它在2014年的ILSVRC竞赛中获得了第二名,仅次于GoogLeNet。VGGNet的论文《Very Deep Convolutional Networks for Large-Scale Image Recognition》详细描述了这一网络的设计和实验结果。这一成就标志着VGGNet在深度学习和计算机视觉领域的重要地位,也为后续的网络设计提供了宝贵的参考。

VGGNet的特点

VGGNet以其简洁而高效的架构设计、优秀的性能表现和广泛的应用场景,成为了深度学习领域的一个重要代表。以下是VGGNet的几个显著特点:

1. 深度网络结构

VGGNet包含多个级别的网络,深度从11层到19层不等。它通过反复堆叠3x3的小型卷积核和2x2的最大池化层,成功地构筑了16~19层深度卷积神经网络。这种深度结构使得VGGNet能够捕捉到更加精细的特征,从而在图像识别任务中取得了优异的性能。深度网络结构的设计哲学在于通过增加网络的层数来提高模型的学习能力,使其能够学习到更加复杂和抽象的特征表示。

2. 小卷积核的使用

VGGNet全部使用3x3的小卷积核,这减少了参数数量,同时通过增加网络深度来保持或提升性能。这种设计不仅简化了网络结构,还使得网络更加易于训练和优化。此外,小卷积核的使用也使得网络能够更好地捕捉局部特征,提高了特征提取的精度。小卷积核的一个关键优势在于它们能够减少计算量,同时通过堆叠多个小卷积核来增加感受野,从而实现对更大范围特征的捕捉。

3. 多尺度训练

VGGNet在训练时采用了多尺度训练策略,通过随机裁剪和水平翻转来增强数据,这有助于模型的泛化能力。这种策略使得VGGNet能够适应不同尺寸的输入图像,提高了模型的鲁棒性和适应性。多尺度训练是一种有效的数据增强技术,它通过模拟图像在现实世界中可能出现的各种尺寸和方向,来提高模型对不同输入的适应能力。

4. 参数量的优化

VGGNet的参数量主要消耗在全连接层上,不过训练比较耗时的依然是卷积层。VGGNet通过优化网络结构和参数量,使得网络在保持高性能的同时,也具有较高的计算效率。参数量的优化是一个重要的研究方向,因为它直接影响到模型的训练效率和推理速度。VGGNet通过减少不必要的参数,提高了模型的效率,同时保持了模型的性能。

5. 去除局部响应归一化

VGGNet不使用局部响应归一化(LRN),这种标准化并不能在ILSVRC数据集上提升性能,却导致更多的内存消耗和计算时间。这一发现对于后续的网络设计具有重要的启示作用,即在设计网络时需要权衡各种技术的使用,以实现最佳的性能。局部响应归一化是一种早期用于提高CNN性能的技术,但VGGNet的实验结果表明,在某些情况下,这种技术可能并不总是有益的。

6. 优秀的特征提取能力

VGGNet主要用来进行提取图像特征,其特征图更宽,更加适合于大的数据集,能够解决1000类图像分类和定位问题。这种强大的特征提取能力使得VGGNet在多个领域都有广泛的应用,如图像分类、目标检测、语义分割等。VGGNet的特征提取能力是其最显著的优势之一,它能够从图像中提取出丰富的特征信息,为各种下游任务提供了强大的支持。

VGGNet的应用案例

VGGNet因其强大的特征提取能力,在多个领域都有广泛的应用。例如,在图像分类任务中,VGGNet能够识别和分类上千种不同的图像类别。在目标检测领域,VGGNet可以作为特征提取器,帮助定位和识别图像中的目标。此外,VGGNet也被用于语义分割任务,能够对图像中的每个像素进行分类,实现对图像内容的精细理解。这些应用案例展示了VGGNet在实际问题中的有效性和灵活性。VGGNet的应用不仅限于这些领域,它还被用于许多其他任务,如视频识别、人脸识别、医学图像分析等,证明了其广泛的适用性和强大的性能。

VGGNet的代码复现

以下是使用PyTorch框架实现VGGNet的完整代码示例。该代码展示了如何构建和训练VGGNet模型,包括数据加载、模型定义、训练过程和测试过程。

import torch
import torch.nn as nn
import torchvision.transforms as transforms
from torchvision import datasets# 定义VGG网络结构
class VGG(nn.Module):def __init__(self, features, num_classes=1000, init_weights=True):super(VGG, self).__init__()self.features = featuresself.classifier = nn.Sequential(nn.Linear(512 * 7 * 7, 4096),nn.ReLU(True),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(True),nn.Dropout(),nn.Linear(4096, num_classes),)if init_weights:self._initialize_weights()def forward(self, x):x = self.features(x)x = torch.flatten(x, 1)x = self.classifier(x)return xdef _initialize_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')if m.bias is not None:nn.init.constant_(m.bias, 0)elif isinstance(m, nn.BatchNorm2d):nn.init.constant_(m.weight, 1)nn.init.constant_(m.bias, 0)elif isinstance(m, nn.Linear):nn.init.normal_(m.weight, 0, 0.01)nn.init.constant_(m.bias, 0)# 创建VGG网络的层
def make_layers(cfg, batch_norm=False):layers = []in_channels = 3for v in cfg:if v == 'M':layers += [nn.MaxPool2d(kernel_size=2, stride=2)]else:conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1)if batch_norm:layers += [conv2d, nn.BatchNorm2d(v), nn.ReLU(inplace=True)]else:layers += [conv2d, nn.ReLU(inplace=True)]in_channels = vreturn nn.Sequential(*layers)# VGG网络配置
cfgs = {'VGG11': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],'VGG13': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M'],'VGG16': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M'],'VGG19': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 512, 'M'],
}# 创建VGG模型
def vgg(model_name="vgg16", **kwargs):assert model_name in cfgs, "Warning: model number {} not in cfgs dict!".format(model_name)cfg = cfgs[model_name]model = VGG(make_layers(cfg), **kwargs)return model# 数据加载和预处理
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])# 训练和测试数据加载
trainset = datasets.CIFAR10(root='./data', train=True,download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64,shuffle=True, num_workers=2)testset = datasets.CIFAR10(root='./data', train=False,download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=64,shuffle=False, num_workers=2)# 模型初始化和训练
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
net = vgg("vgg16").to(device)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.001, momentum=0.9)# 训练过程
for epoch in range(10):running_loss = 0.0for i, data in enumerate(trainloader, 0):inputs, labels = data[0].to(device), data[1].to(device)optimizer.zero_grad()  # 清零梯度outputs = net(inputs)  # 前向传播loss = criterion(outputs, labels)  # 计算损失loss.backward()  # 反向传播optimizer.step()  # 更新参数running_loss += loss.item()if i % 100 == 99:    # 每100个batch打印一次print('[%d, %5d] loss: %.3f' %(epoch + 1, i + 1, running_loss / 100))running_loss = 0.0print('Finished Training')# 测试模型
correct = 0
total = 0
with torch.no_grad():for data in testloader:images, labels = data[0].to(device), data[1].to(device)outputs = net(images)_, predicted = torch.max(outputs.data, 1)  # 获取预测结果total += labels.size(0)correct += (predicted == labels).sum().item()  # 统计正确预测的数量print('Accuracy of the network on the test images: %d %%' % (100 * correct / total))

代码解析

  1. 模型定义:代码首先定义了VGG网络的结构,包括卷积层、池化层和全连接层。VGG类负责构建整个网络,并在初始化时设置权重。
  2. 层的构建make_layers函数根据给定的配置创建卷积层和池化层,支持批量归一化。
  3. 数据预处理:使用torchvision.transforms进行数据预处理,包括将图像转换为张量和标准化。
  4. 数据加载:使用torch.utils.data.DataLoader加载CIFAR-10数据集,分为训练集和测试集。
  5. 训练过程:在训练过程中,模型进行前向传播、计算损失、反向传播和参数更新。每经过100个batch,打印一次当前的损失值。
  6. 测试过程:在测试阶段,模型对测试集进行预测,并计算准确率。

结论

VGGNet以其简洁和深度的特点,在图像识别领域取得了显著的成就。尽管随着技术的发展,出现了更多先进的网络结构,但VGGNet仍然是深度学习领域的一个重要里程碑,为后续的研究提供了宝贵的经验和启示。通过本文的介绍和代码复现,希望能帮助读者更好地理解和应用VGGNet。

VGGNet的成功不仅在于其在ILSVRC竞赛中的表现,更在于其对深度学习社区的深远影响。它启发了无数研究者和工程师探索更深、更有效的网络结构。VGGNet的设计理念和实现方法为后续的卷积神经网络架构奠定了基础,推动了计算机视觉领域的快速发展。

相关文章:

VGGNet:深度学习中的卷积神经网络经典之作

目录 ​编辑 引言 VGGNet的历史背景 VGGNet的特点 1. 深度网络结构 2. 小卷积核的使用 3. 多尺度训练 4. 参数量的优化 5. 去除局部响应归一化 6. 优秀的特征提取能力 VGGNet的应用案例 VGGNet的代码复现 代码解析 结论 引言 在深度学习的浪潮中,卷积…...

opencv所有常见函数

一、opencv图像操作 二、opencv图像的数值运算 三、opencv图像的放射变换 四、opencv空间域图像滤波 五、图像灰度化与直方图 六、形态学图像处理 七、阈值处理与边缘检测 八、轮廓和模式匹配...

Shell语言基础语法(3)

目录 简介 一、流程控制 1、if 语句 2、case 选择 3、while 循环 4、for 循环 5、扩展使用select 二、函数 1、函数的定义 2、函数的调用 3、函数的传参 4、函数的返回值 5、局部变量 6、全局变量 总结 简介 Shell 脚本是一种强大的工具,广泛用于 Lin…...

Linux CentOS 9搭建Hadoop3集群

1. 引言 本教程旨在介绍在Linux上安装Hadoop 2. 前提条件 2.1 安装JDK 安装Hadoop,必须首先安装JDK,并配置环境变量(此处不做详细描述) Jdk官网(https://www.oracle.com/java/technologies/javase/javase8u211-later-archive…...

加速科技精彩亮相ICCAD 2024

12月11日—12日 ,中国集成电路设计业的年度盛会——ICCAD 2024在上海世博馆隆重举行。本次活动以“智慧上海,芯动世界”为主旨,汇聚了众多业界精英,共同探讨集成电路产业的未来。作为半导体测试行业领军企业,加速科技携…...

canvas(填充描边,绘制矩形、路径、文本、图像,变换,阴影,渐变等)

一、 基本的画布功能 创建 <canvas> 元素时至少要设置其 width 和 height 属性&#xff0c;这样才能告诉浏览器在多大面积上绘 图。出现在开始和结束标签之间的内容是后备数据&#xff0c;会在浏览器不支持 <canvas> 元素时显示。比如&#xff1a; <canv…...

STM8单片机学习笔记·GPIO的片上外设寄存器

目录 前言 IC基本定义 三极管基础知识 单片机引脚电路作用 STM8GPIO工作模式 GPIO外设寄存器 寄存器含义用法 CR1&#xff1a;Control Register 1 CR2&#xff1a;Control Register 2 ODR&#xff1a;Output Data Register IDR&#xff1a;Input Data Register 赋值…...

2-2-18-16 QNX系统架构之自适应分区

阅读前言 本文以QNX系统官方的文档英文原版资料为参考&#xff0c;翻译和逐句校对后&#xff0c;对QNX操作系统的相关概念进行了深度整理&#xff0c;旨在帮助想要了解QNX的读者及开发者可以快速阅读&#xff0c;而不必查看晦涩难懂的英文原文&#xff0c;这些文章将会作为一个…...

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用&#xff08;一&#xff09;精准定位元素&#xff08;二&#xff09;应对动态网页&#xff08;三&#xff09;数据结构化提取 二、Xpath 的常用方法&#xff08;一&#xff09;节点选取&#xff08;二&#xff09;谓词筛选&#xff0…...

Rustdesk 安装客户端以及自己搭建服务器跑通参考资料

Rustdesk 安装客户端以及自己搭建服务器跑通参考资料 下载客户端&#xff1a; rustdesk客户端-github下载地址 windows正常安装就行了&#xff0c;ubuntu安装参考下面&#xff1a; ubuntu安装rustdesk客户端 在centos中利用docker安装rustdesk-server&#xff0c;先进行cento…...

源码编译jdk7 超详细教程 openjdk7

关于源代码 当前的openJDK的源代码已经被发布到了github上了&#xff0c;所以我们可以直接从github上下载到。 OpenJDK7u源码托管地址&#xff1a;https://github.com/openjdk/jdk7u 带后缀U的地址&#xff0c;或者发行的jdk包&#xff0c;表示当前版本下的持续跟新版。而他…...

如何实现日期选择窗口

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TimePicker Widget相关的内容,本章回中将介绍DatePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的DatePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为日期,它…...

Spring Security 6 系列之一 - 开篇入门

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级为6.3.0&#xff0c;关键是其风…...

Spring Cloud概述

1. 认识微服务 1.1 单体架构 很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项⽬, 这就是单体架构. 业务的所有功能实现都打包在⼀个war包或者Jar包中, 这种⽅式就称为单体架构. 举个例子: 电商系统包括: ⽤⼾管理, 商品管理, 订单管理, ⽀付管理, 库存…...

mvc如何给action传递参数

步骤(常规方法) 新建一个控制器--LarsController.cs using Microsoft.AspNetCore.Mvc; namespace Blog.Controller; public class LarsController:Controller -----继承 {public IActionResult Index(){return View();} }获取id // program.cs中默认值是idpublic IAction…...

【银河麒麟高级服务器操作系统】有关dd及cp测试差异的现象分析详解

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn dd现象 使用银河麒麟高级服务器操作系统执行两次…...

视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况

矿山作业环境复杂多变&#xff0c;安全隐患层出不穷。其中&#xff0c;矿工未佩戴安全帽这一行为&#xff0c;看似微不足道&#xff0c;实则潜藏着巨大的安全风险。一旦发生事故&#xff0c;未佩戴安全帽的矿工将极易受到重创&#xff0c;甚至危及生命。因此&#xff0c;确保每…...

整数的四舍五入----->记录每一点进步

我们知道整数类型的变量对小数部分都不感冒&#xff0c;只要是小数都会舍去&#xff0c;都让他舍去了我们还讲个P&#xff0c;所以接下来就是告诉你怎么不让他全都舍去。 先来试想一下如果这个数字是3.4&#xff0c;存到整数型变量里面是不是直接变成了3&#xff0c;那么我要是…...

Linux栈帧

相关寄存器&指令 寄存器 rax&#xff08;accumulator&#xff09;&#xff1a;return value rbx&#xff08;base&#xff09; rcx&#xff08;count&#xff09;&#xff1a;4st argument rdx&#xff08;data&#xff09;&#xff1a;3st argument rsi&#xff08;sour…...

【代码随想录day59】【C++复健】 47. 参加科学大会(dijkstra(堆优化版)精讲 );94. 城市间货物运输 I

前几天有些事情耽搁了&#xff0c;不过好在图论我完全不会&#xff0c;所以偷看代码思路也没有任何的心理负担&#xff0c;做起来反而相对独立思考更快一点点。 47. 参加科学大会&#xff08;dijkstra&#xff08;堆优化版&#xff09;精讲 &#xff09; 本来一开始以为这个堆…...

【网络安全】WIFI WPA/WPA2协议:深入解析与实践

WIFI WPA/WPA2协议&#xff1a;深入解析与实践 1. WPA/WPA2 协议 1.1 监听 Wi-Fi 流量 解析 WPA/WPA2 的第一步是监听 Wi-Fi 流量&#xff0c;捕获设备与接入点之间的 4 次握手数据。然而&#xff0c;设备通常不会频繁连接或重新连接&#xff0c;为了加速过程&#xff0c;攻…...

穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集

题目&#xff1a; 两个方法本质就是决策树的画法不同 方法一解析&#xff1a; 代码&#xff1a; class Solution {private List<List<Integer>> ret;//返回结果private List<Integer> path;//记录路径&#xff0c;注意返回现场public List<List<Int…...

试题转excel;word转excel;大风车excel

一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道题几乎需要一个下午的时间 关键这些事&#xff0c;枯燥无聊费眼睛&#xff0c;实在是看起来就很蠢的工作 就想着做一个工具&#xff0c;可以自动处理…...

Unity NTPComponent应用, 实现一个无后端高效获取网络时间的组件

无后端高效获取网络时间的组件 废话不多说&#xff0c;直接上源码m_NowSerivceTime 一个基于你发行游戏地区的时间偏移&#xff0c; 比如北京时区就是 8, 巴西就是-3&#xff0c;美国就是-5using Newtonsoft.Json; 如果这里报错&#xff0c; 就说明项目没有 NewtonsoftJson插件…...

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中&#xff0c;智能复合机器人以其卓越的性能和高度智能化特点&#xff0c;正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力&#xff0c;能够在复杂的生产环境中自主导航、精确操作&#xff0c;避免了人为因素可能导致…...

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java package com.controller;import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map;import javax.s…...

30. Three.js案例-绘制并渲染圆弧

30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&#xff…...

类和对象(2)

大家好&#xff0c;今天我们继续来学习类和对象的知识&#xff0c;那么今天我们来看看类的概念和类的定义相关的知识&#xff0c;那么话不多说&#xff0c;我们直接开始。 2.类定义和使用 面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机&#xff0c;但是…...

240004基于ssm+maven+mysql+Java的房屋租赁系统的设计与实现

基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化&#xff0c;包括新增了注册功能&#xff0c;房屋模糊查询功能&#xff0c;管理员和用户信息管理等功能&#xff0c;以及对网站界面进行了优…...

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别

在为您的应用程序选择通信协议时&#xff0c;有很多不同的选择。 本文将了解四种流行的解决方案&#xff1a;HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进&#xff1a;变得更快、更方便、更可靠&…...

FlowNex 中的两相建模基础知识

通过 FlowNex 中的两相建模解开高效流体动力学的秘密&#xff0c;彻底改变制造业。 挑战 两相流是指两个不同相&#xff08;通常是液体和气体&#xff09;同时流动&#xff0c;它们具有不同的特性和行为。在制造业中&#xff0c;了解两相流对于优化热交换器、化学反应器和流体…...

Mysql笔记

windows安装记录Windows中Mysql安装-CSDN博客 用到的库 通过网盘分享的文件&#xff1a;atguigudb.sql 链接: https://pan.baidu.com/s/1YfC20c2vK9odn-XRJJwUJw 提取码: utk7 --来自百度网盘超级会员v5的分享 Mysql4中表关联关系 1.1对1,比较少用,因为完全可以一张表,当有…...

docker拉取rabbitmq镜像安装延迟队列插件

我这里使用的是rabbitmq:3.12.0-management版本作为示例 1.拉取rabbitmq镜像 docker pull rabbitmq:3.12.0-management 2.启动rabbitmq docker run -d --namerabbitmq --restartalways -p 5672:5672 -p 15672:15672 rabbitmq:3.12.0-management 在咱们拉取时如果出现连接超时可…...

创建一个谷歌插件项目dome上线流程+源码

创建一个简单的 Chrome 扩展程序&#xff0c;其主要功能是 JSON 格式化。用户可以通过点击扩展图标打开一个弹出窗口&#xff0c;在弹出窗口中输入或粘贴 JSON 数据&#xff0c;然后点击格式化按钮来格式化 JSON 数据 谷歌插件&#xff08;即 Chrome 扩展程序&#xff09;主要设…...

举例说明如何在linux下检测摄像头设备具备的功能

假设摄像头设备文件为/dev/video1 &#xff0c;下面是一个专门用于检测 /dev/video1 设备能力的简化程序。这个程序将打印出设备的所有能力、格式和其他相关信息&#xff0c;以帮助你了解设备支持的功能。 检测 /dev/video1 设备能力的程序 #include <fcntl.h> #includ…...

win10配置子系统Ubuntu子系统(无需通过Windows应用市场)实际操作记录

win10配置子系统Ubuntu子系统&#xff08;无需通过Windows应用市场&#xff09;实际操作记录 参考教程 : win10配置子系统Ubuntu子系统&#xff08;无需通过Windows应用市场&#xff09; - 一佳一 - 博客园 开启虚拟机服务的 以管理员方式运行PowerShell运行命令。 &#xf…...

东北大学《2024年839自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《东北大学839自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…...

nginx负载均衡配置

目录 一、简介 二、nginx下载 二、nginx配置 四、注意点 (1)/api与/api/的区别 (2)http://gatewayserver与http://gatewayserver/的区别 一、简介 Nginx&#xff08;发音为 "engine-x"&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMA…...

【教学类-83-02】20241214立体书三角嘴2.0——青蛙(扁菱形嘴)

背景需求&#xff1a; 制作小鸡立体贺卡三角嘴&#xff0c;它的嘴是正菱形&#xff08;四条边长度相等&#xff0c;类似正方形&#xff09; 【教学类-83-01】20241215立体书三角嘴1.0——小鸡&#xff08;正菱形嘴&#xff09;-CSDN博客文章浏览阅读744次&#xff0c;点赞22次…...

vscode设置终端代理

转载请标明出处&#xff1a;小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…...

【C++】函数计算题解论

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;思路解析3.1 函数的递归定义3.2 边界条件控制3.3 记忆化搜索 &#x1f4af;C实现代码&#x1f4af;添加解释&#x1f4af;小结 &#x1f4af;前言 在…...

Redis篇-21--运维篇3-集群(分片,水平扩展,高可用,集群配置案例,扩展哨兵案例)

1、概述 Redis集群&#xff08;Cluster&#xff09;通过分片&#xff08;sharding&#xff09;实现了水平扩展&#xff0c;允许数据分布在多个节点上&#xff0c;从而提升性能和存储容量。 在Redis集群中&#xff0c;数据被分割成16384个哈希槽&#xff08;hash slots&#x…...

Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材

注明&#xff1a;网络素材&#xff0c;仅供学习使用&#xff01; https://download.csdn.net/download/elineSea/90017291...

深入理解addEventListener中的第二个参数:listener

起因 首先&#xff0c;之前留给我们的一点东西&#xff0c;js的深入内容关键在addEventListener&#xff0c;这个函数中的参数&#xff0c;它们三个参数&#xff0c;分别为type、listener、options&#xff0c;当然在这里还有一些小的问题&#xff0c;比如mdn文档中它介绍到了另…...

数据库镜像(Database Mirroring):高可用性与灾难恢复技术

一、引言 在现代信息系统中&#xff0c;数据的可用性和完整性至关重要&#xff0c;尤其是对金融、电商、医疗等高并发和高可靠性要求的行业。数据库镜像&#xff08;Database Mirroring&#xff09; 作为一种高可用性与灾难恢复技术&#xff0c;通过将主数据库的数据实时复制到…...

【Qt】按钮类控件:QPushButton、QRadioButton、QCheckBox、ToolButton

目录 QPushButton 例子&#xff1a; QRadioButton 例子&#xff1a; 按钮的常见信号函数 单选按钮分组 例子&#xff1a; QCheckButton 例子&#xff1a; QToolButton QWidget的常见属性及其功能对于它的派生类控件都是有效的(也就是Qt中的各种控件)&#xff0c;包括…...

day-21 内核链表以及栈

1.昨日作业 1.删除指定节点 找到删除就完事了&#xff0c;双向可以停在删除处。 /***************************** 功能&#xff1a;删除指定结点&#xff08;通过姓名&#xff09;* 参数&#xff1a;phead&#xff1b;oldname; * 返回&#xff1a;成功0&#xff0c;失-1&…...

深度与视差的关系及其转换

深度与视差的关系及其转换 在计算机视觉和立体视觉中&#xff0c;深度和视差是两个重要的概念。理解这两者之间的关系对于实现立体图像处理、三维重建以及深度估计至关重要。在这篇博客中&#xff0c;我们将深入探讨深度和视差的概念&#xff0c;并介绍它们之间的转换关系。 …...

Unity全局光照详解

之前就学过但是太久没用又忘了&#xff0c;因此用最简洁易懂的语言做个记录。 全局光照分为两个系统&#xff0c;分别是实时光照和混合光照。&#xff08;点击window/Rendering/Lighing打开此面板&#xff09; 其中全局光照对于我来说都是新技术了&#xff0c;上一次学…...