关于ShuffleNet

ShuffleNetV1和MobileNet, SqueezeNet等一样主要应用在移动端,是旷视科技提出的一种计算高效的CNN模型。它的设计核心是引入了两种操作:Pointwise Group Convolution和Channel Shuffle。ShuffleNetV1和MobileNet类似,都是通过设计更高效的网络结构来实现模型的压缩和加速。

模型架构

ShuffleNet 的核心在于通过 Pointwise Group Convolution 和 Channel Shuffle 来优化网络架构,从而在保持低计算量的同时提高准确率。

Pointwise Group Convolution

每一组的卷积核大小为in_channels/g*k*k,总参数量为(in_channels/g*k*k)*out_channels,是正常卷积参数的1/g。

分组卷积中,每个卷积核只处理输入特征图的一部分通道,参数量会有所降低。

输出通道数仍等于卷积核的数量。

Channel Shuffle

优化了大量密集的1x1卷积。

引入Channel Shuffle机制(通道重排),将不同分组通道均匀分散重组,使网络在下一层能处理不同组别通道的信息。

ShuffleNet模块

构建ShuffleNet网络

1.通过卷积层和最大池化层对输入图像进行初步处理。

2.堆叠多个 ShuffleNet 模块,每个模块包含下采样和多个基本单元,逐步降低特征图的长宽并增加通道数。

3.随后经过全局平均池化将特征图转换为向量,再经过全连接层和softmax,得到分类概率。

模型训练和评估

训练集准备与加载

采用CIFAR-10数据集对ShuffleNet进行预训练。使用 mindspore.dataset.Cifar10Dataset 接口下载并加载数据集。

模型训练

1.调用ShuffleNetV1定义网络。

2.定义交叉熵损失函数和Momentum优化器,学习率经过4轮的warmup后采用余弦退火。

3.用train.model中的Model接口将模型、损失函数、优化器封装在model中,并用model.train()对网络进行训练。通过回调函数监控训练过程并保存模型。

模型评估与预测

在CIFAR-10的测试集上对模型进行评估,设置Top 1, Top 5的评估标准。

在CIFAR-10的测试集上对模型进行预测,并将预测结果可视化。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