项目地址:https://github.com/qsyao/cuda_spatial_deform
作者:姚青松,曾在微软亚洲研究院系统组(“明日之星实习生”项目)进行一年的GPU编程开发训练。
项目需求:
- 当图像尺寸太大时,使用CPU进行空间变换(尤其是弹性形变)时,会占用大量的时间,远超网络前向后向时间。
- 医疗影像分析常进行on-the-fly图像增广,当拥有GPU时,过长的图像空间变换时间会导致GPU等待CPU,降低训练效率(使用弹性形变尤为明显)。
- 如果使用多进程来降低处理时间,CPU资源会变得非常紧缺。
项目特点:
- 用GPU进行图像空间变换计算,后端使用CUDA实现。
- 在3D图像旋转中加速25X,弹性形变中加速45X。
- 支持多种空间变换,包括翻转,平移,旋转,弹性形变,放缩。
- 支持多种插值模式,mirror, constant, reflect, wrap, nearest。
- 多种形变统一进行,只进行一次坐标插值。
- 支持多线性插值(针对图像),临近插值(针对标签)。
- 用户可以将坐标自行取回以适应更多的插值模式,(坐标变换仍在GPU进行)。
引用:
如果使用我们的代码进行研究,请引用我们的工作:Chao Huang, Hu Han, Qingsong Yao, Shankuan Zhu, S. Kevin Zhou. , 3D U2-Net: A 3D Universal U-Net for Multi-Domain Medical Image Segmentation, MICCAI 2019.