全卷积网络(Fully Convolutional Networks,FCN)由UC Berkeley的Jonathan Long等人在2015年提出,用于端到端的图像语义分割。
一、语义分割
语义分割是对图像中每个像素点进行分类,输出与输入大小相同的分类图。应用广泛,如人脸识别、自动驾驶等。
二、FCN简介
FCN是首个端到端的分割方法,通过像素级的预测直接得到与原图大小相等的标签图。FCN丢弃全连接层,全部使用卷积层。
核心技术
1. 卷积化:将全连接层转换为卷积层,生成输入图片映射的heatmap。
2. 上采样:通过反卷积层恢复特征图尺寸。
3. 跳跃结构:结合不同深度层的特征图,获取更多细节。
三、网络特点
1. 适应任意尺寸输入:全卷积网络不含全连接层。
2.精细输出:使用反卷积层增大数据尺寸。
3. 鲁棒性与精确性:跳跃结构结合全局和局部信息。
四、数据处理
确保本地安装Python和MindSpore,预处理PASCAL VOC 2012数据集。
数据加载
混合PASCAL VOC 2012和SBD数据集。
训练集可视化
运行代码观察预处理后的数据集图片。
五、网络构建
网络流程
1. 输入图像经过多次池化,特征图尺寸逐渐减小。
2. 通过反卷积层恢复特征图尺寸。
3. 跳跃结构融合不同层特征图,逐步恢复到原图尺寸。
训练准备
导入VGG-16预训练权重
使用VGG-16作为骨干网络。
损失函数
交叉熵损失函数计算FCN输出与mask的差异。
自定义评价指标
计算模型性能的评估指标,如Pixel Accuracy (PA)、Mean Pixel Accuracy (MPA)、Mean Intersection over Union (MIoU)、Frequency Weighted Intersection over Union (FWIoU)。
六、模型训练
导入预训练参数后,实例化损失函数和优化器,使用Model接口编译网络并训练。
七、模型评估
评估训练好的模型性能。
八、模型推理
使用训练的网络展示推理结果。
九、总结
FCN通过全卷积层实现端到端分割,具有以下优点:
1. 接受任意大小输入图像。
2. 高效:避免像素块带来的重复计算。
待改进之处:
1. 结果不够精细:上采样结果较模糊。
2. 缺乏空间一致性:未充分考虑像素之间的关系。