昇思训练营day11学习心得-ShuffleNet图像分类
ShuffleNetV1和MobileNet类似,都是通过设计更高效的网络结构来实现模型的压缩和加速。每一组的卷积核大小为in_channels/g*k*k,总参数量为(in_channels/g*k*k)*out_channels,是正常卷积参数的1/g。引入Channel Shuffle机制(通道重排),将不同分组通道均匀分散重组,使网络在下一层能处理不同组别通道的信息。2.堆叠多个 Shuf
关于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的测试集上对模型进行预测,并将预测结果可视化。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)