| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Tensorflow keras中实现语义分割多分类指标:IOU、MIOU -> 正文阅读 |
|
[人工智能]Tensorflow keras中实现语义分割多分类指标:IOU、MIOU |
在TF1.x版本中 miou指标可以使用tf.metrics.mean_iou 进行计算:
但是该方法有如下几点限制: 1. 无法在动态图中使用,例如Tensorflow2.x版本中(注:TF2.x中api移动到了tf.compat.v1.metrics.mean_iou中),由于TF2.x默认是开启动态图,因此会报错(见mean_iou方法的源码)
2. 使用必须先?sess.run(tf.local_variables_initializer()) 然后 sess.run(update_op),最后sess.run(mean_iou_v),注意次序不能颠倒,不太方便和tf.keras相关训练代码结合使用
3. 只能直接输出所有类别的平均IOU即mean_iou, 而不能输出各个类别对应的 iou 针对上述三个问题,我发现有如下两种解决方案: 目录 方案2:继承调用tf.keras.metrics.MeanIoU类
上述代码是自己实现的各类别IOU以及平均IOU的计算方法, 如果只是想直接显示平均IOU,那么直接这样使用即可:
如果想要在tf.keras训练过程中显示各个类别的IOU,一般是继承tf.keras.callbacks.Callback类,然后重写相关的方法,方法可参考:相关参考博客3
方案1中的计算方式和tf.keras.metrics.MeanIoU(num_classes)计算方式类似,需要注意tf.keras.metrics.MeanIoU类中update_state(self, y_true, y_pred, sample_weight=None)方法接受的y_true和y_pred一般是非one-hot编码形式的,即如果网络的输入shape为[N,H,W,C]或[N,H*W,C]形式,需要将y_true和y_pred先求argmax,然后调用该方法 因此遇到上述情况,可以先继承tf.keras.metrics.MeanIoU类,然后重写update_state方法,示例代码如下:
相关参考博客: 3.Keras上实现recall和precision,f1-score(多分类问题)_热爱学习的Valeria的博客-CSDN博客_keras precision |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:39:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |