语义分割一般都是使用的全卷积网络,也即可以先提取特征,这时候尺寸会变小,然后会再把尺寸变大到原尺寸,或者说是和训练图片相同的尺寸。因此我们一般需要编码器提取特征,然后再使用解码器恢复尺寸。这里的编码器就是ResNet50,解码器就是SegNet。语义分割其实就是对每一个像素进行分类。
1、它有两个block,一个是identity_block,一个是conv_block。其中,identity_block内部经过了三次通道变换,由于这是一个残差块,所以经过三次通道变换之后要与输入数据的通道数相同,并且尺寸也要一样,所以在这个block内部通过我们设置参数并没有使尺寸改变
2、conv_block内部有四个conv2d,中间两个都不改变尺寸,只有第一个和第四个可以通过我们设置步幅来改变尺寸。其中第四个conv2d是直接对输入数据改变尺寸,而不是已经经过三个卷积层的输入数据,这是为了输入数据和已经经过三个conv2d的数据能够相加,也即通道数和尺寸都一样。
3、然后我们在get_resnet50_encoder函数里,多次调用这两个block,然后每压缩一次就赋值给f,所以最后返回了[f1 , f2 , f3 , f4 , f5 ]五个特征图。
