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

【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文

🍋改进模块🍋:多尺度大核注意力机制(MLKA)
🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。
🍋改进优势🍋:超分辨的MLKA模块小目标和模糊目标涨点很明显
🍋适用场景🍋:小目标检测、模糊目标检测等
🍋思路来源🍋:CVPR2024《Multi-scale Attention Network for Single Image Super-Resolution》

目录

🔔🔔1.设计动机

🍉🍉2.多尺度大核注意力机制(MLKA)模块优势

👍多尺度特征捕获

👍避免块状伪影

👍计算效率高

👍增强模型表示能力

🏆🏆3.MLKA结构

🐸1.基于大核注意力(LKA)的分解

🐸2.多尺度机制

🐸3.门控聚合

 👍👍4.将MLKA引入YOLOv12的python代码修改

🍂修改处一

🍂修改处二

🍂修改处三

🍂修改处四

👍👍5.成功训练后的网络结构截图

整理不易,欢迎一键三连!!!送你们一条美丽的--分割线--


🔔🔔1.设计动机

        设计MLKA(Multi-scale Large Kernel Attention,多尺度大核注意力)模块的动机主要源于对现有图像超分辨率(SR)技术中注意力机制和卷积网络的局限性的分析,以及对提升模型性能和效率的需求。

  • 提升卷积网络的长程依赖建模能力
    传统的卷积神经网络(CNN)在处理图像超分辨率任务时,由于感受野有限,难以有效捕捉长程依赖关系。虽然通过堆叠更多卷积层可以扩大感受野,但这种方法会导致训练成本过高和过拟合问题。因此,需要一种更高效的方式来扩展卷积网络的建模能力。

  • 结合大核注意力机制的优势
    大核注意力(LKA)通过使用大尺寸的卷积核来捕捉长程依赖,但存在两个主要问题:一是计算复杂度较高;二是扩张卷积可能导致块状伪影(blocking artifacts)。MLKA模块的设计动机之一是改进LKA,使其更适合超分辨率任务。

  • 多尺度特征的重要性
    图像超分辨率任务需要同时考虑局部细节和全局结构。然而,现有的注意力机制(如通道注意力、空间注意力等)大多只能在单一尺度上工作,无法同时捕捉多尺度信息。MLKA模块通过引入多尺度机制,能够同时处理局部和全局特征,从而更好地重建高分辨率图像。

  • 提升卷积网络与Transformer的竞争力
    Transformer在图像超分辨率任务中表现出色,尤其是在长程依赖建模方面。然而,Transformer的计算复杂度较高,且对大规模图像处理效率较低。MLKA模块的设计旨在提升卷积网络的性能,使其在超分辨率任务中能够与Transformer相媲美,同时保持更高的效率。

  • 长程依赖与局部细节的平衡
    现有的卷积网络和注意力机制难以同时捕捉长程依赖和局部细节。MLKA模块通过多尺度机制和大核注意力的结合,能够在不同尺度上生成注意力图,从而同时处理全局结构和局部纹理,解决了这一问题。

  • 避免扩张卷积的块状伪影
    大核注意力中使用的扩张卷积可能导致块状伪影,这在图像超分辨率任务中是不可接受的。MLKA通过引入门控机制,动态校准注意力图,有效避免了这种伪影,从而提高了重建图像的质量。

  • 提高模型的表示能力和效率
    传统的卷积网络和注意力机制在表示能力上存在局限性,尤其是在处理复杂图像时。MLKA模块通过改进大核注意力和引入多尺度机制,显著提升了模型的特征表示能力,同时通过合理的计算分解,保持了较高的效率。

  • 提升卷积网络在低级视觉任务中的竞争力
    Transformer在图像超分辨率任务中表现出色,但计算复杂度较高。MLKA模块的设计旨在提升卷积网络的性能,使其在超分辨率任务中能够与Transformer相媲美,同时保持更高的效率和更低的计算成本。

🍉🍉2.多尺度大核注意力机制(MLKA)模块优势

👍多尺度特征捕获

        通过多尺度机制,MLKA能够在不同尺度上生成注意力图,从而同时捕捉到局部细节和全局依赖关系。这种多尺度的设计使得模型能够更好地处理图像中的各种纹理和结构信息提高了超分辨率重建的精度

