Pytorch图像分类之ShuffleNet

在图像分类应用下,诞生了不少经典网络。ShuffleNet以速度快和便于移植而著称,这篇博客将简单介绍ShuffleNet,以及Pytorch下模型的训练、保存、微调、生成CaffeModle。

一、ShuffleNet简介

原文地址: ShuffleNet

理解ShuffleNet的关键在与理解通道混洗。因为完整的网络比较大,为了加快速度,减少模型参数,就使用几个更小的卷积核来代替原先网络中一个大的卷积核(把卷积操作分成了几个group),这样降低了复杂度,但是也会带来问题,就是每个group产生的数据之间并没有交换,为了将每个group产生的信息传到下一层,会在做完卷积之后加入混洗操作。

通道混洗

卷积操作都可以通过分组-混洗的方式加速,混洗单元如下所示

混洗单元

二、Pytorch模型训练

在网上找到一份代码,自己加了一个train.py。博主的环境是cuda8, pytorch1.0 (从pytorch1.1开始,就不支持cuda8了),在该环境下,直接运行 train.py 就可以训练的。

https://github.com/P-Chao/ShuffleNet_V2_pytorch_caffe

三、Pytorch模型保存

四、Pytorch模型微调

五、Caffe模型转换

发表评论