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

网站里的动效怎么做哪个网站教做ppt

网站里的动效怎么做,哪个网站教做ppt,合肥百度搜索排名优化,wordpress积分 充值打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科…打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型和MobileNet, SqueezeNet等一样主要应用在移动端所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作Pointwise Group Convolution 和 Channel Shuffle这在保持精度的同时大大降低了模型的计算量。因此ShuffleNetV1和MobileNet类似都是通过设计更高效的网络结构来实现模型的压缩和加速。 ShuffleNet在保持不低的准确率的前提下将参数量几乎降低到了最小因此其运算速度较快单位参数量对模型准确率的贡献非常高。了解ShuffleNet更多详细内容详见论文ShuffleNet。 ShuffleNet 模型架构 ShuffleNet最显著的特点在于对不同通道进行重排来解决Group Convolution带来的弊端。通过改进ResNet 的 Bottleneck单元在较小的计算量的情况下达到了较高的准确率。 Pointwise Group Convolution Group Convolution分组卷积原理如下图。分组卷积的每一组的卷积核大小为in_channels/g*k*k一共有g组所有组共有 (in_channels/g*k*k)*out_channels 个参数是正常卷积参数的1/g。分组卷积中每个卷积核只处理输入特征图的一部分通道其优点在于参数量会有所降低但输出通道数仍等于卷积核的数量。Depthwise Convolution深度可分离卷积将组数g分为和输入通道相等的in_channels然后对每一个in_channels做卷积操作每个卷积核只处理一个通道记卷积核大小为1*k*k则卷积核参数量为in_channels*k*k得到的feature maps通道数与输入通道数相等Pointwise Group Convolution逐点分组卷积在分组卷积的基础上令每一组的卷积核大小为 1×1 卷积核参数量为(in_channels/g*1*1)*out_channels。 Channel Shuffle Group Convolution的弊端在于不同组别的通道无法进行信息交流堆积 GConv 层后一个问题是不同组之间的特征图是不通信的这就好像分成了g个互不相干的道路每一个人各走各的这可能会降低网络的特征提取能力。这也是XceptionMobileNet等网络采用密集的1x1卷积Dense Pointwise Convolution的原因。 为了解决不同组别通道“近亲繁殖”的问题ShuffleNet优化了大量密集的1x1卷积在使用的情况下计算量占用率达到了惊人的93.4%引入Channel Shuffle机制通道重排。这项操作直观上表现为将不同分组通道均匀分散重组使网络在下一层能处理不同组别通道的信息。 如下图所示对于g组每组有n个通道的特征图首先reshape成g行n列的矩阵再将矩阵转置成n行g列最后进行flatten操作得到新的排列。这些操作都是可微分可导的且计算简单在解决了信息交互的同时符合了ShuffleNet轻量级网络设计的轻量特征。 ShuffleNet模块 如下图ShuffleNet对ResNet中的Bottleneck结构进行由(a)到(b), (c)的更改 将开始和最后的1×1 卷积模块降维、升维改成 Point Wise Group Convolution 为了进行不同通道的信息交流再降维之后进行Channel Shuffle 降采样模块中3×3 Depth Wise Convolution的步长设置为2长宽降为原来的一般因此shortcut中采用步长为2的3×3 平均池化并把相加改成拼接。 ShuffleNet 模块代码 class ShuffleV1Block(nn.Cell):def __init__(self, inp, oup, group, first_group, mid_channels, ksize, stride):super(ShuffleV1Block, self).__init__()self.stride stridepad ksize // 2self.group groupif stride 2:outputs oup - inpelse:outputs oupself.relu nn.ReLU()branch_main_1 [GroupConv(in_channelsinp, out_channelsmid_channels,kernel_size1, stride1, pad_modepad, pad0,groups1 if first_group else group),nn.BatchNorm2d(mid_channels),nn.ReLU(),]branch_main_2 [nn.Conv2d(mid_channels, mid_channels, kernel_sizeksize, stridestride,pad_modepad, paddingpad, groupmid_channels,weight_initxavier_uniform, has_biasFalse),nn.BatchNorm2d(mid_channels),GroupConv(in_channelsmid_channels, out_channelsoutputs,kernel_size1, stride1, pad_modepad, pad0,groupsgroup),nn.BatchNorm2d(outputs),]self.branch_main_1 nn.SequentialCell(branch_main_1)self.branch_main_2 nn.SequentialCell(branch_main_2)if stride 2:self.branch_proj nn.AvgPool2d(kernel_size3, stride2, pad_modesame)def construct(self, old_x):left old_xright old_xout old_xright self.branch_main_1(right)if self.group 1:right self.channel_shuffle(right)right self.branch_main_2(right)if self.stride 1:out self.relu(left right)elif self.stride 2:left self.branch_proj(left)out ops.cat((left, right), 1)out self.relu(out)return outdef channel_shuffle(self, x):batchsize, num_channels, height, width ops.shape(x)group_channels num_channels // self.groupx ops.reshape(x, (batchsize, group_channels, self.group, height, width))x ops.transpose(x, (0, 2, 1, 3, 4))x ops.reshape(x, (batchsize, num_channels, height, width))return x 构建ShuffleNet网络 ShuffleNet网络结构如下图。以输入图像 224×224组数3g 3为例首先通过数量24卷积核大小为3×3 stride为2的卷积层输出特征图大小为112×112 channel为24然后通过stride为2的最大池化层输出特征图大小为56×56 channel数不变再堆叠3个ShuffleNet模块Stage2, Stage3, Stage4三个模块分别重复4次、8次、4次其中每个模块开始先经过一次下采样模块上图(c)使特征图长宽减半channel翻倍Stage2的下采样模块除外将channel数从24变为240随后经过全局平均池化输出大小为1×1×960 再经过全连接层和softmax得到分类概率。 模块代码 class ShuffleNetV1(nn.Cell):def __init__(self, n_class1000, model_size2.0x, group3):super(ShuffleNetV1, self).__init__()print(model size is , model_size)self.stage_repeats [4, 8, 4]self.model_size model_sizeif group 3:if model_size 0.5x:self.stage_out_channels [-1, 12, 120, 240, 480]elif model_size 1.0x:self.stage_out_channels [-1, 24, 240, 480, 960]elif model_size 1.5x:self.stage_out_channels [-1, 24, 360, 720, 1440]elif model_size 2.0x:self.stage_out_channels [-1, 48, 480, 960, 1920]else:raise NotImplementedErrorelif group 8:if model_size 0.5x:self.stage_out_channels [-1, 16, 192, 384, 768]elif model_size 1.0x:self.stage_out_channels [-1, 24, 384, 768, 1536]elif model_size 1.5x:self.stage_out_channels [-1, 24, 576, 1152, 2304]elif model_size 2.0x:self.stage_out_channels [-1, 48, 768, 1536, 3072]else:raise NotImplementedErrorinput_channel self.stage_out_channels[1]self.first_conv nn.SequentialCell(nn.Conv2d(3, input_channel, 3, 2, pad, 1, weight_initxavier_uniform, has_biasFalse),nn.BatchNorm2d(input_channel),nn.ReLU(),)self.maxpool nn.MaxPool2d(kernel_size3, stride2, pad_modesame)features []for idxstage in range(len(self.stage_repeats)):numrepeat self.stage_repeats[idxstage]output_channel self.stage_out_channels[idxstage 2]for i in range(numrepeat):stride 2 if i 0 else 1first_group idxstage 0 and i 0features.append(ShuffleV1Block(input_channel, output_channel,groupgroup, first_groupfirst_group,mid_channelsoutput_channel // 4, ksize3, stridestride))input_channel output_channelself.features nn.SequentialCell(features)self.globalpool nn.AvgPool2d(7)self.classifier nn.Dense(self.stage_out_channels[-1], n_class)def construct(self, x):x self.first_conv(x)x self.maxpool(x)x self.features(x)x self.globalpool(x)x ops.reshape(x, (-1, self.stage_out_channels[-1]))x self.classifier(x)return x 模型训练和评估 采用CIFAR-10数据集对ShuffleNet进行预训练。 CIFAR-10共有60000张32*32的彩色图像均匀地分为10个类别其中50000张图片作为训练集10000图片作为测试集。使用 mindspore.dataset.Cifar10Dataset 接口下载并加载CIFAR-10的训练集。目前仅支持二进制版本CIFAR-10 binary version。 from download import download import mindspore as ms from mindspore.dataset import Cifar10Dataset from mindspore.dataset import vision, transformsurl https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/cifar-10-binary.tar.gzdownload(url, ./dataset, kindtar.gz, replaceTrue)def get_dataset(train_dataset_path, batch_size, usage):image_trans []if usage train:image_trans [vision.RandomCrop((32, 32), (4, 4, 4, 4)),vision.RandomHorizontalFlip(prob0.5),vision.Resize((224, 224)),vision.Rescale(1.0 / 255.0, 0.0),vision.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]),vision.HWC2CHW()]elif usage test:image_trans [vision.Resize((224, 224)),vision.Rescale(1.0 / 255.0, 0.0),vision.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]),vision.HWC2CHW()]label_trans transforms.TypeCast(ms.int32)dataset Cifar10Dataset(train_dataset_path, usageusage, shuffleTrue)dataset dataset.map(image_trans, image)dataset dataset.map(label_trans, label)dataset dataset.batch(batch_size, drop_remainderTrue)return datasetdataset get_dataset(./dataset/cifar-10-batches-bin, 128, train) batches_per_epoch dataset.get_dataset_size() ## 390 模型训练 用随机初始化的参数做预训练。 1首先调用ShuffleNetV1定义网络参数量选择2.0x并定义损失函数为交叉熵损失学习率经过4轮的warmup后采用余弦退火优化器采用Momentum。 2最后用train.model中的Model接口将模型、损失函数、优化器封装在model中并用model.train()对网络进行训练。将ModelCheckpoint、CheckpointConfig、TimeMonitor和LossMonitor传入回调函数中将会打印训练的轮数、损失和时间并将ckpt文件保存在当前目录下。 import time import mindspore import numpy as np from mindspore import Tensor, nn from mindspore.train import ModelCheckpoint, CheckpointConfig, TimeMonitor, LossMonitor, Model, Top1CategoricalAccuracy, Top5CategoricalAccuracydef train():mindspore.set_context(modemindspore.PYNATIVE_MODE, device_targetAscend)net ShuffleNetV1(model_size2.0x, n_class10)loss nn.CrossEntropyLoss(weightNone, reductionmean, label_smoothing0.1)min_lr 0.0005base_lr 0.05lr_scheduler mindspore.nn.cosine_decay_lr(min_lr,base_lr,batches_per_epoch*250,batches_per_epoch,decay_epoch250)lr Tensor(lr_scheduler[-1])optimizer nn.Momentum(paramsnet.trainable_params(), learning_ratelr, momentum0.9, weight_decay0.00004, loss_scale1024)loss_scale_manager ms.amp.FixedLossScaleManager(1024, drop_overflow_updateFalse)model Model(net, loss_fnloss, optimizeroptimizer, amp_levelO3, loss_scale_managerloss_scale_manager)callback [TimeMonitor(), LossMonitor()]save_ckpt_path ./config_ckpt CheckpointConfig(save_checkpoint_stepsbatches_per_epoch, keep_checkpoint_max5)ckpt_callback ModelCheckpoint(shufflenetv1, directorysave_ckpt_path, configconfig_ckpt)callback [ckpt_callback]print( Starting Training )start_time time.time()# 由于时间原因epoch 5可根据需求进行调整model.train(5, dataset, callbackscallback)use_time time.time() - start_timehour str(int(use_time // 60 // 60))minute str(int(use_time // 60 % 60))second str(int(use_time % 60))print(total time: hour h minute m second s)print( Train Success )if __name__ __main__:train() 模型评估 设置好评估模型的路径后加载数据集并设置Top 1, Top 5的评估标准最后用model.eval()接口对模型进行评估。 from mindspore import load_checkpoint, load_param_into_netdef test():mindspore.set_context(modemindspore.GRAPH_MODE, device_targetAscend)dataset get_dataset(./dataset/cifar-10-batches-bin, 128, test)net ShuffleNetV1(model_size2.0x, n_class10)param_dict load_checkpoint(shufflenetv1-5_390.ckpt)load_param_into_net(net, param_dict)net.set_train(False)loss nn.CrossEntropyLoss(weightNone, reductionmean, label_smoothing0.1)eval_metrics {Loss: nn.Loss(), Top_1_Acc: Top1CategoricalAccuracy(),Top_5_Acc: Top5CategoricalAccuracy()}model Model(net, loss_fnloss, metricseval_metrics)start_time time.time()res model.eval(dataset, dataset_sink_modeFalse)use_time time.time() - start_timehour str(int(use_time // 60 // 60))minute str(int(use_time // 60 % 60))second str(int(use_time % 60))log result: str(res) , ckpt: ./shufflenetv1-5_390.ckpt \ , time: hour h minute m second sprint(log)filename ./eval_log.txtwith open(filename, a) as file_object:file_object.write(log \n)if __name__ __main__:test() 模型预测 import mindspore import matplotlib.pyplot as plt import mindspore.dataset as dsnet ShuffleNetV1(model_size2.0x, n_class10) show_lst [] param_dict load_checkpoint(shufflenetv1-5_390.ckpt) load_param_into_net(net, param_dict) model Model(net) dataset_predict ds.Cifar10Dataset(dataset_dir./dataset/cifar-10-batches-bin, shuffleFalse, usagetrain) dataset_show ds.Cifar10Dataset(dataset_dir./dataset/cifar-10-batches-bin, shuffleFalse, usagetrain) dataset_show dataset_show.batch(16) show_images_lst next(dataset_show.create_dict_iterator())[image].asnumpy() image_trans [vision.RandomCrop((32, 32), (4, 4, 4, 4)),vision.RandomHorizontalFlip(prob0.5),vision.Resize((224, 224)),vision.Rescale(1.0 / 255.0, 0.0),vision.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]),vision.HWC2CHW()] dataset_predict dataset_predict.map(image_trans, image) dataset_predict dataset_predict.batch(16) class_dict {0:airplane, 1:automobile, 2:bird, 3:cat, 4:deer, 5:dog, 6:frog, 7:horse, 8:ship, 9:truck} # 推理效果展示(上方为预测的结果下方为推理效果图片) plt.figure(figsize(16, 5)) predict_data next(dataset_predict.create_dict_iterator()) output model.predict(ms.Tensor(predict_data[image])) pred np.argmax(output.asnumpy(), axis1) index 0 for image in show_images_lst:plt.subplot(2, 8, index1)plt.title({}.format(class_dict[pred[index]]))index 1plt.imshow(image)plt.axis(off) plt.show()
http://www.w-s-a.com/news/558765/

相关文章:

  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些
  • 网站开发制作的流程是什么网页打不开显示不安全怎么办
  • 网络网站开发设计安徽建设工程信息网怎么打不开了
  • 百度网站推广申请深圳公众号制作
  • 百度站长怎么做网站维护中国深圳航空公司官网
  • xampp安装网站模板海南一家天涯社区
  • 网站建设 管理系统开发仿租号网站源码网站开发
  • 怎么自己弄网站免费网站设计用什么软件