👍避免块状伪影

        门控聚合机制有效地避免了扩张卷积可能引入的块状伪影问题。这种伪影在图像超分辨率任务中是不可接受的,因为它会严重影响重建图像的质量。通过动态校准注意力图,MLKA能够生成更平滑、更自然的特征表示,从而提高最终重建图像的视觉质量。

👍计算效率高

        尽管MLKA采用了多尺度和大核注意力的设计,但其计算复杂度相对较低。通过合理地分解卷积操作和控制特征分组的数量,MLKA能够在不显著增加计算负担的情况下,实现对长程依赖关系的有效建模。这使得MLKA在实际应用中具有较高的效率,尤其是在处理大规模图像数据时。

👍增强模型表示能力

        MLKA模块的引入显著提高了模型对图像特征的表示能力。它能够更好地捕捉到图像中的重要信息,同时忽略掉无关的噪声,从而为后续的超分辨率重建提供了更高质量的特征表示。这使得整个超分辨率网络能够更准确地重建出高分辨率图像的细节和纹理。

🏆🏆3.MLKA结构

 

🐸1.基于大核注意力(LKA)的分解

MLKA的核心是利用大核注意力(LKA)来建立特征之间的长程依赖关系。LKA通过将一个大尺寸的卷积核分解为三个部分来实现高效的计算:

  • 深度可分离卷积:首先使用一个尺寸为 (2d−1)×(2d−1) 的深度可分离卷积 fDW​(⋅)。
  • 深度可分离扩张卷积:接着使用一个尺寸为 ⌈dK​⌉×⌈dK​⌉ 的深度可分离扩张卷积 fDWD​(⋅),扩张率(dilation rate)为 d。
  • 逐点卷积:最后使用一个逐点卷积 fPW​(⋅) 来整合特征。整个LKA的计算过程可以表示为:

🐸2.多尺度机制

        为了在不同尺度上获取丰富的特征信息,MLKA引入了多尺度机制。具体来说,将输入特征 X∈RC×H×W 分成 n 组,每组的特征尺寸为 ⌊nC​⌋×H×W。对于第 i 组特征 Xi​,使用一组特定的LKA参数 {Ki​,di​} 来生成对应尺度的注意力图 LKAi​。

论文中采用了三组LKA参数:

  1. {7,2}(对应3-5-1的卷积组合)
  2. {21,3}(对应5-7-1的卷积组合)
  3. {35,4}(对应7-9-1的卷积组合)

🐸3.门控聚合

        为了避免扩张卷积可能带来的块状伪影(blocking artifacts),MLKA引入了门控机制来动态校准生成的注意力图。对于第 i 组输入 Xi​,使用一个尺寸为 ai​×ai​ 的深度可分离卷积生成门控信号 Gi​,然后将 Gi​ 与 LKAi​ 进行逐元素相乘,得到最终的多尺度注意力图 MLKAi​,计算公式为:

        其中 ⊗ 表示逐元素相乘操作。

 👍👍4.将MLKA引入YOLOv12的python代码修改

🍂修改处一

