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

TransVG 代码配置及一些小细节

TransVG代码配置

  1. File “/home/wyq/TransVG/utils/misc.py”, line 22, in <module>
    from torchvision.ops import _new_empty_tensor
    ImportError: cannot import name ‘_new_empty_tensor’

    if float(torchvision.__version__[:3]) &lt; 0.7: # torchvision.__version__[:3]=0.1from torchvision.ops import _new_empty_tensorfrom torchvision.ops.misc import _output_size
    

    解决:注释掉这一部分代码

  2. 计算参数量

    n_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)
    
  3. dataloader

    m = re.match(r"^(.*) \|\|\| (.*)$", line)
    text_a = m.group(1)
    text_b = m.group(2)
    
  4. DIOR_RSVG(2022)构造在TransVG之上(2021)

  5. numpy.array() 函数期望其参数是一个序列(如列表、元组等),或者是一个单独的数组式对象。所以box = np.array(x1, y1,x2, y2, dtype=np.float32)不对

  6. unbind() 是 PyTorch 张量(torch.Tensor)的一个方法,用于移除最后一个维度的尺寸并返回一个新的张量列表,其中包含了沿着该维度解包的所有元素

  7. missing_keys, unexpected_keys = model_without_ddp.visumodel.load_state_dict(checkpoint['model'], strict=False)

    • 将一个检查点(checkpoint)中的模型状态字典(state dict)加载到一个没有分布式数据并行(DDP)封装的模型(model_without_ddp)的 visumodel属性上
    • missing_keys:这些是检查点中存在但模型状态字典中不存在的键。这通常发生在检查点包含了一些模型当前版本不再需要的额外权重(例如,由于模型架构的更改)。
    • unexpected_keys:这些是模型状态字典中存在但检查点中不存在的键。这通常发生在模型包含了一些新的权重,而这些权重在检查点中没有对应的值(例如,由于模型架构的扩展)。
  8. torch.tensor(images) & torch.stack(images)

    • 当 images 是 NumPy 数组(ndarray)的列表时,torch.tensor(images) 会创建一个新的 PyTorch 张量,其形状为 (batch_size, …),其中 batch_size 是列表中数组的数量。
    • 当 images 是 PyTorch 张量(tensor)的列表时,更推荐使用 torch.stack(images) 而不是 torch.tensor(images),以确保张量沿着一个新的维度被正确堆叠。
  9. 重定向:2>&1 | tee ./models/refcoco/output

    • 2>&1:这是一个重定向操作,它将标准错误(stderr,文件描述符为 2)重定向到标准输出(stdout,文件描述符为 1)。这通常用于将错误消息和正常输出一起发送到同一个地方。
    • |:这是管道符号,它将一个命令的输出作为另一个命令的输入。
    • tee:tee 命令从标准输入读取数据,并将其内容写入一个或多个文件,同时还将数据复制到标准输出。
  10. 报错:

    Traceback (most recent call last):File "train.py", line 15, in <module>import datasetsFile "/home/wyq/TransVG/datasets/__init__.py", line 8, in <module>from .DIOR_data_loader import RSVGDatasetFile "/home/wyq/TransVG/datasets/DIOR_data_loader.py", line 16, in <module>import cv2
    ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found
    (required by /root/anaconda3/envs/py36/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so)
    

    解决:解决问题链接

    strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX # 查看当前有哪些版本
    sudo find / -name "libstdc++.so.6*" #查看其它的版本,选择合适版本进行替换# strings 命令主要用于提取文件中的可打印字符串,
    # 而 GLIBCXX 通常是与 GCC 的标准 C++ 库(libstdc++)相关的版本标识符
    strings  /root/anaconda3/envs/py36/lib/libstdc++.so.6.0.33 | grep GLIBCXX # 查看新版本是否有需要的文件
    cp  /root/anaconda3/envs/py36/lib/libstdc++.so.6.0.33 /usr/lib/x86_64-linux-gnu/ # 复制新版本
    rm  /usr/lib/x86_64-linux-gnu/libstdc++.so.6  # 删除旧版本
    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #建立新连接
    # 命令 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 是在
    # Linux 系统中创建一个符号链接(也称为软链接)。这个命令的目的是将 libstdc++.so.6.0.33 这个具体的库文件链接
    # 到一个更通用的名称 libstdc++.so.6,这样其他程序或库在请求 libstdc++.so.6 时,
    # 实际上会加载到 libstdc++.so.6.0.33    -s:这个选项告诉 ln 命令创建一个符号链接,而不是硬链接
    
  11. 开始时结果很不好,通过调整学习率(变为之前的1/8)提高了效果。原因:之前采用的是8卡训练,现在是单卡训练,所以考虑学习率应该降低为原来的1/8

  12. GIOU IoU、GIoU、DIoU、CIoU、EIoU 5大评价指标
    在这里插入图片描述

    def generalized_box_iou(boxes1, boxes2):"""Generalized IoU from https://giou.stanford.edu/The boxes should be in [x0, y0, x1, y1] formatReturns a [N, M] pairwise matrix, where N = len(boxes1)and M = len(boxes2)"""# degenerate boxes gives inf / nan results# so do an early checkassert (boxes1[:, 2:] >= boxes1[:, :2]).all()assert (boxes2[:, 2:] >= boxes2[:, :2]).all()iou, union = box_iou(boxes1, boxes2)lt = torch.min(boxes1[:, None, :2], boxes2[:, :2])rb = torch.max(boxes1[:, None, 2:], boxes2[:, 2:])wh = (rb - lt).clamp(min=0)  # [N,M,2]area = wh[:, :, 0] * wh[:, :, 1]return iou - (area - union) / area
    
  13. 正弦位置编码 Transformer架构:位置编码(sin/cos编码) 正弦、余弦三角函数位置编码讲解、代码实现
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  14. bert处理文本的结果

    tokens,#  分词结果
    input_ids, # 分词转换成词向量
    input_mask, # 输入向量的掩码,1表示该位置有输入,0表示该位置没有输入
    input_type_ids # 输入向量的类型,0表示text_a,1表示text_b
    
  15. TransVG (1+L+N)xBxC

    class TransVG(nn.Module):def __init__(self, args):super(TransVG, self).__init__()hidden_dim = args.vl_hidden_dimdivisor = 16 if args.dilation else 32self.num_visu_token = int((args.imsize / divisor) ** 2)self.num_text_token = args.max_query_lenself.visumodel = build_detr(args)self.textmodel = build_bert(args)num_total = self.num_visu_token + self.num_text_token + 1self.vl_pos_embed = nn.Embedding(num_total, hidden_dim)self.reg_token = nn.Embedding(1, hidden_dim)self.visu_proj = nn.Linear(self.visumodel.num_channels, hidden_dim)self.text_proj = nn.Linear(self.textmodel.num_channels, hidden_dim)self.vl_transformer = build_vl_transformer(args)self.bbox_embed = MLP(hidden_dim, hidden_dim, 4, 3)def forward(self, img_data, text_data):bs = img_data.tensors.shape[0]# visual backbonevisu_mask, visu_src = self.visumodel(img_data) visu_src = self.visu_proj(visu_src) # (N*B)xC# language berttext_fea = self.textmodel(text_data)text_src, text_mask = text_fea.decompose()assert text_mask is not Nonetext_src = self.text_proj(text_src)# permute BxLenxC to LenxBxCtext_src = text_src.permute(1, 0, 2)text_mask = text_mask.flatten(1)# target regression tokentgt_src = self.reg_token.weight.unsqueeze(1).repeat(1, bs, 1)tgt_mask = torch.zeros((bs, 1)).to(tgt_src.device).to(torch.bool)vl_src = torch.cat([tgt_src, text_src, visu_src], dim=0)vl_mask = torch.cat([tgt_mask, text_mask, visu_mask], dim=1)vl_pos = self.vl_pos_embed.weight.unsqueeze(1).repeat(1, bs, 1)vg_hs = self.vl_transformer(vl_src, vl_mask, vl_pos) # (1+L+N)xBxCvg_hs = vg_hs[0]pred_box = self.bbox_embed(vg_hs).sigmoid()return pred_box
    
  16. nn.Embedding参数:num_embeddings:表示词汇表或者类别集合的大小,也就是总共有多少个不同的类别需要进行嵌入操作 (例如上面词汇表中有 5 个单词,那么 num_embeddings 就设为 5)。embedding_dim:指定每个嵌入向量的维度。比如想把每个单词映射成维度为 3 的向量,那么 embedding_dim 就设为 3。

    import torch
    import torch.nn as nnembedding_layer = nn.Embedding(num_embeddings=5, embedding_dim=3)
    
  17. MLP self.layers= nn.ModuleList(nn.Linear(n, k) for n, k in zip([input_dim] + h, h + [output_dim]))

    class MLP(nn.Module):""" Very simple multi-layer perceptron (also called FFN)"""def __init__(self, input_dim, hidden_dim, output_dim, num_layers):super().__init__()self.num_layers = num_layersh = [hidden_dim] * (num_layers - 1)self.layers = nn.ModuleList(nn.Linear(n, k) for n, k in zip([input_dim] + h, h + [output_dim]))def forward(self, x):for i, layer in enumerate(self.layers):x = F.relu(layer(x)) if i < self.num_layers - 1 else layer(x)return x
    
  18. DETR

    class DETR(nn.Module):""" This is the DETR module that performs object detection """def __init__(self, backbone, transformer, num_queries, train_backbone, train_transformer, aux_loss=False):""" Initializes the model.Parameters:backbone: torch module of the backbone to be used. See backbone.pytransformer: torch module of the transformer architecture. See transformer.pynum_classes: number of object classesnum_queries: number of object queries, ie detection slot. This is the maximal number of objectsDETR can detect in a single image. For COCO, we recommend 100 queries.aux_loss: True if auxiliary decoding losses (loss at each decoder layer) are to be used."""super().__init__()self.num_queries = num_queriesself.transformer = transformerself.backbone = backboneif self.transformer is not None:hidden_dim = transformer.d_modelself.input_proj = nn.Conv2d(backbone.num_channels, hidden_dim, kernel_size=1)else:hidden_dim = backbone.num_channelsif not train_backbone:for p in self.backbone.parameters():p.requires_grad_(False)if self.transformer is not None and not train_transformer:for m in [self.transformer, self.input_proj]:for p in m.parameters():p.requires_grad_(False)self.num_channels = hidden_dimdef forward(self, samples: NestedTensor):"""The forward expects a NestedTensor, which consists of:- samples.tensor: batched images, of shape [batch_size x 3 x H x W]- samples.mask: a binary mask of shape [batch_size x H x W], containing 1 on padded pixelsIt returns a dict with the following elements:- "pred_logits": the classification logits (including no-object) for all queries.Shape= [batch_size x num_queries x (num_classes + 1)]- "pred_boxes": The normalized boxes coordinates for all queries, represented as(center_x, center_y, height, width). These values are normalized in [0, 1],relative to the size of each individual image (disregarding possible padding).See PostProcess for information on how to retrieve the unnormalized bounding box.- "aux_outputs": Optional, only returned when auxilary losses are activated. It is a list ofdictionnaries containing the two above keys for each decoder layer."""if isinstance(samples, (list, torch.Tensor)):samples = nested_tensor_from_tensor_list(samples)features, pos = self.backbone(samples)src, mask = features[-1].decompose()assert mask is not Noneif self.transformer is not None:out = self.transformer(self.input_proj(src), mask, pos[-1], query_embed=None)else:out = [mask.flatten(1), src.flatten(2).permute(2, 0, 1)]return out
    
  19. IntermediateLayerGetter是一个实用工具,它允许你从预训练的模型中提取中间层的特征,这在特征提取或迁移学习中非常有用。

    self.body = IntermediateLayerGetter(backbone, return_layers=return_layers)
    
  20. 导入BertModel的两种方式

    from pytorch_pretrained_bert.modeling import BertModel
    from transformers import BertModel
    

