3Dunet 降假阳性模型预处理

ps前段时间一直在将肺结节检测和3Dcnn降阳性模型封装到一起.输入一个检查输出检测结果插入数据库.同时编写接口供前端和中间件调用.可检测结果的去假阳性这步还是不太令人满意.故再用3Dunet 降假阳性模型联合3Dcnn降阳性模型一起去假阳性.

  由于想获取32*32*32的块(分辨率1*1*1mm),故需要重采样.但是luna16中给的candidates_V2.csv有70多万个候选结节.而经过测试光是统一重采样这步要花费2s多.算了下光截取结节就要16天以上的时间.所幸其实一共的序列才888个.所以先将读取,重采样,归一化等处理了保存为npy,同时还要保存对应的Origin.npy.

在这里就有大量的列表操作.想到了DSB2017的代码中就有利用下面这两个函数来多进程操作列表计算.

from multiprocessing import Pool
from functools import partial

下面看看实际情况下到底能加快多少(88个序列).

不用多进程花费时间:238.038193s

多进程花费时间:48.443767s

将近5倍的时间,感觉很不错.下面采70多万个用上去能省不少时间呢.

下面介绍一下Pool多进程的关键步骤以防自己忘记.

1.pool = Pool()#开启进程池

2.partial_getsave = partial(getsave, filenames=filenames, path=path, # 函数修饰器,将一些参数预先设定,后面调用更简洁 save_path=save_path)

这里getsave是多进程函数.filenames是列表

3._=pool.map(partial_getsave,range(len(filenames)))

这步是多进程调用函数

4.pool.close() # 关闭进程池,不再接受新的进程     pool.join() # 主进程阻塞等待子进程的退出

没什么好多的退出多进程

5.关键是getsave函数的定义 def getsave(id,filenames,path,save_path):

主要是多了个id来对照range(len(filenames)).

猜你喜欢

转载自blog.csdn.net/qq_36401512/article/details/90904758