在ultralytics/nn/modules/目录下添加MLKA.py,MLKA.py定义如下:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass LayerNorm(nn.Module):r"""支持两种数据格式的LayerNorm:channels_last(默认)或channels_first。输入的维度顺序。channels_last对应形状为(batch_size, height, width, channels)的输入,而channels_first对应形状为(batch_size, channels, height, width)的输入。"""def __init__(self, normalized_shape, eps=1e-6, data_format="channels_last"):super().__init__()# 初始化参数,包括标准化参数weight和biasself.weight = nn.Parameter(torch.ones(normalized_shape))self.bias = nn.Parameter(torch.zeros(normalized_shape))self.eps = epsself.data_format = data_formatif self.data_format not in ["channels_last", "channels_first"]:raise NotImplementedError  # 如果格式无效,则抛出异常self.normalized_shape = (normalized_shape,)def forward(self, x):# 对于channels_last格式,使用F.layer_norm进行标准化if self.data_format == "channels_last":return F.layer_norm(x, self.normalized_shape, self.weight, self.bias, self.eps)# 对于channels_first格式,手动计算均值和方差进行标准化elif self.data_format == "channels_first":u = x.mean(1, keepdim=True)  # 计算均值s = (x - u).pow(2).mean(1, keepdim=True)  # 计算方差x = (x - u) / torch.sqrt(s + self.eps)  # 标准化x = self.weight[:, None, None] * x + self.bias[:, None, None]  # 加上可学习的权重和偏置return xclass MLKA_Ablation(nn.Module):def __init__(self, n_feats, k=2, squeeze_factor=15):super().__init__()i_feats = 2 * n_feats  # 输入特征维度是n_feats的两倍self.n_feats = n_featsself.i_feats = i_feats# 初始化归一化层self.norm = LayerNorm(n_feats, data_format='channels_first')# 用于缩放的可学习参数self.scale = nn.Parameter(torch.zeros((1, n_feats, 1, 1)), requires_grad=True)# 定义不同尺度的大核注意力(Large Kernel Attention)模块# LKA7: 使用7x7卷积,9x9卷积(膨胀为4),以及1x1卷积self.LKA7 = nn.Sequential(nn.Conv2d(n_feats // k, n_feats // k, 7, 1, 7 // 2, groups=n_feats // k),nn.Conv2d(n_feats // k, n_feats // k, 9, stride=1, padding=(9 // 2) * 4, groups=n_feats // k, dilation=4),nn.Conv2d(n_feats // k, n_feats // k, 1, 1, 0))# LKA5: 使用5x5卷积,7x7卷积(膨胀为3),以及1x1卷积self.LKA5 = nn.Sequential(nn.Conv2d(n_feats // k, n_feats // k, 5, 1, 5 // 2, groups=n_feats // k),nn.Conv2d(n_feats // k, n_feats // k, 7, stride=1, padding=(7 // 2) * 3, groups=n_feats // k, dilation=3),nn.Conv2d(n_feats // k, n_feats // k, 1, 1, 0))# 其它模块,未启用'''self.LKA3 = nn.Sequential(nn.Conv2d(n_feats//k, n_feats//k, 3, 1, 1, groups= n_feats//k),  nn.Conv2d(n_feats//k, n_feats//k, 5, stride=1, padding=(5//2)*2, groups=n_feats//k, dilation=2),nn.Conv2d(n_feats//k, n_feats//k, 1, 1, 0))'''# 定义其它卷积层(不同尺寸)self.X5 = nn.Conv2d(n_feats // k, n_feats // k, 5, 1, 5 // 2, groups=n_feats // k)self.X7 = nn.Conv2d(n_feats // k, n_feats // k, 7, 1, 7 // 2, groups=n_feats // k)# 用于将输入特征映射到更高维度的卷积层self.proj_first = nn.Sequential(nn.Conv2d(n_feats, i_feats, 1, 1, 0))# 用于最终输出映射回n_feats维度的卷积层self.proj_last = nn.Sequential(nn.Conv2d(n_feats, n_feats, 1, 1, 0))def forward(self, x, pre_attn=None, RAA=None):# 保留输入数据作为shortcut,进行跳跃连接shortcut = x.clone()# 对输入进行归一化x = self.norm(x)# 映射到更高维度x = self.proj_first(x)# 将特征图分成两部分(a和x)a, x = torch.chunk(x, 2, dim=1)# 将a进一步分成两部分(a_1和a_2)a_1, a_2 = torch.chunk(a, 2, dim=1)# 分别对a_1和a_2进行多尺度大核注意力操作,结合不同卷积结果a = torch.cat([self.LKA7(a_1) * self.X7(a_1), self.LKA5(a_2) * self.X5(a_2)], dim=1)# 最后一步将加权后的x和a做卷积变换,将多尺度信息融入到特征图中并进行跳跃连接x = self.proj_last(x * a) * self.scale + shortcutreturn x

🍂修改处二

        在 task.py文件中导入MLKA_Ablation类

        导入代码如下:

import thopimport torchimport torch.nn as nn#修改from ultralytics.nn.modules.MLKA import MLKA_Ablation#修改

🍂修改处三

在task.py中将MLKA_Ablation的使用添加修改到1075行左右位置,修改后代码如下:

     elif m in {StarsBlock, MLKA_Ablation}:args = [ch[f]]else:c2 = ch[f]

注意:使用YOLOv12进行训练,torch版本要在2.x及以上,否则会出现scaled_dot_product_attention模块导入不成功的问题

from torch.nn.functional import scaled_dot_product_attention as sdpa

