GoogLeNet Inception v3 结构 及 pytorch、tensorflow、keras、paddle实现UC Merced Land Use Dataset识别

拈花ヽ惹草 提交于 2020-03-08 07:09:36

背景

google在InceptionV1之后,又发表文章《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》、《Rethinking the Inception Architecture for Computer Vision》,前者提出了广泛使用的Batch Normalization方法,后者提出了InceptionV2、InceptionV3结构,通过在InceptionV1的基础上逐步改进得到V2,最后汇总所有的改进策略得到V3。

使用RMSprop优化器,而非SGD优化器

使用Batch Normalization,将每一层的输入尽量规范化,在辅助分类器中也使用BN

分步卷积,将大尺寸的卷积核分解为多个小卷积核,减少计算量、提升计算速度

卷积与池化并行进行降维,减少参数量的同时 避免表征瓶颈(representational bottlenecks)

使用Label Smoothing进行训练,减轻预测中非最大概率值的惩罚

 

网络结构

                 

网络结构如上图,在Inception部分,表格与文字部分不一致,尽量图片部分为准,同时借鉴tensorflow官方实现代码 

文字表述

在35*35部分有3个传统模块,每个模块有288个filters;这部分使用768个filters进行卷积与池化并行降维操作(见Section5,即图10,但是5*5未分解),将35*35降至17*17

之后,接上5个分解后的模块,结构如图5(在InceptionV1模块的基础上讲5*5分解为两个3*3),并使用卷积与池化并行降维操作,如图10,降至8*8*1280

最后,使用图6所示的两个模块,输出2048个filters

本文实现的Inception部分结构

35*35*288 ——> 33Inception a ——> 33Inception b ——> 33Inception c(并行降维)——>

17*17*768 ——> 17Inception a ——> 17Inception b ——> 17Inception c ——> 17Inception d ——> 17Inception b (并行降维)——>

8*8*1280——> 13Inception a ——> 13Inception b ——> 8*8*2048

 

代码:

pytorch实现

tensorflow实现

keras实现

paddle实现

 

注:
以上代码在alexnet的基础上,实现了:

1)调用框架api读取数据集

2)进行train、val的流程

3)在train时可以输出各层shape

4)保存最优loss模型,并在结束时输出最优loss及对应epoch

5)在训练结束后查看loss、acc变化曲线

 

(实验数据集):UC Merced Land Use Dataset,常用的遥感场景分类数据集,21class * 100pic = 2100张图片,统一为256*256pix大小

http://weegee.vision.ucmerced.edu/datasets/landuse.html

(在pytorchtensorflow、keras、paddle目前不收敛)

 

文件结构:my_utils.py文件存放通用函数

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!