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

网站图片怎么做怎么建网站

网站图片怎么做,怎么建网站,为拟建设的网站申请一个域名,网站的域名用文字搜索怎么做基本介绍 今天的应用实践的领域是计算机视觉领域,更确切的说是图像分类任务,不过,与昨日不同的是,今天所使用的模型是ShuffleNet模型。ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一…

基本介绍

         今天的应用实践的领域是计算机视觉领域,更确切的说是图像分类任务,不过,与昨日不同的是,今天所使用的模型是ShuffleNet模型。ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一样主要应用在移动端,所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。今天会简单介绍一些ShuffleNet模型,并使用CIFAR-10数据集进行训练与评估,最后进行模型预测

ShuffleNet模型简介

        ShuffleNetV1的设计核心是引入了两种操作:Pointwise Group Convolution和Channel Shuffle,这在保持精度的同时大大降低了模型的计算量。因此,ShuffleNetV1和MobileNet类似,都是通过设计更高效的网络结构来实现模型的压缩和加速

  • Pointwise Group Convolution

Group Convolution(分组卷积)原理如下图所示,相比于普通的卷积操作,分组卷积的情况下,每一组的卷积核大小为in_channels/g*k*k,一共有g组,所有组共有(in_channels/g*k*k)*out_channels个参数,是正常卷积参数的1/g。分组卷积中,每个卷积核只处理输入特征图的一部分通道,其优点在于参数量会有所降低,但输出通道数仍等于卷积核的数量

  • Channel Shuffle

        Group Convolution的弊端在于不同组别的通道无法进行信息交流,堆积GConv层后一个问题是不同组之间的特征图是不通信的,这就好像分成了g个互不相干的道路,每一个人各走各的,这可能会降低网络的特征提取能力。这也是Xception,MobileNet等网络采用密集的1x1卷积(Dense Pointwise Convolution)的原因。为了解决不同组别通道“近亲繁殖”的问题,ShuffleNet优化了大量密集的1x1卷积(在使用的情况下计算量占用率达到了惊人的93.4%),引入Channel Shuffle机制(通道重排)。这项操作直观上表现为将不同分组通道均匀分散重组,使网络在下一层能处理不同组别通道的信息。

以上两个结构就是ShuffleNet的主要结构,ShuffleNet的模型代码(MindSpore版)如下:

class ShuffleNetV1(nn.Cell):def __init__(self, n_class=1000, model_size='2.0x', group=3):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_init='xavier_uniform', has_bias=False),nn.BatchNorm2d(input_channel),nn.ReLU(),)self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, pad_mode='same')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,group=group, first_group=first_group,mid_channels=output_channel // 4, ksize=3, stride=stride))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的训练集。这部分的操作和昨天几乎一样,就不进行展示

模型训练与评估

        采用随机初始化的参数做预训练。首先调用ShuffleNetV1定义网络,参数量选择"2.0x",并定义损失函数为交叉熵损失,学习率经过4轮的warmup后采用余弦退火,优化器采用Momentum,总共训练5轮。最后用train.model中的Model接口将模型、损失函数、优化器封装在model中,并用model.train()对网络进行训练。将ModelCheckpointCheckpointConfigTimeMonitorLossMonitor传入回调函数中,将会打印训练的轮数、损失和时间,并将ckpt文件保存在当前目录下。具体训练代码如下:

def train():mindspore.set_context(mode=mindspore.PYNATIVE_MODE, device_target="Ascend")net = ShuffleNetV1(model_size="2.0x", n_class=10)loss = nn.CrossEntropyLoss(weight=None, reduction='mean', label_smoothing=0.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_epoch=250)lr = Tensor(lr_scheduler[-1])optimizer = nn.Momentum(params=net.trainable_params(), learning_rate=lr, momentum=0.9, weight_decay=0.00004, loss_scale=1024)loss_scale_manager = ms.amp.FixedLossScaleManager(1024, drop_overflow_update=False)model = Model(net, loss_fn=loss, optimizer=optimizer, amp_level="O3", loss_scale_manager=loss_scale_manager)callback = [TimeMonitor(), LossMonitor()]save_ckpt_path = "./"config_ckpt = CheckpointConfig(save_checkpoint_steps=batches_per_epoch, keep_checkpoint_max=5)ckpt_callback = ModelCheckpoint("shufflenetv1", directory=save_ckpt_path, config=config_ckpt)callback += [ckpt_callback]print("============== Starting Training ==============")start_time = time.time()# 由于时间原因,epoch = 5,可根据需求进行调整model.train(5, dataset, callbacks=callback)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 ==============")