🍂修改处四

        修改网络结构定义yolov12.yaml文件,在原来的模型结构基础上用MLKA_Ablation模块添加在骨干网络最后一层。注意要根据自己的数据集修改nc,即num_class。

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 1 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPss: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPsm: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPsl: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPsx: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs# YOLOv12n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv,  [64, 3, 2]] # 0-P1/2- [-1, 1, Conv,  [128, 3, 2]] # 1-P2/4- [-1, 2, C3k2,  [256, False, 0.25]]- [-1, 1, Conv,  [256, 3, 2]] # 3-P3/8- [-1, 2, C3k2,  [512, False, 0.25]]- [-1, 1, Conv,  [512, 3, 2]] # 5-P4/16- [-1, 4, A2C2f, [512, True, 4]]- [-1, 1, Conv,  [1024, 3, 2]] # 7-P5/32- [-1, 4, A2C2f, [1024, True, 1]] # 8- [-1, 1, MLKA_Ablation, []] #9# YOLO12n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 2, A2C2f, [512, False, -1]] # 11- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 2, A2C2f, [256, False, -1]] # 14- [-1, 1, Conv, [256, 3, 2]]- [[-1, 11], 1, Concat, [1]] # cat head P4- [-1, 2, A2C2f, [512, False, -1]] # 17- [-1, 1, Conv, [512, 3, 2]]- [[-1, 8], 1, Concat, [1]] # cat head P5- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)- [[14, 17, 20], 1, Detect, [nc]] # Detect(P3, P4, P5)

👍👍5.成功训练后的网络结构截图

至此就可以愉快的炼丹了。希望大家都能成果多多,paper多多~~~

整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--


🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

相关文章:

【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文

🍋改进模块🍋:多尺度大核注意力机制(MLKA) 🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。 🍋改进优势&#x1f…...

java 初学知识点总结

