python做公司网站兰州今天发生的重大新闻

news/2025/9/24 0:50:52/文章来源:
python做公司网站,兰州今天发生的重大新闻,山西网架公司,营销型门户网站建设前言 大家好#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进#xff0c;内容持续更新#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…前言 大家好这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进内容持续更新每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本同时修改内容也支持ResNet32、ResNet101和PPHGNet版本其中ResNet为RT-DETR官方版本11移植过来的参数量基本保持一致(误差很小很小)不同于ultralytics仓库版本的ResNet官方版本同时ultralytics仓库的一些参数是和RT-DETR相冲的所以我也是会教大家调好一些参数和代码真正意义上的跑ultralytics的和RT-DETR官方版本的无区别。 欢迎大家订阅本专栏一起学习RT-DETR    一、本文介绍 本文给大家带来的特征提取网络是华为 | Ghostnetv1其是一种专为移动端设计的特征提取网络网络模型非常的小其推理速度非常快对于追求极致FPS的读者来说其是一个非常好的选择其网络效果也是完爆经典模型MobileNet系列的特征提取网络同时我也将该模型进行了实验其GFLOPs相对于ResNet18的2KW参数下降了接近一半精度却没有下降太多。同时欢迎大家订阅本专栏本专栏每周更新3-5篇最新机制更有包含我所有改进的文件和交流群提供给大家。 专栏链接RT-DETR剑指论文专栏持续复现各种顶会内容——论文收割机RT-DETR 目录 一、本文介绍 二、GhostNetV1卷积原理 2.1 GhostNet的基本原理 2.2 Ghost Module 2.3 线性变换 2.4 Ghost Bottlenecks 三、 GhsetNetV1的核心代码 四、手把手教你添加GhsetNetV1 4.1 修改一 4.2 修改二  4.3 修改三  4.4 修改四 4.5 修改五 4.6 修改六 4.7 修改七  4.8 修改八 4.9 RT-DETR不能打印计算量问题的解决 4.10 可选修改 五、GhsetNetV1的yaml文件 5.1 yaml文件 5.2 运行文件 5.3 成功训练截图 六、全文总结 二、GhostNetV1卷积原理 论文地址 官方论文地址 代码地址 官方代码地址 ​ 2.1 GhostNet的基本原理 华为的GhostNet是一种轻量级卷积神经网络旨在在计算资源有限的嵌入式设备上实现高性能的图像分类。GhostNet的基本原理包括以下关键概念 1. Ghost Module幽灵模块GhostNet引入了Ghost模块这是其核心组件。Ghost模块的主要目标是生成更多的特征图而不会增加过多的计算负担。Ghost模块的设计允许在特征图中引入额外的信息以提高模型性能。 2. 线性变换Ghost模块通过应用一系列廉价的线性变换例如卷积和标准化来生成所谓的“幽灵”特征图。这些变换具有较低的计算成本但可以生成额外的特征图以丰富模型的表示能力。 3. Ghost Bottlenecks为了构建GhostNet可以堆叠多个Ghost模块形成所谓的Ghost Bottlenecks。这样可以创建深度轻量级网络适用于嵌入式设备和移动应用。 GhostNet的关键思想在于通过引入Ghost模块以较低的计算成本增加了特征图的数量从而提高了模型的性能。这种方法在计算资源有限的情况下尤其适用于图像分类任务并在一些基准测试中表现出了很好的性能。  2.2 Ghost Module GhostNet中的Ghost Module幽灵模块是该网络的关键组件之一旨在以低计算成本生成更多的特征图从而提高模型的性能。以下是Ghost Module的主要特点和原理 1. 生成额外特征图Ghost Module的主要目标是生成额外的特征图而不会增加大量的计算负担。这些额外的特征图有助于丰富模型的表示能力提高图像分类性能。 2. 线性变换Ghost Module使用一系列线性变换来生成这些额外的特征图。这些线性变换通常包括卷积和其他简单的操作其计算成本远低于传统的卷积操作。这些线性操作 Φ 作用于每个通道从而生成更多的特征图。 3. 输出特征图Ghost Module的输出数据Y包括了生成的n个特征图其中n m · sm是Ghost Module输入数据的通道数s是线性变换的数量。这些特征图可以用于后续的任务如图像分类。 4. 多种线性操作在实际应用中Ghost Module可以包含多种不同的线性操作例如3×3和5×5的线性核。这些不同的操作可以在实验中进行分析和比较以确定哪种操作在特定任务上表现最佳。 下图对比了卷积层和提出的Ghost模块 ​ 可以看出Ghost模块与现有的高效卷积方案存在以下差异  i) 与1×1逐点卷积单元相比Ghost模块中的主要卷积可以具有自定义的核大小。 ii) 现有方法采用逐点卷积来处理跨通道的特征然后采用深度卷积来处理空间信息。相比之下Ghost模块采用普通卷积首先生成一些内在特征图然后利用廉价的线性操作来增强特征并增加通道数。 iii) 处理每个特征图的操作在先前的高效架构中通常限于深度卷积或移位操作而Ghost模块中的线性操作可以具有较大的多样性。 iv) 此外在Ghost模块中恒等映射与线性变换并行使用以保留内在特征图。 总结GhostNet中的Ghost Module是一种旨在以低计算成本生成更多特征图的创新组件。它通过引入额外的特征图丰富了模型的表示能力提高了性能特别适用于在计算资源有限的环境中实现高性能的图像分类模型。 2.3 线性变换 GhostNet中的线性变换用于生成幽灵特征图。Ghost Module通过一系列廉价的线性变换来增强模型的表示能力。 我总结其主要特点和原理如下 1. 应用于内在特征线性变换是应用于Ghost Module中已生成的内在特征图Intrinsic Feature Maps的。这些内在特征图是由主要卷积操作生成的通常包含有限数量的特征。 2. 生成幽灵特征每个内在特征图都会经过一系列线性变换以生成幽灵特征图。这些幽灵特征图是额外生成的用于丰富模型的特征表示。 3. 自定义操作Ghost Module中的线性操作可以具有不同的形式例如3×3和5×5的线性核。这些不同的操作允许模型根据任务的需要自定义特征生成过程。 5. 保留内在特征Ghost Module中的最后一个线性变换通常是恒等映射用于保留内在特征。这确保了生成的幽灵特征与原始特征之间的一致性。 总结GhostNet中的线性变换是为了通过低成本的操作生成额外的特征从而提高模型的性能。这种方法在计算资源受限的情况下尤其有用可以帮助模型更好地处理图像分类等任务。Ghost Module中的线性操作具有灵活性可以根据具体任务进行调整和优化。 2.4 Ghost Bottlenecks GhostNet的Ghost Bottlenecks幽灵瓶颈专门为小型卷积神经网络CNNs设计。Ghost Bottlenecks采用了Ghost Module的概念并结合了残差块的思想用于提高模型的性能。 GhostNet中Ghost Bottlenecks的主要特点 1. 模块组成Ghost Bottlenecks主要由两个堆叠的Ghost模块组成。这些Ghost模块在Ghost Bottleneck内进行堆叠以实现更强大的特征提取和表示。 2. 扩展层第一个Ghost模块充当扩展层其主要功能是增加通道数。这个扩展层通过增加通道数来增强特征的表示能力从而有助于提高模型性能。 3. 收缩层第二个Ghost模块充当收缩层其主要功能是减少通道数以与快捷路径匹配。这个步骤有助于控制模型的复杂性并确保模型在不增加计算负担的情况下能够保持高性能。 4. 快捷连接Ghost Bottlenecks中还包括快捷连接它连接在两个Ghost模块的输入和输出之间。这种连接有助于信息的传递和梯度的流动以更好地训练模型。 5. 非线性激活在每个Ghost Bottleneck内部都应用批归一化BN和ReLU非线性激活函数。但是根据MobileNetV2的建议在第二个Ghost模块之后不使用ReLU。 接下来为大家展示Ghost瓶颈G-bneck示意图 左边步幅为1的Ghost瓶颈右边步幅为2的Ghost瓶颈  ​ Ghost瓶颈在外观上与ResNe中的基本残差块类似其中集成了多个卷积层和快捷连接。 Ghost瓶颈主要由两个堆叠的Ghost模块组成。 第一个Ghost模块充当扩展层增加通道数。我们将输出通道数与输入通道数之间的比率称为扩展比。 第二个Ghost模块将通道数减少以匹配快捷路径。然后将快捷连接连接在这两个Ghost模块的输入和输出之间。在每个层之后都应用批归一化BN和ReLU非线性激活函数但是根据MobileNetV2的建议在第二个Ghost模块后不使用ReLU。 总结Ghost Bottlenecks的设计旨在在小型CNNs中提高性能并通过Ghost Module的低成本特性减少计算开销。这使得GhostNet成为在计算资源有限的嵌入式设备上实现高性能图像分类的有力选择。 Ghost Bottlenecks的堆叠增加了模型的深度从而提高了特征的抽象能力有助于更好地适应各种视觉任务。 三、 GhsetNetV1的核心代码 代码的使用方式看章节四 import torch import torch.nn as nn import torch.nn.functional as F import math__all__ [Ghostnetv1]def _make_divisible(v, divisor, min_valueNone):This function is taken from the original tf repo.It ensures that all layers have a channel number that is divisible by 8It can be seen here:https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet.pyif min_value is None:min_value divisornew_v max(min_value, int(v divisor / 2) // divisor * divisor)# Make sure that round down does not go down by more than 10%.if new_v 0.9 * v:new_v divisorreturn new_vdef hard_sigmoid(x, inplace: bool False):if inplace:return x.add_(3.).clamp_(0., 6.).div_(6.)else:return F.relu6(x 3.) / 6.class SqueezeExcite(nn.Module):def __init__(self, in_chs, se_ratio0.25, reduced_base_chsNone,act_layernn.ReLU, gate_fnhard_sigmoid, divisor4, **_):super(SqueezeExcite, self).__init__()self.gate_fn gate_fnreduced_chs _make_divisible((reduced_base_chs or in_chs) * se_ratio, divisor)self.avg_pool nn.AdaptiveAvgPool2d(1)self.conv_reduce nn.Conv2d(in_chs, reduced_chs, 1, biasTrue)self.act1 act_layer(inplaceTrue)self.conv_expand nn.Conv2d(reduced_chs, in_chs, 1, biasTrue)def forward(self, x):x_se self.avg_pool(x)x_se self.conv_reduce(x_se)x_se self.act1(x_se)x_se self.conv_expand(x_se)x x * self.gate_fn(x_se)return xclass ConvBnAct(nn.Module):def __init__(self, in_chs, out_chs, kernel_size,stride1, act_layernn.ReLU):super(ConvBnAct, self).__init__()self.conv nn.Conv2d(in_chs, out_chs, kernel_size, stride, kernel_size//2, biasFalse)self.bn1 nn.BatchNorm2d(out_chs)self.act1 act_layer(inplaceTrue)def forward(self, x):x self.conv(x)x self.bn1(x)x self.act1(x)return xclass GhostModule(nn.Module):def __init__(self, inp, oup, kernel_size1, ratio2, dw_size3, stride1, reluTrue):super(GhostModule, self).__init__()self.oup oupinit_channels math.ceil(oup / ratio)new_channels init_channels*(ratio-1)self.primary_conv nn.Sequential(nn.Conv2d(inp, init_channels, kernel_size, stride, kernel_size//2, biasFalse),nn.BatchNorm2d(init_channels),nn.ReLU(inplaceTrue) if relu else nn.Sequential(),)self.cheap_operation nn.Sequential(nn.Conv2d(init_channels, new_channels, dw_size, 1, dw_size//2, groupsinit_channels, biasFalse),nn.BatchNorm2d(new_channels),nn.ReLU(inplaceTrue) if relu else nn.Sequential(),)def forward(self, x):x1 self.primary_conv(x)x2 self.cheap_operation(x1)out torch.cat([x1,x2], dim1)return out[:,:self.oup,:,:]class GhostBottleneck(nn.Module): Ghost bottleneck w/ optional SEdef __init__(self, in_chs, mid_chs, out_chs, dw_kernel_size3,stride1, act_layernn.ReLU, se_ratio0.):super(GhostBottleneck, self).__init__()has_se se_ratio is not None and se_ratio 0.self.stride stride# Point-wise expansionself.ghost1 GhostModule(in_chs, mid_chs, reluTrue)# Depth-wise convolutionif self.stride 1:self.conv_dw nn.Conv2d(mid_chs, mid_chs, dw_kernel_size, stridestride,padding(dw_kernel_size-1)//2,groupsmid_chs, biasFalse)self.bn_dw nn.BatchNorm2d(mid_chs)# Squeeze-and-excitationif has_se:self.se SqueezeExcite(mid_chs, se_ratiose_ratio)else:self.se None# Point-wise linear projectionself.ghost2 GhostModule(mid_chs, out_chs, reluFalse)# shortcutif (in_chs out_chs and self.stride 1):self.shortcut nn.Sequential()else:self.shortcut nn.Sequential(nn.Conv2d(in_chs, in_chs, dw_kernel_size, stridestride,padding(dw_kernel_size-1)//2, groupsin_chs, biasFalse),nn.BatchNorm2d(in_chs),nn.Conv2d(in_chs, out_chs, 1, stride1, padding0, biasFalse),nn.BatchNorm2d(out_chs),)def forward(self, x):residual x# 1st ghost bottleneckx self.ghost1(x)# Depth-wise convolutionif self.stride 1:x self.conv_dw(x)x self.bn_dw(x)# Squeeze-and-excitationif self.se is not None:x self.se(x)# 2nd ghost bottleneckx self.ghost2(x)x self.shortcut(residual)return xclass GhostNet(nn.Module):def __init__(self, cfgs, num_classes1000, width1.0, dropout0.2):super(GhostNet, self).__init__()# setting of inverted residual blocksself.cfgs cfgsself.dropout dropout# building first layeroutput_channel _make_divisible(16 * width, 4)self.conv_stem nn.Conv2d(3, output_channel, 3, 2, 1, biasFalse)self.bn1 nn.BatchNorm2d(output_channel)self.act1 nn.ReLU(inplaceTrue)input_channel output_channel# building inverted residual blocksstages []block GhostBottleneckfor cfg in self.cfgs:layers []for k, exp_size, c, se_ratio, s in cfg:output_channel _make_divisible(c * width, 4)hidden_channel _make_divisible(exp_size * width, 4)layers.append(block(input_channel, hidden_channel, output_channel, k, s,se_ratiose_ratio))input_channel output_channelstages.append(nn.Sequential(*layers))output_channel _make_divisible(exp_size * width, 4)stages.append(nn.Sequential(ConvBnAct(input_channel, output_channel, 1)))input_channel output_channelself.blocks nn.Sequential(*stages)self.width_list [i.size(1) for i in self.forward(torch.randn(1, 3, 640, 640))]def forward(self, x):unique_tensors {}x self.conv_stem(x)x self.bn1(x)x self.act1(x)for model in self.blocks:x model(x)if self.dropout 0.:x F.dropout(x, pself.dropout, trainingself.training)width, height x.shape[2], x.shape[3]unique_tensors[(width, height)] xresult_list list(unique_tensors.values())[-4:]return result_listdef Ghostnetv1(**kwargs):Constructs a GhostNet modelcfgs [# k, t, c, SE, s# stage1[[3, 16, 16, 0, 1]],# stage2[[3, 48, 24, 0, 2]],[[3, 72, 24, 0, 1]],# stage3[[5, 72, 40, 0.25, 2]],[[5, 120, 40, 0.25, 1]],# stage4[[3, 240, 80, 0, 2]],[[3, 200, 80, 0, 1],[3, 184, 80, 0, 1],[3, 184, 80, 0, 1],[3, 480, 112, 0.25, 1],[3, 672, 112, 0.25, 1]],# stage5[[5, 672, 160, 0.25, 2]],[[5, 960, 160, 0, 1],[5, 960, 160, 0.25, 1],[5, 960, 160, 0, 1],[5, 960, 160, 0.25, 1]]]return GhostNet(cfgs, **kwargs)if __name____main__:model Ghostnetv1()model.eval()input torch.randn(16,3,224,224)y model(input)print(y.size()) 四、手把手教你添加GhsetNetV1 下面教大家如何修改该网络结构主干网络结构的修改步骤比较复杂我也会将task.py文件上传到CSDN的文件中大家如果自己修改不正确可以尝试用我的task.py文件替换你的然后只需要修改其中的第1、2、3、5步即可。 ⭐修改过程中大家一定要仔细⭐ 4.1 修改一 首先我门中到如下“ultralytics/nn”的目录我们在这个目录下在创建一个新的目录名字为Addmodules此文件之后就用于存放我们的所有改进机制之后我们在创建的目录内创建一个新的py文件复制粘贴进去 可以根据文章改进机制来起这里大家根据自己的习惯命名即可。 4.2 修改二  第二步我们在我们创建的目录内创建一个新的py文件名字为__init__.py只需要创建一个即可然后在其内部导入我们本文的改进机制即可其余代码均为未发大家没有不用理会。 4.3 修改三  第三步我门中到如下文件ultralytics/nn/tasks.py然后在开头导入我们的所有改进机制如果你用了我多个改进机制这一步只需要修改一次即可。 4.4 修改四 添加如下两行代码 ​ 4.5 修改五 找到七百多行大概把具体看图片按照图片来修改就行添加红框内的部分注意没有()只是函数名此处我的文件里已经添加很多了后期都会发出来大家没有的不用理会即可。 elif m in {自行添加对应的模型即可下面都是一样的}:m m(*args)c2 m.width_list # 返回通道列表backbone True 4.6 修改六 用下面的代码替换红框内的内容。  ​ if isinstance(c2, list):m_ mm_.backbone True else:m_ nn.Sequential(*(m(*args) for _ in range(n))) if n 1 else m(*args) # modulet str(m)[8:-2].replace(__main__., ) # module type m.np sum(x.numel() for x in m_.parameters()) # number params m_.i, m_.f, m_.type i 4 if backbone else i, f, t # attach index, from index, type if verbose:LOGGER.info(f{i:3}{str(f):20}{n_:3}{m.np:10.0f} {t:45}{str(args):30}) # print save.extend(x % (i 4 if backbone else i) for x in ([f] if isinstance(f, int) else f) if x ! -1) # append to savelist layers.append(m_) if i 0:ch [] if isinstance(c2, list):ch.extend(c2)if len(c2) ! 5:ch.insert(0, 0) else:ch.append(c2) 4.7 修改七  修改七这里非常要注意不是文件开头YOLOv8的那predict是400行的RTDETR的predict初始模型如下用我给的代码替换即可 ​ 代码如下- def predict(self, x, profileFalse, visualizeFalse, batchNone, augmentFalse, embedNone):Perform a forward pass through the model.Args:x (torch.Tensor): The input tensor.profile (bool, optional): If True, profile the computation time for each layer. Defaults to False.visualize (bool, optional): If True, save feature maps for visualization. Defaults to False.batch (dict, optional): Ground truth data for evaluation. Defaults to None.augment (bool, optional): If True, perform data augmentation during inference. Defaults to False.embed (list, optional): A list of feature vectors/embeddings to return.Returns:(torch.Tensor): Models output tensor.y, dt, embeddings [], [], [] # outputsfor m in self.model[:-1]: # except the head partif m.f ! -1: # if not from previous layerx y[m.f] if isinstance(m.f, int) else [x if j -1 else y[j] for j in m.f] # from earlier layersif profile:self._profile_one_layer(m, x, dt)if hasattr(m, backbone):x m(x)if len(x) ! 5: # 0 - 5x.insert(0, None)for index, i in enumerate(x):if index in self.save:y.append(i)else:y.append(None)x x[-1] # 最后一个输出传给下一层else:x m(x) # runy.append(x if m.i in self.save else None) # save outputif visualize:feature_visualization(x, m.type, m.i, save_dirvisualize)if embed and m.i in embed:embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flattenif m.i max(embed):return torch.unbind(torch.cat(embeddings, 1), dim0)head self.model[-1]x head([y[j] for j in head.f], batch) # head inferencereturn x 4.8 修改八 我们将下面的s用640替换即可这一步也是部分的主干可以不修改但有的不修改就会报错所以我们还是修改一下。 4.9 RT-DETR不能打印计算量问题的解决 计算的GFLOPs计算异常不打印所以需要额外修改一处 我们找到如下文件ultralytics/utils/torch_utils.py文件内有如下的代码按照如下的图片进行修改大家看好函数就行其中红框的640可能和你的不一样 然后用我给的代码替换掉整个代码即可。 def get_flops(model, imgsz640):Return a YOLO models FLOPs.try:model de_parallel(model)p next(model.parameters())# stride max(int(model.stride.max()), 32) if hasattr(model, stride) else 32 # max stridestride 640im torch.empty((1, 3, stride, stride), devicep.device) # input image in BCHW formatflops thop.profile(deepcopy(model), inputs[im], verboseFalse)[0] / 1E9 * 2 if thop else 0 # stride GFLOPsimgsz imgsz if isinstance(imgsz, list) else [imgsz, imgsz] # expand if int/floatreturn flops * imgsz[0] / stride * imgsz[1] / stride # 640x640 GFLOPsexcept Exception:return 04.10 可选修改 有些读者的数据集部分图片比较特殊在验证的时候会导致形状不匹配的报错如果大家在验证的时候报错形状不匹配的错误可以固定验证集的图片尺寸方法如下 - 找到下面这个文件ultralytics/models/yolo/detect/train.py然后其中有一个类是DetectionTrainer class中的build_dataset函数中的一个参数rectmode val改为rectFalse 五、GhsetNetV1的yaml文件 5.1 yaml文件 大家复制下面的yaml文件然后通过我给大家的运行代码运行即可RT-DETR的调参部分需要后面的文章给大家讲现在目前免费给大家看这一部分不开放。 # Ultralytics YOLO , AGPL-3.0 license # RT-DETR-l object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/rtdetr# Parameters nc: 80 # number of classes scales: # model compound scaling constants, i.e. modelyolov8n-cls.yaml will call yolov8-cls.yaml with scale n# [depth, width, max_channels]l: [1.00, 1.00, 1024]backbone:# [from, repeats, module, args]- [-1, 1, GhsetNetV1, []] # 4head:- [-1, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 5 input_proj.2- [-1, 1, AIFI, [1024, 8]] # 6- [-1, 1, Conv, [256, 1, 1]] # 7, Y5, lateral_convs.0- [-1, 1, nn.Upsample, [None, 2, nearest]] # 8- [3, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 9 input_proj.1- [[-2, -1], 1, Concat, [1]] # 10- [-1, 3, RepC3, [256, 0.5]] # 11, fpn_blocks.0- [-1, 1, Conv, [256, 1, 1]] # 12, Y4, lateral_convs.1- [-1, 1, nn.Upsample, [None, 2, nearest]] # 13- [2, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 14 input_proj.0- [[-2, -1], 1, Concat, [1]] # 15 cat backbone P4- [-1, 3, RepC3, [256, 0.5]] # X3 (16), fpn_blocks.1- [-1, 1, Conv, [256, 3, 2]] # 17, downsample_convs.0- [[-1, 12], 1, Concat, [1]] # 18 cat Y4- [-1, 3, RepC3, [256, 0.5]] # F4 (19), pan_blocks.0- [-1, 1, Conv, [256, 3, 2]] # 20, downsample_convs.1- [[-1, 7], 1, Concat, [1]] # 21 cat Y5- [-1, 3, RepC3, [256, 0.5]] # F5 (22), pan_blocks.1- [[16, 19, 22], 1, RTDETRDecoder, [nc, 256, 300, 4, 8, 3]] # Detect(P3, P4, P5)5.2 运行文件 大家可以创建一个train.py文件将下面的代码粘贴进去然后替换你的文件运行即可开始训练。 import warnings from ultralytics import RTDETR warnings.filterwarnings(ignore)if __name__ __main__:model RTDETR(替换你想要运行的yaml文件)# model.load() # 可以加载你的版本预训练权重model.train(datar替换你的数据集地址即可,cacheFalse,imgsz640,epochs72,batch4,workers0,device0,projectruns/RT-DETR-train,nameexp,# ampTrue) 5.3 成功训练截图 下面是成功运行的截图确保我的改进机制是可用的已经完成了有1个epochs的训练图片太大截不全第2个epochs了。  ​ 六、全文总结 从今天开始正式开始更新RT-DETR剑指论文专栏本专栏的内容会迅速铺开在短期呢大量更新价格也会乘阶梯性上涨所以想要和我一起学习RT-DETR改进可以在前期直接关注本文专栏旨在打造全网最好的RT-DETR专栏为想要发论文的读者进行服务。 专栏链接RT-DETR剑指论文专栏持续复现各种顶会内容——论文收割机RT-DETR ​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

