手撸网络结构—UNet
用于分类任务的卷积神经网络输出一般都是一个单一的类标签,但是在很多图像视觉任务中往往要求输出信息包含位置信息,比如给图像的每个像素点赋予类别信息。 这样就需要使用到fully convolutional network 相较于FCN,UNet不只是简单的将卷积网络的结果直接进行转置卷积,而是结合了前面卷积层的中间计算结果,这样既利用了卷积部分的位置信息又利用了最后的分类信息。 UNet网络结构 UNet分为两个阶段:downsample stage 和 upsample stage。 图中的每个蓝色框对应了每层的feature map,上面数字表示当前的通道数。左下角的数字表示feature map的尺寸,这里输入为572x572通道数为1。白色的框表示将对应的卷积层结果进行crop后的结果,白色框与蓝色框进行组合,作为后续网络的输入。 因为在前面卷积的过程中没有添加padding,因此会存在feature map的尺寸变化,所以在上采样过程中,需要对每个阶段的卷积计算结果进行crop操作然后再与转置卷积的结果进行concat(通道维度的相加)。 def concat ( tensor1 , tensor2 ) : # concat 2 tensor by the channel axes tensor1 , tensor2 = ( tensor1 , tensor2 ) if