自己总结着玩 1.基本框架 public class HelloWorld{ public static void main(String[] args){ }//类名用大写字母开头 } 2.输入: (1)Scanner:可读取各种类型,字符串相当于cin>>; Scanner anew Scanner(System.in); Scan…...

File文件和目录

一、文件和目录相关概念 计算机文件(File):以计算机硬盘为载体存储在计算机上的信息集合,可以是文本(.txt)、图片(.jpg、.png、.jpeg)、视频(.mp4)、程序(.exe)等,文件一般有拓展名,表示文件的类型。 文件…...

C++ 数据结构详解及学习规划

C++数据结构详解及学习规划 一、C++常用数据结构详解与示例 以下是C++中核心数据结构的分类及具体实现示例: 1. 线性数据结构 a. 数组(Array) • 定义:存储固定大小、同类型元素的连续内存结构。 • 特点:快速随机访问(O(1)),但插入/删除效率低(O(n))。 • 应用场…...

Mac同时安装jdk8和jdk17,默认选择jdk8

在Mac上同时安装JDK 8和JDK 17,并设置默认版本为JDK 8,可以按照以下步骤操作: 一、下载并安装JDK 8和JDK 17 下载JDK 8 访问Oracle JDK下载页面。在“Java SE Archive Downloads”部分,找到JDK 8的下载链接。选择适合您Mac芯片类…...

PTA 7-6 列出连通集

题目详情: 给定一个有 n 个顶点和 m 条边的无向图,请用深度优先遍历(DFS)和广度优先遍历(BFS)分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时,假设我们总是从编号最小的顶点出…...

计算机毕业设计SpringBoot+Vue.js疗养院管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

分布式系统设计(架构能力)

一、微服务架构 服务治理 Nacos 注册中心(AP模式) CAP选择:Nacos 默认采用 AP 模式(可用性 分区容忍性),通过心跳检测实现服务健康管理。服务发现:客户端定时拉取服务列表,支持权重…...

CR电路介绍

CR电路(RC电路)介绍 CR电路(电阻-电容电路)由电阻(R)和电容(C)组成,是电子系统中的基础模块,广泛用于信号处理、定时、滤波等场景。以下是其核心功能、实现方…...

Redis数据结构,渐进式遍历,数据库管理

1.Redis的其他数据结构 前面我们主要讲述了Redis中比较常用的集中数据结构String,List,Hash,Set,Zset,但这并不代表Redis只用这几种数据结构还有如Streams,Geospatial,Hyperloglog,…...

动态规划01背包问题系列一>最后一块石头的重量II

这里写目录标题 题目分析:状态表示:状态转移方程:初始化:填表顺序:返回值:代码呈现:优化版本:代码呈现: 题目分析: 状态表示: 状态转移方程&#…...

GCC编译

目录 gcc编译c语言流程: 步骤 编译器 预处理 编译 汇编 链接 完整编译 多文件编译 其他常用gcc选项 gcc编译c语言流程: 预处理大写-E 编译为大写-S ,生成汇编代码文件 汇编为小写-c 链接这里可以加-o 重命名a.out这个可…...

康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术

随着自动驾驶技术的迅猛发展,构建高保真、动态的仿真场景成为了行业的迫切需求。传统的三维重建方法在处理复杂场景时常常面临效率和精度的挑战。在此背景下,3D高斯点阵渲染(3DGS)技术应运而生,成为自动驾驶仿真场景重…...

Jetson NV 上解决 PyQt5 “Could not load the Qt platform plugin ‘xcb‘“ 错误

在 Jetson NV 上运行 PyQt5 应用程序时,可能会遇到以下错误: qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed…...

计算机毕业设计Python+DeepSeek-R1大模型微博的话题博文及用户画像分析系统 微博舆情可视化(源码+ 文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

文件上传靶场(1--9关)

实验环境: 1,upload的靶场环境可以去GitHub上自行查找 2,打开小皮面板的nginx和数据库 3,将文件上传的靶场部署到本地: 放到小皮的phpstduy_pro的www下面 小提示: 另外如果你用的是php7的版本建议将版…...

2025年渗透测试面试题总结-字某某动-安全研究实习生(二面)(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 字某某动-安全研究实习生(二面) 1. 护网行动中的核心工作 2. 防护层级选择&…...

LeetCode 965题详解 | 单值二叉树的“一统江湖”:如何判断所有节点值全等?

题目如下: 解题过程如下: 示例中,即便这个结点是空结点也返回true。 若根结点不为空,那么先判断它的左孩子结点里的值是否与根结点里的值相等(这里要先确保左孩子不为空,因为左孩子结点里的值是解引用操作…...

Java阻塞队列深度解析:高并发场景下的安全卫士

一、阻塞队列的核心价值 在电商秒杀系统中,瞬时涌入的10万请求如果直接冲击数据库,必然导致系统崩溃。阻塞队列如同一个智能缓冲带,通过流量削峰和异步解耦两大核心能力,成为高并发系统的核心组件。 二、Java阻塞队列实现类对比 …...

使用 Docker 部署 RabbitMQ 并实现数据持久化

非常好!以下是一份完整的 Docker 部署 RabbitMQ 的博客文档,包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。 使用 Docker 部署 RabbitMQ 并实现数据持久化 RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中。使用…...

VsCode 快捷键备忘

移动光标及选择文本 Ctrl ← / → :以单词为单位移动游标Home / End:光标移到行首/行位Ctrl Home / End:光标移到文件首和文件尾Ctrl Shift \:在匹配的分隔符之间跳转 配对的分隔符 是指分隔代码元素的字符,比如字…...

蓝桥杯备考:动态规划路径类DP之矩阵的最小路径和

如题,要求左上角到右下角的最短路径,我们还是老样子按顺序做 step1:确定状态表示 f[i][j]表示(1,1)到(i,j)的最短距离 step2 :推导状态表达方程 step3:确定填表顺序,应该是从上到下,从左到右 step4:初始化 step5 找结果&#…...

大模型工程师学习日记(十五):Hugging Face 模型微调训练(基于 BERT 的中文评价情感分析)

1. datasets 库核心方法 1.1. 列出数据集 使用 d atasets 库,你可以轻松列出所有 Hugging Face 平台上的数据集: from datasets import list_datasets# 列出所有数据集 all_datasets list_datasets()print(all_datasets)1.2. 加载数据集 你可以通过 l…...

Spring Boot 异步编程

文章目录 一、异步方法的使用1. 开启异步支持2. 定义异步方法3. 调用异步方法踩坑记录心得体会 二、线程池配置1. 自定义线程池2. 使用自定义线程池踩坑记录心得体会 三、异步任务的监控与管理1. 日志记录2. 异常处理3. 线程池监控踩坑记录心得体会 在现代应用程序开发中&#…...

golang并发编程如何学习

《掌握 Golang 并发编程的通关秘籍》 在当今的编程世界中,Golang 并发编程正以其独特的魅力和强大的能力吸引着众多开发者。然而,对于许多小伙伴来说,如何学好这门技术却成了一个头疼的问题。别担心,今天就让我来为大家揭开 Gola…...

Django 中,Form 和 ModelForm的用法和区别

在 Django 中,Form 和 ModelForm 是用于处理表单数据的两种主要方式。它们的主要区别在于是否与模型(Model)直接关联。以下是它们的用法、区别以及高级用法的详细说明: 一、Form 的使用 1. 基本用法 Form 是一个独立的表单类,不与任何模型直接关联。适用于需要手动定义字…...

SQL_语法

1 数据库 1.1 新增 create database [if not exists] 数据库名; 1.2 删除 drop database [if exists] 数据库名; 1.3 查询 (1) 查看所有数据库 show databases; (2) 查看当前数据库下的所有表 show tables; 2 数据表 2.1 新增 (1) 创建表 create table [if not exists…...

Linux网络编程

网络:不同主机,进程间通信 目的 1, 解决主机之间的硬件层面的互联互通 2,解决主机间软件层面的互联互通 IP地址:区分不同主机(软件地址) MAC地址:硬件地址 端口号:区分同…...

算法·搜索

搜索问题 搜索问题本质也是暴力枚举,一般想到暴力也要想到利用回溯枚举。 排序和组合问题 回溯法 去重问题:定义全局变量visited还是局部变量visited实现去重? 回溯问题 图论中的搜索问题 与一般的搜索问题一致,只不过要多…...

前端跨域设置 withCredentials: true

在做登录认证的时候,会出现请求未登录的情况,查看请求头的时候发现并没有把登录时的cookie设置到第二次的请求头里面。查看资料才知道跨域请求要想带上cookie,必须要在ajax请求里加上 withCredentials: true 再次访问发现请求头可以携带cook…...

使用 Arduino 和 Wi-Fi 控制 RGB LED

通过 WiFi 的 Arduino RGb LED 控制器 ,在本文中,我们将介绍下一个基于 IOT 的项目 - 使用 Wi-Fi 的 RGB LED 闪光灯。在这里,我们使用 Arduino 和 ESP8266 Wi-Fi 模块通过 Android 手机通过 Wi-Fi 控制 RGB LED 的颜色。 在这个 RGB Flash…...

html+js 轮播图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图示例</title><style>/* 基本样式…...

蓝桥杯 Excel地址

Excel地址 题目描述 Excel 单元格的地址表示很有趣&#xff0c;它使用字母来表示列号。 比如&#xff0c; A 表示第 1 列&#xff0c; B 表示第 2 列&#xff0c; Z 表示第 26 列&#xff0c; AA 表示第 27 列&#xff0c; AB 表示第 28 列&#xff0c; BA 表示第 53 列&#x…...

相机几何与标定:从三维世界到二维图像的映射

本系列课程将带领读者开启一场独特的三维视觉工程之旅。我们不再止步于教科书式的公式推导&#xff0c;而是聚焦于如何将抽象的数学原理转化为可落地的工程实践。通过解剖相机的光学特性、构建成像数学模型、解析坐标系转换链条&#xff0c;直至亲手实现参数标定代码&#xff0…...

SCI期刊推荐 | 免版面费 | 计算机领域:信息系统、软件工程、自动化和控制

在学术研究领域&#xff0c;选择合适的SCI期刊对科研成果的传播与认可至关重要。了解SCI期刊的研究领域和方向是基础&#xff0c;确保投稿内容与期刊主题相符。同时&#xff0c;要关注期刊的影响因子和评估标准&#xff0c;选择具有较高影响力和学术认可度的期刊。阅读期刊的投…...

Cryptography 与 PyCryptodome 源码级解析

目录 Cryptography 与 PyCryptodome 源码级解析一、引言二、Cryptography 库源码解析2.1 Cryptography 库概述与设计理念2.2 核心模块与数据流分析2.2.1 目录结构与模块划分2.2.2 以 AES-GCM 模式为例的加解密实现2.2.3 源码示例解析 2.3 错误处理与边界检测 三、PyCryptodome …...

std::string的模拟实现

目录 string的构造函数 无参数的构造函数 根据字符串初始化 用n个ch字符初始化 用一个字符串的前n个初始化 拷贝构造 用另一个string对象的pos位置向后len的长度初始化 [ ]解引用重载 迭代器的实现 非const版本 const版本 扩容reserve和resize reserve resize p…...

GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析

引言&#xff1a;大语言模型计算基础设施的演进 随着大语言模型&#xff08;LLM&#xff09;的快速发展与广泛应用&#xff0c;高性能计算硬件已成为支撑LLM训练与推理的关键基础设施。目前市场上主要有三类处理器用于加速LLM相关任务&#xff1a;GPU&#xff08;图形处理单元…...

常见限流算法

限流是指在高并发、大流量请求的情况下&#xff0c;限制新的流量对系统的访问&#xff0c;以保证系统服务的安全性。常见的限流算法及其详细介绍如下&#xff1a; 计数器算法&#xff08;Fixed Window Counter&#xff09; 原理&#xff1a;使用一个固定时间窗口内的计数器来…...

美国国家航空航天局(NASA)的PUNCH任务

地球浸没在来自太阳的物质流中。这种被称为太阳风的流正在冲刷我们的星球,造成令人叹为观止的极光,影响太空中的卫星和宇航员,甚至影响地面基础设施。 美国宇航局 (NASA) 的 PUNCH(统一日冕和日球层旋光仪 Polarimeter to Unify the Corona and Heliosphere)任务将首次…...

REST API前端请求和后端接收

1、get请求&#xff0c;带"?" http://localhost:8080/api/aop/getResult?param123 GetMapping("getResult")public ResponseEntity<String> getResult(RequestParam("param") String param){return new ResponseEntity<>("12…...

OpenBMC:BmcWeb构造connect对象

OpenBMC:BmcWeb server.run-CSDN博客 server在接收了tcp连接请求后,会构造一个ConnectionType对象,然后通过post调度,运行该对象的start函数 1.ConnectionType类型 其实也就是using ConnectionType = Connection<Adaptor, Handler>;类型 由于ConnectionType实例化于…...

ESLint 深度解析:原理、规则与插件开发实践

在前端开发的复杂生态中&#xff0c;保障代码质量与规范性是构建稳健、可维护项目的基石。ESLint 作为一款强大的代码检查工具&#xff0c;其默认规则与插件能满足多数常见需求&#xff0c;但面对特定团队规范或项目独特要求&#xff0c;自定义 ESLint 插件便成为有力的扩展手段…...

ios使用swift调用deepseek或SiliconFlow接口

调用SiliconFlow API 注册并获取API密钥&#xff1a;打开硅基流动平台官网Models&#xff0c;进行注册和认证。登录后&#xff0c;进入首页&#xff0c;点击左上角三个横杠&#xff0c;选择API密钥&#xff0c;生成密钥并复制。配置第三方应用&#xff1a;打开安装好的Chatbox…...

贪心算法一

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是贪心算法&#xff0c;并且掌握贪心算法。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…...

Java进阶:Dubbo

分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程&#xff0c;下面我们分别了解一下这几个架构。 1.1 单体架构 架构说明&#xff1a; 全部功能集中在一个项目内&#xff08;All in one&#xf…...

【Day9】make/makeFile如何让项目构建自动化起飞

【Day9】make/makeFile如何让项目构建自动化起飞 使用make命令编写makefile文件依赖管理增量构建makefile注释&#xff1a;#makefile其他语法 make/makefile递归式工作过程 在Linux中&#xff0c;项目自动化构建是指使用一系列工具和脚本来自动执行软件项目的编译、测试、打包和…...

SCI1区TOP:自适应学习粒子群算法SLPSO,深度解析+性能实测

目录 1.摘要2.改进策略3.自适应学习粒子群算法4.结果展示5.参考文献6.获取代码 1.摘要 粒子群算法&#xff08;PSO&#xff09;是一种基于种群的随机搜索方法&#xff0c;广泛应用于科学和工程领域的连续空间优化问题&#xff0c;并已证明其高效性和有效性。许多实际问题的往往…...

迷你世界脚本显示板管理接口:DisPlayBoard

显示板管理接口&#xff1a;DisPlayBoard 迷你世界 更新时间: 2023-04-26 10:21:14 具体函数名及描述如下: 序号 函数名 函数描述 1 showBoard(...) 对玩家显示显示板 2 hideBoard(...) 对玩家隐藏显示板 3 setBoardPicture 对玩家设置显示板的图片…...

如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能

作者&#xff1a;来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中&#xff0c;通过使用 LLM 生成的词汇&#xff0c;为搜索应用增强自动补全功能&#xff0c;实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能&#xff0c;它通过在用户输入时实…...