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

网站一般用什么服务器如何创建网站的第一步

网站一般用什么服务器,如何创建网站的第一步,大连市网站制作电话,网站管理员登陆不了文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 可逆柱状结构#xff08;RevCol#xff09;是一种网络结构#xff0c;它受到GLOM#xff08;Global Columnar Memory#xff09;的启发。RevCol由N个子网络#xff08;或称为… 文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 可逆柱状结构RevCol是一种网络结构它受到GLOMGlobal Columnar Memory的启发。RevCol由N个子网络或称为列组成每个子网络的结构和功能都是相同的。这种结构可以有效地解决信息崩溃的问题通过在前面的列中添加额外的监督以保持特征和输入图像之间的互信息。此外RevCol可以逐渐解耦语义和低级信息从而提取和利用任务相关信息来进一步提高性能。在实现上对于中间监督采用了加权求和的方式将两个损失合并对于所有变体的RevCol通过实验确定将监督头添加到特定的列中。 可逆柱状结构在图像处理中的优势主要体现在以下几个方面 结构灵活性可逆柱状结构具有灵活的结构可以适应各种尺寸和形状的任务而不会像其他网络结构一样受到固定形状的限制。 信息保留可逆柱状结构可以更好地保留图像的信息包括高层次的语义信息和低层次的细节信息。这使得网络可以更好地适应各种复杂的任务比如语义分割、物体检测等。 计算效率由于可逆柱状结构的独特性可以在计算过程中更有效地利用硬件资源从而提高计算效率。此外这种结构也有助于减少计算量从而使得训练和推断过程更快。 泛化能力可逆柱状结构还可以提高网络的泛化能力。这种结构使得网络可以更好地捕捉到图像的本质特征从而在面对新的任务时能够更好地适应。 参数优化可逆柱状结构有助于优化网络的参数。由于这种结构的特性使得网络在训练过程中可以更快地收敛从而节省训练时间并且可以得到更优的网络性能。 多级可逆单元在图像分类、目标检测、图像文本标记、语义分割等任务中表现出了优秀的性能。 在图像分类任务中多级可逆单元能够学习到更丰富的特征表示从而提高了分类的准确性。通过可逆连接的设计该单元能够同时捕获高层次和低层次的特征信息从而在分类时考虑更多的因素。此外多级可逆单元还可以通过共享参数的方式减少模型的复杂度提高模型的泛化能力。 在目标检测任务中多级可逆单元可以结合目标的位置和形状信息从而更准确地检测出目标物体。由于该单元的可逆性它可以适应不同的输入尺寸和形状从而提高了目标检测的鲁棒性。此外多级可逆单元还可以通过与卷积神经网络CNN相结合的方式进一步提高了目标检测的性能。 在图像文本标记任务中多级可逆单元可以结合图像和文本信息从而更准确地识别和提取图像中的文本信息。该单元的可逆性使得它可以适应不同的文本样式和字体变化从而提高了文本提取的准确性。此外多级可逆单元还可以通过端到端训练的方式进一步优化了图像文本标记的性能。 在语义分割任务中多级可逆单元可以结合图像的全局和局部信息从而更准确地分割出图像中的不同语义区域。该单元的可逆性使得它可以适应不同的图像内容和场景变化从而提高了语义分割的准确性。此外多级可逆单元还可以通过与CNN或其他深度学习模型相结合的方式进一步提高了语义分割的性能。 这篇文章使用RevCol完成植物分类任务模型采用revcol_tiny向大家展示如何使用RevCol。revcol_tiny在这个数据集上实现了96%的ACC如下图 通过这篇文章能让你学到 如何使用数据增强包括transforms的增强、CutOut、MixUp、CutMix等增强手段如何实现RevCol模型实现训练如何使用pytorch自带混合精度如何使用梯度裁剪防止梯度爆炸如何使用DP多显卡训练如何绘制loss和acc曲线如何生成val的测评报告如何编写测试脚本测试测试集如何使用余弦退火策略调整学习率如何使用AverageMeter类统计ACC和loss等自定义变量如何理解和统计ACC1和ACC5如何使用EMA 如果基础薄弱对上面的这些功能难以理解可以看我的专栏经典主干网络精讲与实战 这个专栏从零开始时一步一步的讲解这些让大家更容易接受。 安装包 安装timm 使用pip就行命令 pip install timmmixup增强和EMA用到了timm 数据增强Cutout和Mixup 为了提高成绩我在代码中加入Cutout和Mixup这两种增强方式。实现这两种增强需要安装torchtoolbox。安装命令 pip install torchtoolboxCutout实现在transforms中。 from torchtoolbox.transform import Cutout # 数据预处理 transform transforms.Compose([transforms.Resize((224, 224)),Cutout(),transforms.ToTensor(),transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])])需要导入包from timm.data.mixup import Mixup 定义Mixup和SoftTargetCrossEntropy mixup_fn Mixup(mixup_alpha0.8, cutmix_alpha1.0, cutmix_minmaxNone,prob0.1, switch_prob0.5, modebatch,label_smoothing0.1, num_classes12)criterion_train SoftTargetCrossEntropy()Mixup 是一种在图像分类任务中常用的数据增强技术它通过将两张图像以及其对应的标签进行线性组合来生成新的数据和标签。 参数详解 mixup_alpha (float): mixup alpha 值如果 0则 mixup 处于活动状态。 cutmix_alpha (float)cutmix alpha 值如果 0cutmix 处于活动状态。 cutmix_minmax (List[float])cutmix 最小/最大图像比率cutmix 处于活动状态如果不是 None则使用这个 vs alpha。 如果设置了 cutmix_minmax 则cutmix_alpha 默认为1.0 prob (float): 每批次或元素应用 mixup 或 cutmix 的概率。 switch_prob (float): 当两者都处于活动状态时切换cutmix 和mixup 的概率 。 mode (str): 如何应用 mixup/cutmix 参数每个’batch’‘pair’元素对‘elem’元素。 correct_lam (bool): 当 cutmix bbox 被图像边框剪裁时应用。 lambda 校正 label_smoothing (float)将标签平滑应用于混合目标张量。 num_classes (int): 目标的类数。 EMA EMAExponential Moving Average是指数移动平均值。在深度学习中的做法是保存历史的一份参数在一定训练阶段后拿历史的参数给目前学习的参数做一次平滑。具体实现如下 import logging from collections import OrderedDict from copy import deepcopy import torch import torch.nn as nn_logger logging.getLogger(__name__)class ModelEma:def __init__(self, model, decay0.9999, device, resume):# make a copy of the model for accumulating moving average of weightsself.ema deepcopy(model)self.ema.eval()self.decay decayself.device device # perform ema on different device from model if setif device:self.ema.to(devicedevice)self.ema_has_module hasattr(self.ema, module)if resume:self._load_checkpoint(resume)for p in self.ema.parameters():p.requires_grad_(False)def _load_checkpoint(self, checkpoint_path):checkpoint torch.load(checkpoint_path, map_locationcpu)assert isinstance(checkpoint, dict)if state_dict_ema in checkpoint:new_state_dict OrderedDict()for k, v in checkpoint[state_dict_ema].items():# ema model may have been wrapped by DataParallel, and need module prefixif self.ema_has_module:name module. k if not k.startswith(module) else kelse:name knew_state_dict[name] vself.ema.load_state_dict(new_state_dict)_logger.info(Loaded state_dict_ema)else:_logger.warning(Failed to find state_dict_ema, starting from loaded model weights)def update(self, model):# correct a mismatch in state dict keysneeds_module hasattr(model, module) and not self.ema_has_modulewith torch.no_grad():msd model.state_dict()for k, ema_v in self.ema.state_dict().items():if needs_module:k module. kmodel_v msd[k].detach()if self.device:model_v model_v.to(deviceself.device)ema_v.copy_(ema_v * self.decay (1. - self.decay) * model_v) 加入到模型中。 #初始化 if use_ema:model_ema ModelEma(model_ft,decaymodel_ema_decay,devicecpu,resumeresume)# 训练过程中更新完参数后同步update shadow weights def train():optimizer.step()if model_ema is not None:model_ema.update(model)# 将model_ema传入验证函数中 val(model_ema.ema, DEVICE, test_loader)针对没有预训练的模型容易出现EMA不上分的情况这点大家要注意啊 项目结构 RevCol_Demo ├─data1 │ ├─Black-grass │ ├─Charlock │ ├─Cleavers │ ├─Common Chickweed │ ├─Common wheat │ ├─Fat Hen │ ├─Loose Silky-bent │ ├─Maize │ ├─Scentless Mayweed │ ├─Shepherds Purse │ ├─Small-flowered Cranesbill │ └─Sugar beet ├─models │ ├─build.py │ ├─modules.py │ ├─revcol.py │ ├─revcol_function.py │ └─revcol_huge.py ├─mean_std.py ├─makedata.py ├─revcol_tiny_1k.pth ├─train.py └─test.pymean_std.py计算mean和std的值。 makedata.py生成数据集。 ema.pyEMA脚本 train.py:训练RevCol模型 revcol_tiny_1k.pth预训练权重 models来源官方代码对面的代码做了一些适应性修改。这里使用revcol_tiny模型举例将预训练权重放在项目的根目录然后使用torch.load加载预训练权重然后使用model.load_state_dic加载权重如果维度不匹配则将strict设置为False。代码如下 def revcol_tiny(save_memory, inter_supvTrue, drop_path0.1, num_classes1000, kernel_size 3):channels [64, 128, 256, 512]layers [2, 2, 4, 2]num_subnet 4modelFullNet(channels, layers, num_subnet, num_classesnum_classes, drop_path drop_path, save_memorysave_memory, inter_supvinter_supv, kernel_sizekernel_size)checkpoint torch.load(revcol_tiny_1k.pth, map_locationcpu)model.load_state_dict(checkpoint[model],strictFalse)return model计算mean和std 为了使模型更加快速的收敛我们需要计算出mean和std的值新建mean_std.py,插入代码 from torchvision.datasets import ImageFolder import torch from torchvision import transformsdef get_mean_and_std(train_data):train_loader torch.utils.data.DataLoader(train_data, batch_size1, shuffleFalse, num_workers0,pin_memoryTrue)mean torch.zeros(3)std torch.zeros(3)for X, _ in train_loader:for d in range(3):mean[d] X[:, d, :, :].mean()std[d] X[:, d, :, :].std()mean.div_(len(train_data))std.div_(len(train_data))return list(mean.numpy()), list(std.numpy())if __name__ __main__:train_dataset ImageFolder(rootrdata1, transformtransforms.ToTensor())print(get_mean_and_std(train_dataset))数据集结构 运行结果 ([0.3281186, 0.28937867, 0.20702125], [0.09407319, 0.09732835, 0.106712654])把这个结果记录下来后面要用 生成数据集 我们整理还的图像分类的数据集结构是这样的 data ├─Black-grass ├─Charlock ├─Cleavers ├─Common Chickweed ├─Common wheat ├─Fat Hen ├─Loose Silky-bent ├─Maize ├─Scentless Mayweed ├─Shepherds Purse ├─Small-flowered Cranesbill └─Sugar beetpytorch和keras默认加载方式是ImageNet数据集格式格式是 ├─data │ ├─val │ │ ├─Black-grass │ │ ├─Charlock │ │ ├─Cleavers │ │ ├─Common Chickweed │ │ ├─Common wheat │ │ ├─Fat Hen │ │ ├─Loose Silky-bent │ │ ├─Maize │ │ ├─Scentless Mayweed │ │ ├─Shepherds Purse │ │ ├─Small-flowered Cranesbill │ │ └─Sugar beet │ └─train │ ├─Black-grass │ ├─Charlock │ ├─Cleavers │ ├─Common Chickweed │ ├─Common wheat │ ├─Fat Hen │ ├─Loose Silky-bent │ ├─Maize │ ├─Scentless Mayweed │ ├─Shepherds Purse │ ├─Small-flowered Cranesbill │ └─Sugar beet新增格式转化脚本makedata.py,插入代码 import glob import os import shutilimage_listglob.glob(data1/*/*.png) print(image_list) file_dirdata if os.path.exists(file_dir):print(true)#os.rmdir(file_dir)shutil.rmtree(file_dir)#删除再建立os.makedirs(file_dir) else:os.makedirs(file_dir)from sklearn.model_selection import train_test_split trainval_files, val_files train_test_split(image_list, test_size0.3, random_state42) train_dirtrain val_dirval train_rootos.path.join(file_dir,train_dir) val_rootos.path.join(file_dir,val_dir) for file in trainval_files:file_classfile.replace(\\,/).split(/)[-2]file_namefile.replace(\\,/).split(/)[-1]file_classos.path.join(train_root,file_class)if not os.path.isdir(file_class):os.makedirs(file_class)shutil.copy(file, file_class / file_name)for file in val_files:file_classfile.replace(\\,/).split(/)[-2]file_namefile.replace(\\,/).split(/)[-1]file_classos.path.join(val_root,file_class)if not os.path.isdir(file_class):os.makedirs(file_class)shutil.copy(file, file_class / file_name)完成上面的内容就可以开启训练和测试了。
http://www.zqtcl.cn/news/659320/

