在图像分类应用下,诞生了不少经典网络。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模型转换