郑州交易网站建设天津网站建设 阿土伯

在当今数字化时代,软件开发成为推动各行各业创新和发展的关键要素。然而,由于软件开发领域的专业性和技术性,跨行业的用户有时难以理解软件开发的过程和方法。本文将探讨一些快速获取用户需求的方式,以便更广泛的跨行业用户能够理…

linux网站环境陕西省建设网站

少儿编程教育是通过编程游戏启蒙、可视化图形编程等课程,培养学生的计算思维和创新解难能力的课程。与成人的编程不同,少儿编程教育并非高等教育那样学习如何写代码、编制应用程序,而是通过编程游戏启蒙、可视化图形编程等课程,培…

网站建设在哪物业建设网站

对于源代码分析有一个基本原则:要找到它的最早期的版本,比如1.0版本。1.0版本奠定了一款框架的基础结构,之后的版本迭代都是基于这套结构进行更新的。所以掌握了基础结构,那也就掌握了这个框架。这个原则适用于世界上绝大多数事务…

信息网站建设wordpress 怎么加入插件

windows计划任务 查看 Windows 自动执行的指令取消 Windows 中的计划任务启动执行计划任务 查看 Windows 自动执行的指令 您可以使用以下方法: 使用任务计划程序:任务计划程序是 Windows 内置的工具,可以用于创建、编辑和管理计划任务。您可…

做网站服务器租一年多少钱阿里云1元域名

快捷操作 快捷键 快捷键功能备注Ctrl P打印 Ctrl W关闭 Ctrl B书签 鼠标放菜单栏,单击右键即可导入/导出 自定义菜单栏文件-->偏好设置-->文档 1、多实例:单击PDF后均重新打开一个新界面。

服务器 多个网站wordpress page页

近年来,随着我国工业化、城镇化步伐的不断加快,城市配电网络取得令人瞩目的发展成果。变配电室是供配电系统的核心,在供配电系统中占有特殊的重要地位[1]。变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段,如有一日遭遇突发情…

天津建设银行网站北京网站设计与网站制作

1、static关键字的作用 修饰局部变量 作用域:无变化 生命周期:函数--->程序(数据段) 特点:只初始化一次 修饰全局变量 作用域:整个工程----->本模块 生命周期:无变化 修饰函数 作…

成都网站建设 全美室内设计网站模板

多线程是 Java 编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的性能和响应能力。本篇博客将深入探讨 Java 多线程,从基础概念到实际应用,适用于 Java 初学者和希望深入了解多线程的开发人员。 什么是多线程&#…

湖北工程建设信息网站网站建设域名

一、Homebrew的镜像设置 对于Java JDK的安装,我们更推荐使用Homebrew来进行安装管理。但Homebrew的curl国外源的下载速度实在是一言难尽,时常还会发生无法访问的情况。 那么我们此时的解决方法就有两种了,第一种便是使用全局的VPN代理进行下载…

电商平台网站大全湖南建设厅网站勘查设计

罗其胜3d角色强化 CGwhat-Maya变形金刚擎天柱建模教程 Pixar in the box - khan academy Siggraph历届优秀动画 CG软件发展史:MAYA动画十年历程 maya 2014奥迪汽车模型制作教程 (yj6k) 海贼王路飞建模教程高清全集 转载于:https://www.cnblog…

手机企业网站源码深圳龙岗有什么好玩的地方

Condition 源码解析 文章目录 Condition 源码解析一、Condition二、Condition 源码解读2.1. lock.newCondition() 获取 Condition 对象2.2. condition.await() 阻塞过程2.3. condition.signal() 唤醒过程2.4. condition.await() 被唤醒后 三、总结 一、Condition 在并发情况下…

厦门定制网站建设网站模板50元

第一部分 安装参考网址: https://blog.csdn.net/a1004084857/article/details/128512612; 以上步骤执行完,进入找到sbin目录,查看下面是不是有nginx可执行文件,如果有在当前sbin下执行./nginx,就会发现NGINX已启动 第…

做哪种类型的网站赚钱呢手机上怎么创建自己的网站

当我们在使用git的时候,又是会有这种情况:当新的需求了的时候。我们需要为此需求新建一个分支,再次分支上进行修改,当经过测试,提交代码时,在将其合并到主分支,或生产分支上。 但是有时候也有失…