相关文章:

  • 男女做那事是什 网站软文网
  • 安徽建海建设工程有限公司网站活动推广宣传方案
  • 镇江市建设审图网站关键词优化过程
  • 广州个人网站备案要多久手机软件界面设计
  • 网站建设成都公司哪家好wordpress悬浮代码
  • 制作网站服务公司wordpress文章添加关注公众号
  • 陶瓷企业 瓷砖地板公司网站建设视频解析wordpress
  • 城乡建设厅网站首页wordpress模板汉化教程视频
  • 网站建设怎么设置渐变色手机网站开发服务商
  • 网站备案用座机租用南宁网站建设优化排名
  • 网页制作与网站建设实战大全读后感霞浦建站公司
  • 网站运营与网络推广方案搜索引擎关键字排名优化
  • 前端角度实现网站首页加载慢优化王业美三个字组成的子
  • 阜阳网站是用idea做html网站
  • 商业网站可以选择.org域名吗seo是东莞企业网站排seo
  • 做百度手机网站关键词排名哪个通讯公司的网络好
  • 网站后期维修问题qq网站建设
  • 做网站不会框架网站开发逻辑图
  • 东莞网站制作个性化宜都网站建设
  • 空壳网站查询网络服务提供者不履行法律、行政法规
  • 付费阅读网站代码做网站需要什么软件
  • 泗阳网站设计外贸网站特点
  • 国外logo设计网站推荐网页浏览器证书失效怎么修复
  • asp.net建立手机网站校园网站设计代码
  • 网站图标怎么下载肇庆新农村建设内容在哪个网站
  • 上海建站哪家好临沂建设工程质量 监督网站
  • 中国建设银行网站地图上海最新新闻热点事件
  • wordpress4.95淘宝优化标题都是用什么软件
  • 大网站用wordpress吗网站广告费怎么做分录
  • 江西建设安全网站会展平面设计主要做什么