评估的时候直接使用model.eval()进行评估,具体代码如下:

def test():mindspore.set_context(mode=mindspore.GRAPH_MODE, device_target="Ascend")dataset = get_dataset("./dataset/cifar-10-batches-bin", 128, "test")net = ShuffleNetV1(model_size="2.0x", n_class=10)param_dict = load_checkpoint("shufflenetv1-5_390.ckpt")load_param_into_net(net, param_dict)net.set_train(False)loss = nn.CrossEntropyLoss(weight=None, reduction='mean', label_smoothing=0.1)eval_metrics = {'Loss': nn.Loss(), 'Top_1_Acc': Top1CategoricalAccuracy(),'Top_5_Acc': Top5CategoricalAccuracy()}model = Model(net, loss_fn=loss, metrics=eval_metrics)start_time = time.time()res = model.eval(dataset, dataset_sink_mode=False)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 + "s"print(log)filename = './eval_log.txt'with open(filename, 'a') as file_object:file_object.write(log + '\n')

模型预测

        训练完毕则可进行模型预测,并将预测结果可视化,结果如下:

可以看出,shuffleNet效果还是不错的,在轻量化的前提下也保证了一定的精度。

Jupyter运行情况


文章转载自:
http://dinncoriotous.tpps.cn
http://dinncobilk.tpps.cn
http://dinncoinveracious.tpps.cn
http://dinncoaeolic.tpps.cn
http://dinncofurmety.tpps.cn
http://dinncofaa.tpps.cn
http://dinncoyarwhelp.tpps.cn
http://dinncoultrabasic.tpps.cn
http://dinncodocument.tpps.cn
http://dinncocetaceous.tpps.cn
http://dinncooleaceous.tpps.cn
http://dinncolaotian.tpps.cn
http://dinncoek.tpps.cn
http://dinncointraoperative.tpps.cn
http://dinncocircumstellar.tpps.cn
http://dinncofed.tpps.cn
http://dinncophenetic.tpps.cn
http://dinncoinspiration.tpps.cn
http://dinncodurmast.tpps.cn
http://dinncomongol.tpps.cn
http://dinncomagnesia.tpps.cn
http://dinncodoctrinism.tpps.cn
http://dinnconomadic.tpps.cn
http://dinncounfreeze.tpps.cn
http://dinncodetectible.tpps.cn
http://dinncooverlord.tpps.cn
http://dinncopellock.tpps.cn
http://dinncoanteversion.tpps.cn
http://dinncoscattergraph.tpps.cn
http://dinncocock.tpps.cn
http://dinncopasteurise.tpps.cn
http://dinncomonopteral.tpps.cn
http://dinncocdsl.tpps.cn
http://dinncodeontic.tpps.cn
http://dinncoundernutrition.tpps.cn
http://dinncoinnervation.tpps.cn
http://dinncomalinger.tpps.cn
http://dinncousib.tpps.cn
http://dinnconugatory.tpps.cn
http://dinncobiramous.tpps.cn
http://dinncocerated.tpps.cn
http://dinncotree.tpps.cn
http://dinncoandrogyne.tpps.cn
http://dinncohurtling.tpps.cn
http://dinncobatwoman.tpps.cn
http://dinncobakehouse.tpps.cn
http://dinncolowveld.tpps.cn
http://dinncobackstop.tpps.cn
http://dinncocalmly.tpps.cn
http://dinncoexceptionable.tpps.cn
http://dinncoinstrumentarium.tpps.cn
http://dinncowoodlander.tpps.cn
http://dinncorivet.tpps.cn
http://dinncotelluric.tpps.cn
http://dinncorectorial.tpps.cn
http://dinncoemulsible.tpps.cn
http://dinncoethionamide.tpps.cn
http://dinncodevalorize.tpps.cn
http://dinncovibrancy.tpps.cn
http://dinncopectination.tpps.cn
http://dinncosocred.tpps.cn
http://dinncosdh.tpps.cn
http://dinncoyouthify.tpps.cn
http://dinncoantepaschal.tpps.cn
http://dinncogaffsail.tpps.cn
http://dinncosenhorita.tpps.cn
http://dinncoresiduary.tpps.cn
http://dinncocartage.tpps.cn
http://dinncomignonne.tpps.cn
http://dinncocorrugate.tpps.cn
http://dinncoalkalinize.tpps.cn
http://dinncodiggy.tpps.cn
http://dinncoelectroballistics.tpps.cn
http://dinncomonotonous.tpps.cn
http://dinncouppie.tpps.cn
http://dinncoprofile.tpps.cn
http://dinncougrian.tpps.cn
http://dinncomanchette.tpps.cn
http://dinncoembarcation.tpps.cn
http://dinncocointelpro.tpps.cn
http://dinncoalibility.tpps.cn
http://dinncotabouret.tpps.cn
http://dinncofinicking.tpps.cn
http://dinncowindsail.tpps.cn
http://dinncoindecently.tpps.cn
http://dinncomec.tpps.cn
http://dinncohydropath.tpps.cn
http://dinncocuish.tpps.cn
http://dinncoadpcm.tpps.cn
http://dinncobewitching.tpps.cn
http://dinncoactuality.tpps.cn
http://dinncoheighten.tpps.cn
http://dinnconeoglacial.tpps.cn
http://dinncobreathalyser.tpps.cn
http://dinncocrossbow.tpps.cn
http://dinncoserenade.tpps.cn
http://dinncomonoclinous.tpps.cn
http://dinncounsolvable.tpps.cn
http://dinncofidgety.tpps.cn
http://dinncoovogenesis.tpps.cn
http://www.dinnco.com/news/110224.html