相关文章:

TransVG 代码配置及一些小细节

TransVG代码配置 File “/home/wyq/TransVG/utils/misc.py”, line 22, in <module> from torchvision.ops import _new_empty_tensor ImportError: cannot import name ‘_new_empty_tensor’ if float(torchvision.__version__[:3]) < 0.7: # torchvision.__version…...

DIY-Tomcat part 3 实现对动态资源的请求

实现ServletRequest package connector;import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i…...

在鲲鹏麒麟服务器上部署MySQL主从集群

因项目需求需要部署主从MySQL集群&#xff0c;继续采用上次的部署的MySQL镜像arm64v8/mysql:latest&#xff0c;版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…...

K8S版本和istio版本的对照关系

版本对照关系 下载地址1 下载地址2...

省级新质生产力数据(蔡湘杰版本)2012-2022年

测算方式&#xff1a;参考《当代经济管理》蔡湘杰&#xff08;2024&#xff09;老师研究的做法&#xff0c;本文以劳动者、劳动对象和劳动资料为准则层&#xff0c;从新质生产力“量的积累、质的提升、新的拓展”三维目标出发&#xff0c;构建新质生产力综合评价指标体系&#…...

速盾:介绍一下高防cdn的缓存响应事什么功能?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种基于分布式缓存技术的网络加速服务&#xff0c;能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先&#xff0c;高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…...

