尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Keras-FCN 模型架构全解析:Vgg16、ResNet50 与 DenseNet 的 6 大分割网络

Keras-FCN 模型架构全解析:Vgg16、ResNet50 与 DenseNet 的 6 大分割网络 Keras-FCN 模型架构全解析Vgg16、ResNet50 与 DenseNet 的 6 大分割网络【免费下载链接】Keras-FCNKeras-tensorflow implementation of Fully Convolutional Networks for Semantic SegmentationUnfinished项目地址: https://gitcode.com/gh_mirrors/ker/Keras-FCN想要搞懂Keras-FCN 模型架构却面对一堆源码不知从何下手本文用通俗的语言为你逐一拆解 Keras-FCN 项目中基于 Keras-TensorFlow 实现的 6 个全卷积网络FCN语义分割模型涵盖 Vgg16、ResNet50 与 DenseNet 三大主干网络帮你快速建立 FCN 语义分割的完整知识地图。Keras-FCN 是什么全卷积网络语义分割入门Keras-FCN 是一个基于 Keras TensorFlow 的全卷积网络Fully Convolutional Networks语义分割实现。传统分类网络最后用全连接层输出类别概率而 FCN 将全连接层替换为卷积层让网络可以接受任意尺寸的输入并在像素级别输出每个点的类别从而实现端到端的语义分割。该项目最大的价值在于它把 Vgg16、ResNet50、DenseNet 三种经典主干网络通过普通 FCN与空洞卷积AtrousFCN两种形态组合成了 6 个可直接使用的分割模型全部定义在 models.py 中是学习分割网络架构演进的绝佳教材。语义分割能做什么一张图看懂效果下面这张图直观展示了语义分割的输入与输出左边是原始图像中间是人工标注的真实分割标签Ground Truth右边是 AtrousFCN_Resnet50_16s 模型的预测结果可以看到运动员与自行车被逐像素地划分出来。6 大分割网络逐一拆解Vgg16、ResNet50 与 DenseNet1. Vgg16 系列经典 FCN 的开山之作FCN_Vgg16_32s是最经典的 FCN-32s 结构以 Vgg16 为特征提取主干将最后的全连接层fc1、fc2改写为 4096 通道的卷积层再接 1x1 卷积输出 21 类Pascal VOC 的 20 类 背景最后通过BilinearUpSampling2D做 32 倍双线性上采样恢复到原图尺寸。它的实现要点是把fc6的 7x7 卷积改为 paddingsame从而兼容任意输入尺寸。AtrousFCN_Vgg16_16s则在 Vgg16 的fc1卷积上引入了dilation_rate(2, 2)的空洞卷积在不损失分辨率的前提下扩大感受野最后直接上采样到输入图像的原始尺寸16s 表示 stride 16。它位于 models.py可以看到与 32s 版本几乎相同区别仅在空洞率与上采样方式。2. ResNet50 系列残差结构提升分割精度FCN_Resnet50_32s把主干换成 ResNet50沿用 conv_block / identity_block 的标准残差结构在网络末端用 1x1 卷积输出类别图并做 32 倍上采样。得益于残差连接深层特征得以顺畅传递分割效果优于 Vgg16 版本。AtrousFCN_Resnet50_16s是项目当前表现最好的模型它在 ResNet50 的 stage5 中把普通卷积块替换为atrous_conv_block与atrous_identity_block空洞率为 2配合 16s 的上采样策略在 Pascal VOC2012 增强数据集上取得了mIoU 0.661076、像素准确率约 0.9 的成绩。模型结构图与权重都保存在 Models/AtrousFCN_Resnet50_16s/ 目录下含 model.json 与 model.png。3. DenseNet 系列密集连接的进阶探索Atrous_DenseNet基于 keras-contrib 的 DenseNet 扩展采用 3 个 dense block、growth_rate32、transition_dilation_rate2 的空洞过渡层配置输出端使用 sigmoid 激活并重塑为逐像素类别。DenseNet_FCN则采用 6 段密集连接nb_layers_per_block[4,5,7,10,12,15]的纯 FCN 变体。这两个模型models.py依赖作者 fork 的 keras-contribdensenet-atrous 分支属于对更强特征复用的实验性探索。Keras-FCN 模型架构中的 4 个关键组件除了 6 个模型本身整个架构还依赖几个核心模块理解它们才能完整掌握 Keras-FCN双线性上采样层位于 utils/BilinearUpSampling.py支持按倍数上采样或直接指定目标尺寸是 FCN 恢复分辨率的关键。分割专用损失函数utils/loss_function.py 提供softmax_sparse_crossentropy_ignoring_last_labelVOC 单标签与binary_crossentropy_with_logitsCOCO 多标签两种损失。分割数据增强utils/SegDataGenerator.py 实现了随机裁剪、缩放、水平翻转等图像标签同步增强是提升精度的利器。指标与迁移权重utils/metrics.py 提供忽略标签的稀疏准确率与 mIoU 计算utils/transfer_FCN.py 负责把 ImageNet 预训练权重迁移为 FCN 结构。如何用 Keras-FCN 训练自己的分割模型训练入口在 train.py默认配置为AtrousFCN_Resnet50_16s模型。如果你想切换模型只需修改 main 函数中的model_name支持上文 6 个模型名并设置好数据集路径、target_size、epochs等参数即可。完整流程为克隆仓库git clone https://gitcode.com/gh_mirrors/ker/Keras-FCN用 utils/transfer_FCN.py 生成预训练权重运行 train.py 开始训练用 inference.py 对单张图片做语义分割推理用 evaluate.py 评估性能并保存分割结果图权重与结构图默认存放在 Models 目录总结如何选择适合自己的分割网络看完这份 Keras-FCN 模型架构解析你可以按需选择追求最佳精度选AtrousFCN_Resnet50_16s空洞卷积 ResNet 残差的组合表现最强经典入门学习选FCN_Vgg16_32s结构最简单最适合理解 FCN 原理尝鲜前沿结构试试Atrous_DenseNet与DenseNet_FCN体验密集连接在分割任务上的表现。无论选择哪个模型Keras-FCN 的模块化设计都让改模型、换数据、调参数变得异常轻松是学习 FCN 语义分割不可多得的完整参考实现。【免费下载链接】Keras-FCNKeras-tensorflow implementation of Fully Convolutional Networks for Semantic SegmentationUnfinished项目地址: https://gitcode.com/gh_mirrors/ker/Keras-FCN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表