使用Unet进行脊柱分割爬坑记录

被一个非常不起眼的小bug搞得精疲力尽,本着bug不过夜的信仰,终于在晚上10.30成功debugg,记录一下

使用Unet网络训练自己的脊柱分割网络

首先准备训练集,一开始这个数据集是用github上的一个完整的代码进行处理的,下载下来的数据集是nii.gz 格式,先解压缩,然后用nibabel模块进行读取并转成png
问题就出在转格式这一块了
转出的png文件是黑色的,后来怀疑是不是这个数据集被我转坏了,用PIL+numpy读取后发现,有数值,只不过ROI区域的数值为1,其余地方为0,也就没当回事

因为原本的那个训练代码使用keras写的,并且没有注释,写的也很乱,所以重新下载了一个训练代码。
然而发现在我这个数据集上并不好用,甚至开始怀疑这个数据集的真实性,用ITK-SNAP发现,label是存在的,标注无误,然后开始从训练代码层面开始找

在datalader发现了引发bug所在

# 从文件中读取图像
        png = np.array(png)
        modify_png               = np.zeros_like(png)
        modify_png[png <= 127.5] = 1

这段代码对读取的图像的像素值进行了修正,导致我的脊柱数据集中所有的像素点全部被置成1,在训练过程中一直都出现loss=0的情况毕竟max就是1
而这个数据集中的label的max是255,而roi区域即边缘区域是0。所以把我的数据集的roi区域改成255就可以了,即png *255即可

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值