如何解决服务器扫描出的ASP木马问题

随着互联网的发展&#xff0c;网站安全问题日益凸显。其中&#xff0c;ASP&#xff08;Active Server Pages&#xff09;木马因其隐蔽性和危害性成为攻击者常用的手段之一。本文将详细介绍如何检测和清除服务器上的ASP木马&#xff0c;以保障网站的安全。 1. ASP木马概述 ASP…...

CTF之WEB(sqlmap tamper 参数)

apostropheask.py 作用&#xff1a;将单引号替换为UTF-8&#xff0c;用于过滤单引号。 base64encode.py 作用&#xff1a;替换为base64编码。 multiplespaces.py 作用&#xff1a;绕过SQL关键字添加多个空格。 space2plus.py 作用&#xff1a;用号替换…...

小程序-基于java+SpringBoot+Vue的乡村研学旅行平台设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…...

力扣81:搜索旋转排序数组II

已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转 &#xff0c;使数组变为 [nums[k], nums[k1], ..., nums[n-1], n…...

力扣题库Day4(持续更新中...)

2024/11/29 回文数&#xff1a; 给你一个整数x&#xff0c;如果x是一个回文整数&#xff0c;返回true&#xff1b;否则&#xff0c;返回false。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 class Solution {public boolean isPalindrome(int x) {if(x &l…...