外包网站推荐现在室内设计师好做吗

这段时间我们一直规划LSGO Group的学习网络平台,需求部分已经规划完毕,说做就做,开始搭建环境,由于利用PHPMYSQL技术,在服务器端首先安装了WAMPServer,以便提供Apache服务与MYSQL服务! 在代码的…

制作网页的流程步骤免费seo视频教学

AndroidStudio 很多时候会出现提示插件解析失败问题。可按如下步骤进行排查: 1. 翻墙后点击sync 按钮去同步;如果网络没问题,但一直同步失败,可试2. 2. C:\Users\[yourName]\.gradle\caches 中用git bash 等客户端工具去搜同步不…

鞍山市信息网站网站灰色建设

File/file 装入想要调试的可执行文件 run(r) 执行当前被调试的程序 kill(k) 终止正在调试的程序 quit(q) 退出gdb shell 使用户不离开gdb就可以执行Linux的shell命令 backtrace(bt) 回溯跟踪(当对代码进行调试时,run后…

南阳医疗网站制作价格网站建设应走什么会计科目

可以参照 Stanford大神DaphneKoller的概率图模型,里面贝叶斯网络一节讲到了explaining away。我看过之后试着谈谈自己的理解。 explainingaway指的是这样一种情况:对于一个多因一果的问题,假设各种“因”之间都是相互独立的,如果…

一例电动车充电器防反接电路分析

家里电动车充电器不充电了,经过拆开测试,二次侧输出电压正常;且输出线未出现断路,因此判断是防反接晶闸管故障,更换晶闸管后,电路正常工作。简略原理图如下:VCC为二次侧输出电源正极。该防反接电路,不是控正,…

做网站一天能接多少单windows 2008 wordpress

文章目录 前言一、数组的概念二、一维数组的定义三、一维数组的初始化四、一维数组的使用及举例1. 元素顺次前移的问题2. 数组元素逆序调整问题3. 统计输入的各个数据的个数 五、课后练习1. 从数组中查找某个元素2. 求一个数组中元素的平均值和均方差3. 编程统计某班某次考试的…

网站建设蓝图pptwordpress启用特色

在软件开发过程中,项目的构建是一个不可避免的环节。而随着项目规模的增大,手动管理编译过程变得越来越繁琐。为了简化构建流程并实现跨平台支持,CMake作为一种流行的构建系统被广泛采用。本文将介绍CMakeLists.txt文件的结构,以及…