SEO基础

SEO基础

Products

当前位置:首页 > SEO基础 >

能否使用家乡网站模板进行装潢设计,报考一级建造师资格?

96SEO 2026-02-20 05:21 40


。

能否使用家乡网站模板进行装潢设计,报考一级建造师资格?

它采用了创新的建筑模块设计#xff0c;包括三明治布局和级联…一、本文介绍

本文给大家带来的改进机制是主干网络一个名字EfficientViT的特征提取网络(和之前发布的只是同名但不是同一个)其基本原理是提升视觉变换器在高效处理高分辨率视觉任务的能力。

它采用了创新的建筑模块设计包括三明治布局和级联群组注意力模块。

其是一种高效率的特征提取网络训练速度非常快推理速度也要比基础版本的要快其效果完爆之前的MobileNetV3等轻量化网络模型。

欢迎大家订阅本专栏本专栏每周更新3-5篇最新机制更有包含我所有改进的文件和交流群提供给大家。

专栏回顾YOLOv8改进系列专栏——本专栏持续复习各种顶会内容——科研必备

一、本文介绍

EfficientViT的基本原理是提升视觉变换器在高效处理高分辨率视觉任务的能力。

它采用了创新的建筑模块设计包括三明治布局和级联群组注意力模块。

三明治布局在前馈神经网络FFN层之间使用单个受内存限制的多头自注意力机制MHSA以提高内存效率。

级联群组注意力模块通过将不同的特征分割喂给不同的注意力头减少计算冗余并提高注意力的多样性。

下面为大家展示了EfficientViT的整体架构和关键组成部分

(a).

架构概览EfficientViT的整体架构分为三个阶段每个阶段都包含了若干EfficientViT块随着阶段的进展特征图的维度会减小而通道数会增加。

(b).

三明治布局块展示了EfficientViT块的内部结构它采用了一种三明治布局其中的自注意力层绿色部分被两层前馈神经网络FFN夹在中间。

(c).

级联群组注意力这是一个创新的注意力机制通过将输入特征分割成不同的部分分别喂给

import

EfficientViT_M4,EfficientViT_M5]class

Conv2d_BN(torch.nn.Sequential):def

__init__(self,

resolution-10000):super().__init__()self.add_module(c,

torch.nn.Conv2d(a,

torch.nn.BatchNorm2d(b))torch.nn.init.constant_(self.bn.weight,

bn_weight_init)torch.nn.init.constant_(self.bn.bias,

0)torch.no_grad()def

dilationself.c.dilation,groupsself.c.groups)m.weight.data.copy_(w)m.bias.data.copy_(b)return

mdef

torch.nn.BatchNorm2d):setattr(net,

child_name,

torch.nn.Identity())else:replace_batchnorm(child)class

PatchMerging(torch.nn.Module):def

__init__(self,

input_resolution):super().__init__()hid_dim

int(dim

resolutioninput_resolution)self.act

Conv2d_BN(hid_dim,

resolutioninput_resolution)self.se

.25)self.conv3

self.conv3(self.se(self.act(self.conv2(self.act(self.conv1(x))))))return

xclass

drop0.):super().__init__()self.m

mself.drop

1,devicex.device).ge_(self.drop).div(1

self.m(x)class

resolution):super().__init__()self.pw1

Conv2d_BN(ed,

self.pw2(self.act(self.pw1(x)))return

xclass

CascadedGroupAttention(torch.nn.Module):r

Cascaded

num_heads8,attn_ratio4,resolution14,kernels[5,

5],

):super().__init__()self.num_heads

num_headsself.scale

range(num_heads):qkvs.append(Conv2d_BN(dim

(num_heads),

resolutionresolution))dws.append(Conv2d_BN(self.key_dim,

self.key_dim,

groupsself.key_dim,resolutionresolution))self.qkvs

torch.nn.ModuleList(qkvs)self.dws

torch.nn.ModuleList(dws)self.proj