MySQL数据库表的操作

1、总述 今天我跟大家分享MySQL数据库中表的创建&#xff0c;查看&#xff0c;修改&#xff0c;删除。 2、创建表 create table table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明&#xff1…...

Java阶段三05

第3章-第5节 一、知识点 动态代理、jdk动态代理、cglib动态代理、AOP、SpringAOP 二、目标 理解什么是动态代理和它的作用 学会使用JAVA进行动态代理 理解什么是AOP 学会使用AOP 理解什么是AOP的切入点 三、内容分析 重点 理解什么是动态代理和它的作用 理解什么是AO…...

【论文复现】LeNet-5

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ LeNet-5 概述LeNet-5网络架构介绍使用 LeNet-5 网络结构创建 MNIST 手写数字识别分类器下载并加载数据&#xff0c;并对数据进行预处理搭建 …...

Python-链表数据结构学习(1)

一、什么是链表数据&#xff1f; 链表是一种通过指针串联在一起的数据结构&#xff0c;每个节点由2部分组成&#xff0c;一个是数据域&#xff0c;一个是指针域&#xff08;存放下一个节点的指针&#xff09;。最后一个节点的指针域指向null&#xff08;空指针的意思&#xff0…...

nginx安装和负载均衡

1. nginx安装 &#xff08;1&#xff09;安装依赖项&#xff1a; yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel&#xff08;2&#xff09;下载Nginx源代码&#xff1a; http://nginx.org/en/download.html https://nginx.o…...

Buffered 和 BuffWrite

Buffered和BuffWrite是Java IO包中的两个类&#xff0c;用于提高IO操作的效率。 Buffered是一个缓冲区类&#xff0c;可以将一个InputStream或者一个Reader包装起来&#xff0c;提供了一定的缓冲区大小&#xff0c;可以一次读取多个字节或字符&#xff0c;减少了读取的次数&am…...

第三十八篇——高斯分布:大概率事件意味着什么?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过高斯分布的公式&#xff0c;我们可以从科学的角度知道很多和我们的直…...

Ubuntu24.04初始化教程(包含基础优化、ros2)

目录 构建系统建立系统备份**Timeshift: 系统快照和备份工具****安装 Timeshift****使用 Timeshift 创建快照****还原快照****自动创建快照** 最基本配置换源 软件配置打开新世界大门 谷歌浏览器星火应用商城更换输入法安装vscode 完全删除snap删除**删除软件****彻底删除**禁止…...

C/C++ 数据结构与算法 【时间复杂度和空间复杂度】【日常学习,考研必备】

一、时间复杂度 定义&#xff1a;时间复杂度描述了算法运行时间随输入大小增长而增长的趋势。它主要关注的是算法中最耗时的部分&#xff0c;并忽略常数因子、低阶项等细节。表示方法&#xff1a;通常使用大O符号&#xff08;Big O notation&#xff09;来表示时间复杂度。例如…...

brew安装mongodb和php-mongodb扩展新手教程

1、首先保证macos下成功安装了Homebrew&#xff0c; 在终端输入如下命令&#xff1a; brew search mongodb 搜索是不是有mongodb资源&#xff0c; 演示效果如下&#xff1a; 2、下面来介绍Brew 安装 MongoDB&#xff0c;代码如下&#xff1a; brew tap mongodb/brew brew in…...

使用zabbix监控k8s

一、 参考文献 小阿轩yx-案例&#xff1a;Zabbix监控kubernetes云原生环境 手把手教你实现zabbix对Kubernetes的监控 二、部署经验 关于zabbix监控k8s&#xff0c;总体来说是分为两块内容&#xff0c;一是在k8s集群部署zabbix-agent和zabbix- proxy。二是在zabbix进行配置。…...

Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建

Brain.js 是一个强大且易用的 JavaScript 神经网络库&#xff0c;适用于前端和 Node.js 环境&#xff0c;帮助开发者轻松实现机器学习功能。 在前文Brain.js&#xff08;一&#xff09;&#xff1a;可以在浏览器运行的、默认GPU加速的神经网络库概要介绍-发展历程和使用场景中&…...

SQL Server管理员sa登录失败原因

文章目录 一、开启混合登录模式二、启用sa三、更改密码四、登录sa一、开启混合登录模式 用Windows身份登录数据库服务。 在连接名上右键→属性。 在安全性选项卡下,选择【SQL Server和Windows身份验证模式】,点击【确定】,提示需要重启服务。 Win+R,输入指令:services.ms…...

怎么样才算得上熟悉高并发编程?

提到并发编程很多人就会头疼了&#xff1b;首先就是一些基础概念&#xff1a;并发&#xff0c;并行&#xff0c;同步&#xff0c;异步&#xff0c;临界区&#xff0c;阻塞&#xff0c;非阻塞还有各种锁全都砸你脸上&#xff0c;随之而来的就是要保证程序运行时关键数据在多线程…...

conan2包管理菜鸟入门之------------------交叉编译和静态编译

在做嵌入式开发时,我们经常需要交叉编译,conan2可以通过新增profile,在profile配置交叉编译工具链,然后在conan build指定profile就可以进行交叉编译,具体步骤如下: 1.首先在profiles下新增目标平台配置,默认情况下是只有default,下面是一个example profile文件: [set…...

Go-MediatR:Go语言中的中介者模式

在Go语言中&#xff0c;确实存在一个与C#中的MediatR类似的组件包&#xff0c;名为Go-MediatR。 Go-MediatR是一个受.NET中MediatR库启发的Go语言实现&#xff0c;它专注于通过中介者模式简化命令查询责任分离&#xff08;CQRS&#xff09;模式的处理和在事件驱动架构中的应用…...

双向链表

目录 链表的分类 概念 双向链表的实现 ① 结构 ② 初始化 ③ 打印 ④ 插入数据 ⑤ 删除数据 ⑥ 查找数据 ⑦ 在pos位置之前插入数据 ⑧ 删除pos位置的数据 ⑨ 销毁链表 总结 链表的分类 虽然有这么多的链表的结构&#xff0c;但是我们实际中最常⽤还是两种结构&…...

Spring Boot使用JDK 21虚拟线程

JDK 21引入的虚拟线程&#xff08;Virtual Threads&#xff09;是 Project Loom 的一部分&#xff0c;旨在显著简化并发编程并提高 Java 应用的可扩展性。以下是虚拟线程的主要特点&#xff1a; 1. 概念 虚拟线程是轻量级线程&#xff0c;与传统的操作系统线程不同&#xff0…...

24/11/29 Vite

安装nodejs 直接下一步 node.js中自带NPM包(管理js库文件)管理工具 测试NPM命令 npm -v 检查版本 npm config set registry https://registry.npmmirror.com 设置远程仓库 2.安装vite vite是前端服务的工具集 vue团队主持开发 Vite 官网 使用vite安装命令 这个命令是安…...

黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业

视频地址&#xff1a;哔哩哔哩 讲义作业飞书地址&#xff1a;day04作业&#xff08;IOC&DI&#xff09; 作业很简单&#xff0c;主要是练习拆分为三层架构controller、service、dao&#xff0c;并基于IOC & DI进行解耦。 1、结构&#xff1a; 2、代码 网盘链接&…...

[Unity] Inputfield光标移动到最后(不选中内容)

经过测试&#xff0c;要用Inputfield实现光标末尾显示但不选中内容非常麻烦&#xff0c;要么会选中全部&#xff0c;要么采用下面这种延迟显示&#xff0c;但会有明显的变化中间过程&#xff1a; protected override void OnPanelEnter() {// 先激活输入框&#xff08;这里的I…...

实践五 网络安全防范技术

1 实践内容 1.1 安全防范 为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性&#xff0c;信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论&#xff0c;典型的有PDR和P^2DR模型。 1.1.1 PDR模型 信息系统的防御机制能抵抗…...

Spring Web开发注解和请求(1)

大家好我是小帅&#xff0c;今天我们来学习Spring Web MVC框架&#xff08;入门级&#xff09; 文章目录 1. 什么是 Spring Web MVC&#xff1f;1.1 MVC 定义1.2 什么是Spring MVC ? 2. 学习Spring MVC2.1 建⽴连接第一个spring MVC程序 3. web开发注解的解释3.1RestControlle…...

设计模式-适配器模式-注册器模式

设计模式-适配器模式-注册器模式 适配器模式 如果开发一个搜索中台&#xff0c;需要适配或接入不同的数据源&#xff0c;可能提供的方法参数和平台调用的方法参数不一致&#xff0c;可以使用适配器模式 适配器模式通过封装对象将复杂的转换过程隐藏于幕后。 被封装的对象甚至…...

保持角色一致性!flux新模型redux用法(含模型与工作流)

​ 目录 redux模型是什么&#xff0c;能干啥&#xff1f; 用到的工具有哪些&#xff1f; 工具和模型文件在哪里下载&#xff1f; 整合包&#xff1a; 下载后需要分别放到指定目录&#xff1a; redux模型怎么用&#xff1f; 加载工作流 上传图片和输入提示词 生成结果…...

点云3DHarris角点检测算法推导

先回顾2D的Harris角点检测算法推导 自相关矩阵是Harris角点检测算法的核心之一&#xff0c;它通过计算图像局部区域的梯度信息来描述该区域的特征。在推导Harris角点检测算法中的自相关矩阵时&#xff0c;我们首先需要了解自相关矩阵的基本思想和数学背景。 参考 1. 能量函数…...

ASUS/华硕天选5Pro酷睿版 FX607J 原厂Win11 22H2系统 工厂文件 带ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…...

CentOS修改yum.repos.d源,避免“Could not resolve host: mirrorlist.centos.org”错误

1、问题现象 由于CentOS停止维护&#xff0c;mirrorlist.centos.org网站也关闭不可访问。导致CentOS默认配置的yum.repos.d源也不可用&#xff0c;所以执行yum命令会报“Could not resolve host: mirrorlist.centos.org”错误。具体如下&#xff1a; Could not retrieve mirror…...

rest-assured multiPart上传中文名称文件,文件名乱码

rest-assured是一个基于java语言的REST API测试框架&#xff0c;在使用rest-assured的multipart 上传文件后&#xff0c;后端获取的文件名称乱码。截图如下&#xff1a; 原因是rest-assured multipart/form-data默认的编码格式是US-ASCII&#xff0c;需要设置为UTF-8。 Befo…...

Springfox迁移到 Springdoc OpenAPI 3

将项目从 Springfox 迁移到 Springdoc OpenAPI 3 时&#xff0c;主要的工作是将原先使用的 Springfox 注解替换为 Springdoc OpenAPI 3 中的对应注解。虽然 Springdoc OpenAPI 3 基于 OpenAPI 3 规范&#xff0c;并且有一些不同的命名方式和设计理念&#xff0c;但大部分注解的…...

基于Java Springboot考研论坛系统

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据库&#xff1a;…...

性别需不需要加索引?

1. 什么是索引&#xff1f; 索引就像一本书的目录&#xff0c;能够帮助数据库快速定位到特定的数据&#xff0c;减少扫描的工作量。使用索引的前提是能够有效缩小查询范围&#xff0c;否则索引的存在可能并不带来性能提升。 使用索引有额外的开销&#xff1a; 索引需要额外的…...

Subprocess 和 Multiprocessing 的区别与使用要点及进程关闭方法

Subprocess 和 Multiprocessing 的区别与使用要点及进程关闭方法 最近在使用这两个库比较多&#xff0c;所以就借此机会记录一下这两个库的使用方式 一、Subprocess 和 Multiprocessing 的区别 1. 功能目标不同 Subprocess&#xff1a;主要用于在 Python 程序中启动外部程序…...

美国网络安全态势感知(4):威胁情报发展现状

美国政府依托其不断发展完善的威胁情报共享技术&#xff0c;构建了名为“网络天气地图”的威胁情报管理体系&#xff0c;如下图所示&#xff1a; “网络天气地图”的威胁情报管理体系运行过程以及每个过程中的关键信息如下所述&#xff1a; 通过国家网络安全保护系统与互联网中…...

【VRChat 改模】开发环境搭建:VCC、VRChat SDK、Unity 等环境配置

一、配置 Unity 相关 1.下载 UnityHub 下载地址&#xff1a;https://unity.com/download 安装打开后如图所示&#xff1a; 2.下载 VRChat 官方推荐版本的 Unity 跳转界面&#xff08;VRChat 官方推荐页面&#xff09;&#xff1a;https://creators.vrchat.com/sdk/upgrade/…...

android将pcm byte[]通过Librtmp进行rtmp推流

需求 我们这边做的功能是智能戒指&#xff0c;戒指可以录音&#xff0c;然后app通过蓝牙连接&#xff0c;将音频的byte[]进行rtmp推流 技术 因为我们不涉及直播&#xff0c;也不涉及视频&#xff0c;工期也比较短&#xff0c;只是音频推流&#xff0c;所以没用更复杂的ffmpe…...

宠物领养技术:SpringBoot框架应用

摘 要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的产生往往是为了解决现有问题而产生的。针对于宠物领养…...

【前端】跨域问题与缓存

报错如下&#xff1a; 原因&#xff1a; 浏览器 缓存跨域&#xff0c;顾名思义是由于浏览器的缓存机制导致的一种跨域情况。这种跨域一般会出现在浏览器通过一些无视跨域的标签和css(如img、background-image)缓存了一些图片资源之后&#xff0c;当再次发起图片请求时&#xff…...

DepthAI 2.29版本 发布

2024年11月29日 增加在设备运行时使用新的 dai::Device.setCalibration() 更改设备校准能力的方法&#xff0c;并使用 dai::Device.getCalibration() 进行检索校准 1&#x1f343; 新的立体深度预设属性&#xff1a; 预设 面部 高细节 机器人 2&#x1f343; 多项摄像…...