卷积网络图像分类器
一个卷积神经网络通常包含了base和head两个部分。base是用于提取特征,head用于对特征进行分类(就与机器学习里面的一样)。
读取数据
1 | # Imports |
读取预训练base
1 | pretrained_base = tf.keras.models.load_model( |
接上head后训练
1 | from tensorflow import keras |
filter detect condense
在head中,使用filters对input图像进行过滤,然后使用relu实现detect效果,再用maxpooling实现condense
先relu后maxpooling就有intensifying的效果
1 | from tensorflow import keras |
Maxpooling 具有平移不变性
原理是将shape以内的最大数据作为shape的新数据,因此对于最大值所在的位置是不在乎的,因此位置不敏感了
关于滑动窗口
特征提取过程有:1. 使用conv层filter;2. 使用relu层detect;3. 使用maximum pooling来condense
其中,conv和maximum的操作都是按照滑动窗口来实现的。
滑动窗口大小由kernel_size
给定,每次滑动距离由strides
给定,使用何种类型边缘处理由padding
给定。
1 | from tensorflow import keras |
为了获得更多的特征用于分类,conv的strides一般是(1,1)。而maximum pooling的strides通常为(2,2),(3,3)而不超过窗口本身。
边界处理使用padding='valid'
会让conv完全在图内部运行,会导致输出尺寸缩小。使用padding='same'
会在输入图像周围加上几圈0,使得输出尺寸不变。
感受野 receptive field
多层conv和maximum pooling后的一个unit对应input的区域
数据扩增 Data Augmentation
1 |
|