syf 发布的文章
negative step not yet supported
预测出的嗅球和白色部分需要验证是否正确,因为嗅球和白色部分比较对称,所以有个朴素的方法:将预测出的mask从中间折叠,计算重合部分占比,占比过小的认为是无效预测
然而在实现时发现pytorch的Tensor不支持负数作为步长:
Google之后发现:这2个issue:
在第二个issue里可以看到这个问题的历程:
Windows10系统自带照片应用显存泄露BUG
系统一直是保持更新最新版本的,出现问题的版本:
- Windows 10 18362.239
- Microsoft 照片 2019.19051.16210.0
出现场景:
打开了一个png图片后最小化至后台,过了大约一两个小时后显卡显存占满,系统严重卡顿
检查发现照片应用占用了7G的显存:
已经第二次出现了,应该算比较严重的BUG了
U-Net 多分类实现整理
上周发了个博客说多分类应该用一个像素代表不同值的方式来实现,今天又仔细研习了一下 github 上这个 issue,看了作者的回复,感觉还是应该用多通道作为输入。
于是我把unet传入的n_classes参数改成了2,然后让传入的数据形状和unet输出预测的形状一致,把嗅球和白色区域数据用torch.cat叠起来,最后两个通道输出扩充一个通道保存成3通道RGB的形式
优雅的代价 - 记一次多分类分割的实现
经过上周的努力,嗅球识别模型的命中率已经比较可观了,但是误判率还是比较高。上周五老师给了我一份新数据,标注的是包括嗅球的周围白色区域的标签,类似下图蓝色部分:
然后我产生了初步的利用白色区域标签的想法,即像训练嗅球那样训练出分割白色区域的模型,然后对于一张验证图片,分割出如上图所示的蓝色标签(白色区域)和红色标签(目标嗅球区域)。先前的嗅球区域会有一些错误并且偏离较大的预测,暂时简单的想法在识别出的白色区域下方设置一个阈值,超过这个阈值的预测认为是无效预测
接下来的问题就是像训练嗅球数据集一样训练白色区域的数据集了。我一开始的想法就是像训练嗅球一样,把nii数据转化成png之后一样的代码再训练一遍就是,但是仔细想想,既要训练嗅球,又要训练白色区域,这很明显是一个多分类问题,U-Net网络本来就支持多分类识别,那我是否可以在原来的代码基础上改动下输入的channel和class数呢?