当前位置:网站首页>语义分割标签即像素值的巨坑,transforms.ToTensor()的错误使用
语义分割标签即像素值的巨坑,transforms.ToTensor()的错误使用
2022-08-02 03:21:00 【& Tom】
问题:最近使用NEU-Seg数据集来验证模型的有效性,计算iou出现nan值?
前提:NEU-Seg数据集的样本图片时 .jpg 格式,使用cv2直接读取即可, mask图是全黑的,如下图所示:
官方说是用labelme标注的,像素值就是像素的类别(坑也在这!)通过一下代码来检查数据格式:
import numpy as np
from PIL import Image
img = Image.open("E:/All-Project/Other-File/Datset/00001.png") #图像所在位置
img1 = np.array(img)
a=np.unique(img1) # 查看图片内的像素值
print(a)
print(img.mode) # 查看图片模式
运行后输出如下:
可以看到像素值(标签)有0.1,0背景,1是缺陷,可是图片模式是L,也就是灰度图,可是VOC数据集应该是P模式才对,但是L可以直接用cv2读取,更方便了。后来就出现问题, 读取图片转成张量的时候,经过了transforms.ToTensor()处理, 直接训练网络,损失照常掉, 可是! 计算IOU全部变成nan了。计算求代码:
intersection = np.logical_and(img_mask, img_pred)
union = np.logical_or(img_mask, img_pred)
iou_score = np.sum(intersection) / np.sum(union)
nan了,我接受不了这个现实啊!我检查了我的模型代码,混淆矩阵代码都木有毛病啊!
经过我两周的debug终于发现了些端倪:
1.用cv2读取全黑的mask图,标签显示正常,[0, 1, 2, 3](neu数据集三类缺陷加背景)正常
2.获取的mask是narry格式,要转成张量 ,照常用了transforms.ToTensor()处理, 标签值变了!1变成了0.0017,这是啥玩意!问题就在这,接下来是解决办法:
0.transforms.ToTensor()这个函数首先会将数据归到[0, 1]区间内,可是标签就是像素值并不需要这么处理
办法:
用 torch.from_numpy(mask).type(torch.FloatTensor) 处理一下,标签值不变!!!!
就这一句就解决了,我花了两周,哭死
致谢:
感谢东北大学宋克臣老师的无私奉献,将数据集公开,网址:
http://faculty.neu.edu.cn/songkechen/zh_CN/zhym/263269/list/index.htm
宋老师的论文值得我学习! 向老师致敬!
声明:如使用老师数据集发表论文,应按照网站要求进行引用老师文章!(我现在只在验证阶段,如有不妥,请指正!)
边栏推荐
- DOM destruction and reproduction experiment
- @Autowired详解[email protected]在static属性上的使用
- MySQL常见的索引
- 化学试剂磷脂-聚乙二醇-羟基,DSPE-PEG-OH,DSPE-PEG-Hydroxyl,MW:5000
- ImportError: libGL.so.1: cannot open shared object file: No such file or directory
- DAY-1 | 求两个正整数的最大公约数与最小公倍数之和——辗转相除法
- 线性代数学习笔记3-3:逆矩阵的理解
- Redis的集群模式
- 跨域问题解决
- MySQL分组后取最大一条数据【最优解】
猜你喜欢
DAY-1 | 求两个正整数的最大公约数与最小公倍数之和——辗转相除法
Keil development environment installation tutorial
磷脂-聚乙二醇-靶向新生血管靶向肽APRPG,DSPE-PEG-APRPG
DSPE-PEG-Silane, DSPE-PEG-SIL, phospholipid-polyethylene glycol-silane modified active group
oracle inner join and outer join
通过PS 2021 将网页图标抠下来
Week 7 Review
LeetCode:1161. 最大层内元素和【BFS层序遍历】
离线数仓-用户行为采集
HCIP-第十一天-MPLS+BGP
随机推荐
SOCKS5
MySql创建数据表
RHCSA第三天
mysql创建表
连接数据库时遇到的bug1号
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
腾讯50题
Deveco studio 鸿蒙app访问网络详细过程(js)
Daily practice------There are n integers, so that the previous numbers are moved back m positions in order, and the last m numbers become the first m numbers
磷脂-聚乙二醇-酰肼,DSPE-PEG-Hydrazide,DSPE-PEG-HZ,MW:5000
青蛙跳台阶:我如何得知它是一道斐波那契数列题?——应用题破题“三板斧”
[Basic Tutorial of Remote Control Development 1] Crazy Shell Open Source Formation Drone-GPIO (Remote Control Indicator Light Control)
How to check whether a table is locked in mysql
@Accessors 注解详解
Redis安装,基本命令,持久化方式,集群
JJWT工具类
MySQL常见的索引
UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the index ing argu
基本运算符
Redis的集群模式