3Dcnn 降假阳性模型调试(一)

本文分享了使用3D CNN模型进行肺结节检测的经验,包括数据预处理、采样策略调整及模型优化,实现了从70.4%到96.95%的精度提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3Dcnn模型网上很多,我是在github上找的,根据自己的理解再改了下.具体就不贴了,下面重点讲讲我输入数据的变化.

1.一开始直接根据luna16数据中的candidates_V2.csv中标记的''0"为假阳性,"1"为阳性.然后直接从原raw分辨率下截取(20,36,36)放入模型.结果不是很好(只用subset0的数据('1'的多7次采样)为训练数据.再用subset0的数据('1'的多7次采样)为测试数据.居然只有70.4%的精度)我大跌眼镜.训练10遍(很慢啊)

2.后来我想是不是没有统一采样到(1,1,1)的缘故啊.就重采样到(1,1,1)(subset0的数据).同时考虑到0和1的比例饿太悬殊.就从0中选出3000个,在将1采样20倍使0和1相当.训练13遍(太慢了).

测试结果为subset0自己达到96.95%,subset1则是89.75%,subset2为91.1875%.

这时我又考虑到测试时不该采样啊,那么1不采样20倍.则只得到77.72%(回到解放前了啊)

3.上面结果太不友好了是不是数据有问题,我决定把之前检测代码中预处理得到clean.npy等作为数据替代raw.而由于candidates_V2.csv中是世界坐标,所以我还要知道extendbox等信息.将这些获取,但是运行时候发现还是老出现 inconsistent tensor sizes的问题.后来找了一天多才发现,原来我之前做的有问题,当isflip为true的时候我没有翻转标签.所以前面两种方法就出问题了.

翻转比较麻烦,先要回到像素坐标,再用512分别减去x和y坐标(只是翻转x和y),再乘以原分辨率回到世界坐标.

voxelCoord = worldToVoxelCoord(worldCoord, numpyOrigin, unmpyspacing)
voxelCoord[1] = 512 - voxelCoord[1]
voxelCoord[2] = 512 - voxelCoord[2]
T_worldCoord = voxelCoord * unmpyspacing

 

4.在这期间添加了数据根据不同面分别旋转90度180度270度的随机采样,根据不同轴翻转的随机采样.还有随机初始位置裁剪.

 

5.截止现在第三种还是在跑了一段时间给我报错我已经快蹦了.周末了不能让它半途死掉.先把第二种的数据方法改好开始跑吧.(还有3dunet还没做呢(联合模型)).

 

心得:忙忙碌碌了5天,其实主要还在数据这打转,好确保数据和标签的准确才是头等大事啊,切记!

ps:5月9号发现了一个问题其实一开始数据不翻转,标记坐标也可以不翻转.上面我做的翻转只是因为一开始数据就翻转过.

 

评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值