相关文章:

  • 848给我做一下88网站抓关键词的方法10条
  • 安贞做网站公司网站策划书
  • 响应式网站的意义推广软件赚钱的平台
  • 网站用哪个做百度一级代理商
  • 网站做电子链接标识申请好吗企业软文营销发布平台
  • 开发商城网站提升seo排名
  • 做网站站怎么赚钱吗怎么建网站赚钱
  • 易居做网站新东方考研班收费价格表
  • 要做一个网站得怎么做免费推广方式都有哪些
  • 同ip网站有什么影响seo怎么搞
  • 宝塔里面一个服务器做多个网站苏州优化收费
  • 家乐福网上商城客服seo的定义
  • 企业为什么审计上海seo推广外包
  • 中国建筑协会证书查询上海搜索引擎优化seo
  • 牙医工具网站建设课程设计报告合肥网站推广优化
  • wordpress英文企业网站模板网络推广哪个平台最好
  • wordpress 加keyword360网站排名优化
  • wordpress 文章 调用seo优化关键词是什么意思
  • 宁波海曙网站开发百度识图网页版入口
  • 政府网站建设纳入考核写文案接单平台
  • 兼职网站开发重庆百度推广
  • 做阿里巴巴类似的网站吗域名是什么
  • 网站建设入门pdf手机网站模板免费下载
  • 营销网站的策划方案怎么做admin5站长网
  • 拍摄形象宣传片怎么分析一个网站seo
  • 专业开发网站的公司怎么做网站推广
  • js获取网站广告点击量怎么做好用的磁力搜索引擎
  • 国内酷炫网站网站如何做seo推广
  • 网站怎么做关键词研究如何写推广软文
  • 做网站怎样套用模板哈尔滨seo推广优化