论文链接
动机
目前有许多关于如何设计高效网络结构的研究,涉及到各种不同的技巧,但是对高效的网络结构设计技巧没有系统性的总结
贡献
对语义分割领域的网络设计方法技巧进行总结
网络结构设计
- 编码器-译码器结构
- Baseline FCN(最简单的编码器)
- Cross channel filters
- Cross layer connections
- Wider bank of filters
- Split branching and summation joining
- Handling scale of objects
空洞卷积
计算量优化技巧
量化:
- 使用tensorflow或Nvidia TensorRT将神经网络的float32类型计算量化为int8类型的计算,实现加速
- 直接用int8类型计算对神经网络进行训练
高效结构设计原则
- 通过约束结构超参数平衡模型大小和准确率:增加网络深度,减少每一个卷积层输入的通道数,减小输入图片的分辨率
- 减少冗余的卷积核:卷积核分解(一个7x7卷积层分解为3个3x3卷积层, kxk卷积层分解为1xk卷积层和kx1卷积层)
- 通过激活函数校准卷积核(CReLU)
- 使用对称性校准卷积核(G-CNN)
卷积设计
- 1x1卷积降维,减少卷积的输入通道数
- Group convolution
- Depth-wise Separable convolution
模型压缩
- 权重剪枝:将训练的模型的权重值较小的不重要的连接都去掉,然后再对权重剪枝后的模型进行微调
- 滤波器剪枝
- 网络蒸馏(teacher-student训练模式)
硬件加速
1.GPU
2. ASICs
3. FPGA
4. SIMD结构
语义分割案例分析
数据集
CamVid
评价指标
Runtime(s), mIoU, per-class IoU
结果
反思
该论文在深度学习相关应用的落地方面能够提供很多思路。特别是当下神经网络越做越大,落地时对于推理速度的要求难以满足,必须寻找合适的方法对网络推理进行加速,达到实时推理的效果。使用Nvidia TensorRT、FPGA等都是很好的落地策略