DeeplabV3+ 命令行不显示miou的解决

本文解析了在TensorFlow训练过程中如何使用tf.summary和tf.Print实现在命令行输出loss和totalloss,以及如何自定义输出如miou等指标,通过将这些操作加入summaries,可以在训练时实时查看并记录关键数据。

首先看到训练时会在命令行里输出 loss 和 total loss,那是怎么做到的呢,通过分析 train.py 源码,看到如下代码

    total_loss = tf.cond(
        should_log,
        lambda: tf.Print(total_loss, [total_loss], 'Total loss is :'),
        lambda: total_loss)

    summaries.append(tf.summary.scalar('total_loss', total_loss))

是把 total_loss 加到了 summaries 里,然后就会输出在命令行了,那 summaries 是什么呢?

通过百度看到一篇不错的博客:https://www.cnblogs.com/lyc-seu/p/8647792.html

简单说就是在训练过程中,用tf.summary()的各类方法,能够保存训练过程以及参数分布图。并在tensorboard显示,tensorboard还没用过,等会再看看

解决方法:

照搬 train 的思路,新建一个 op,是个 tf.Print(),再加到 summaries 里应该就OK了

    print_miou = tf.Print(miou, [miou], 'miou is:')  #创建tf.Print()的op
    tf.summary.scalar('print_miou', print_miou)      #把这个op加到summary里,后面在tf.contrib.training.evaluate_repeatedly中会自动调用
    summary_op = tf.summary.merge_all()

 tf.Print参考这里:https://blog.youkuaiyun.com/thormas1996/article/details/81224405

转载于:https://www.cnblogs.com/tccbj/p/10675469.html

### DeepLabV3+mIoU 计算方法及性能评估 #### 1. Mean Intersection over Union (mIoU) 定义 Mean Intersection over Union 是一种广泛用于衡量语义分割模型性能的指标。它计算每个类别的 IoU 并取平均值。对于类别 \( c \),其 IoU 可表示为: \[ IoU_c = \frac{TP_c}{TP_c + FP_c + FN_c} \] 其中: - \( TP_c \): 类别 \( c \) 被正确预测的像素数; - \( FP_c \): 错误地被分类为类别 \( c \) 的像素数; - \( FN_c \): 属于类别 \( c \) 但未被正确预测的像素数。 最终的 mIoU 则是对所有类别 IoU 的均值[^1]: \[ mIoU = \frac{1}{C} \sum_{c=1}^{C} IoU_c \] #### 2. DeepLabV3+同数据集上的 mIoU 性能表现 DeepLabV3+ 在多个公开数据集上展现了卓越的表现,尤其是在 PASCAL VOC 2012 和 Cityscapes 数据集中。具体表现为: - **PASCAL VOC 2012**: 使用 Xception 主干网络,在验证集上达到了约 89.0% 的 mIoU 值。 - **Cityscapes**: 同样采用 Xception 主干网络的情况下,测试集上的 mIoU 达到了大约 82.1%,这表明模型在复杂城市场景中的强大泛化能力。 这些结果是在依赖任何后处理技术的前提下取得的,体现了 DeepLabV3+ 设计的有效性。 #### 3. 改进措施对 mIoU 提升的影响 除了基础架构外,DeepLabV3+ 还引入了一些改进措施以进一步提升 mIoU 表现。例如: - 添加 NAM Attention 模块可以增强特征图的空间关系建模能力,从而改善边界区域的分割效果[^2]。 - ASPP(Atrous Spatial Pyramid Pooling)模块通过多尺度上下文捕获增强了模型对同尺寸目标的理解能力。 以下是实现上述功能的一个简化代码片段展示如何加载预训练权重并进行推理: ```python import tensorflow as tf from tensorflow.keras import layers, models def create_deeplabv3_plus(input_shape=(512, 512, 3), num_classes=21): model_input = layers.Input(shape=input_shape) # Backbone network (Xception or ResNet) backbone = tf.keras.applications.Xception( input_tensor=model_input, weights="imagenet", include_top=False ) # Encoder and Decoder logic omitted for brevity... output = layers.Conv2D(num_classes, kernel_size=1)(decoder_output) model = models.Model(inputs=model_input, outputs=output) return model ``` 此代码仅作为框架示意,并未完全体现完整的 DeepLabV3+ 实现逻辑。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值