torch.nn.Sequential(torch.nn.ReLU(),

Conv2d_BN(self.d

list(itertools.product(range(resolution),

range(resolution)))N

attention_offsets:attention_offsets[offset]

len(attention_offsets)idxs.append(attention_offsets[offset])self.attention_biases

torch.nn.Parameter(torch.zeros(num_heads,

len(attention_offsets)))self.register_buffer(attention_bias_idxs,torch.LongTensor(idxs).view(N,

train(self,

modeTrue):super().train(mode)if

mode

self.attention_bias_idxs]feats_in

dim1)feats_out

LocalWindowAttention(torch.nn.Module):r

Local

num_heads8,attn_ratio4,resolution14,window_resolution7,kernels[5,

5],

num_heads,attn_ratioattn_ratio,resolutionwindow_resolution,kernelskernels,

)def

self.window_resolution,C).transpose(2,

3).reshape(B,

EfficientViTBlock(torch.nn.Module):

basic

nh8,ar4,resolution14,window_resolution7,kernels[5,

5],

resolutionresolution))self.ffn0

Residual(FFN(ed,

Residual(LocalWindowAttention(ed,

kd,

window_resolutionwindow_resolution,kernelskernels))self.dw1

ed,

resolutionresolution))self.ffn1

Residual(FFN(ed,

self.ffn1(self.dw1(self.mixer(self.ffn0(self.dw0(x)))))class

EfficientViT(torch.nn.Module):def

__init__(self,

img_size400,patch_size16,frozen_stages0,in_chans3,stages[s,

s],embed_dim[64,

[]],pretrainedNone,distillationFalse,

torch.nn.Sequential(Conv2d_BN(in_chans,

embed_dim[0]

resolutionresolution),torch.nn.ReLU(),Conv2d_BN(embed_dim[0]

embed_dim[0]

torch.nn.ReLU(),Conv2d_BN(embed_dim[0]

embed_dim[0]

torch.nn.ReLU(),Conv2d_BN(embed_dim[0]

embed_dim[0],

range(len(embed_dim))]self.blocks1

[]self.blocks2

1)).append(EfficientViTBlock(stg,

ed,

1blk.append(torch.nn.Sequential(Residual(Conv2d_BN(embed_dim[i],

embed_dim[i],

resolutionresolution)),Residual(FFN(embed_dim[i],

int(embed_dim[i]

))blk.append(PatchMerging(*embed_dim[i:i

2],

resolution_blk.append(torch.nn.Sequential(Residual(Conv2d_BN(embed_dim[i

1],

1],resolutionresolution)),Residual(FFN(embed_dim[i

1],

torch.nn.Sequential(*self.blocks1)self.blocks2

torch.nn.Sequential(*self.blocks2)self.blocks3

torch.nn.Sequential(*self.blocks3)self.width_list

[i.size(1)

self.patch_embed(x)outs.append(x)x

self.blocks3(x)outs.append(x)return

outsEfficientViT_m0

pretrained_cfgNone,model_cfgEfficientViT_m0):model

EfficientViT(frozen_stagesfrozen_stages,

**model_cfg)if

pretrained:model.load_state_dict(update_weight(model.state_dict(),

torch.load(pretrained)[model]))if

fuse:replace_batchnorm(model)return

modeldef

pretrained_cfgNone,model_cfgEfficientViT_m1):model

EfficientViT(frozen_stagesfrozen_stages,

**model_cfg)if

pretrained:model.load_state_dict(update_weight(model.state_dict(),

torch.load(pretrained)[model]))if

fuse:replace_batchnorm(model)return

modeldef

pretrained_cfgNone,model_cfgEfficientViT_m2):model

EfficientViT(frozen_stagesfrozen_stages,

**model_cfg)if

pretrained:model.load_state_dict(update_weight(model.state_dict(),

torch.load(pretrained)[model]))if

fuse:replace_batchnorm(model)return

modeldef

pretrained_cfgNone,model_cfgEfficientViT_m3):model

EfficientViT(frozen_stagesfrozen_stages,

**model_cfg)if

pretrained:model.load_state_dict(update_weight(model.state_dict(),

torch.load(pretrained)[model]))if

fuse:replace_batchnorm(model)return

modeldef

pretrained_cfgNone,model_cfgEfficientViT_m4):model

EfficientViT(frozen_stagesfrozen_stages,

**model_cfg)if

pretrained:model.load_state_dict(update_weight(model.state_dict(),

torch.load(pretrained)[model]))if

fuse:replace_batchnorm(model)return

modeldef

pretrained_cfgNone,model_cfgEfficientViT_m5):model

EfficientViT(frozen_stagesfrozen_stages,

**model_cfg)if

pretrained:model.load_state_dict(update_weight(model.state_dict(),

torch.load(pretrained)[model]))if

fuse:replace_batchnorm(model)return

modeldef

1model_dict.update(temp_dict)print(floading

weights...

第一步还是建立文件我们找到如下ultralytics/nn/modules文件夹下建立一个目录名字呢就是Addmodules文件夹(用群内的文件的话已经有了无需新建)然后在其内部建立一个新的py文件将核心代码复制粘贴进去即可。

此处需要注意我们之前已经修改过一个EfficientViT了所以这里需要加一个2其模型为名字重复实际不是一个。

4.2

第二步我们在该目录下创建一个新的py文件名字为__init__.py(用群内的文件的话已经有了无需新建)然后在其内部导入我们的检测头如下图所示。

4.3

第三步我门中到如下文件ultralytics/nn/tasks.py进行导入和注册我们的模块(用群内的文件的话已经有了无需重新导入直接开始第四步即可)

从今天开始以后的教程就都统一成这个样子了因为我默认大家用了我群内的文件来进行修改

4.4

找到七百多行大概把具体看图片按照图片来修改就行添加红框内的部分注意没有()只是函数名。

elif

str(m)[8:-2].replace(__main__.,

module

verbose:LOGGER.info(f{i:3}{str(f):20}{n_:3}{m.np:10.0f}

printsave.extend(x

可以在图片中开代码行数没有离开task.py文件都是同一个文件。

同时这个部分有好几个前向传播都很相似大家不要看错了是70多行左右的同时我后面提供了代码大家直接复制粘贴即可有时间我针对这里会出一个视频。

代码如下-

profile:self._profile_one_layer(m,

dt)if

self.save:y.append(i)else:y.append(None)x

x[-1]

visualize:feature_visualization(x,

m.type,

到这里就完成了修改部分但是这里面细节很多大家千万要注意不要替换多余的代码导致报错也不要拉下任何一部都会导致运行失败而且报错很难排查很难排查

关注我的其实都知道我大部分的修改都是一样的这个网络需要额外的修改一步就是s一个参数将下面的s改为640即可完美运行

修改八

我们找到如下文件ultralytics/utils/torch_utils.py按照如下的图片进行修改否则容易打印不出来计算量。

注意事项

如果大家在验证的时候报错形状不匹配的错误可以固定验证集的图片尺寸方法如下

找到下面这个文件ultralytics/models/yolo/detect/train.py然后其中有一个类是DetectionTrainer

class中的build_dataset函数中的一个参数rectmode

val改为rectFalse

https://docs.ultralytics.com/tasks/detect#

Parameters

大家可以下载官方的与训练权重进行加载训练用字符串格式放在参数list里就行-

[-1,

warnings.filterwarnings(ignore)

from

YOLO(替换你的yaml文件地址)model.load(yolov8n.pt)

model.train(datar你的数据集的地址,cacheFalse,imgsz640,epochs150,batch4,close_mosaic0,workers0,device0,optimizerSGDampFalse,)六、成功运行记录

下面是成功运行的截图已经完成了有1个epochs的训练图片太大截不全第2个epochs了。

七、本文总结

到此本文的正式分享内容就结束了在这里给大家推荐我的YOLOv8改进有效涨点专栏本专栏目前为新开的平均质量分98分后期我会根据各种最新的前沿顶会进行论文复现也会对一些老的改进机制进行补充如果大家觉得本文帮助到你了订阅本专栏关注后续更多的更新~

专栏回顾YOLOv8改进系列专栏——本专栏持续复习各种顶会内容——科研必备



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback