调用深度学习网络模型使用(新人向)

新人避坑(刚开始接触医学图像分割)

在刚开始跑网络分割模型的时候总是一个一个源码去跑,这就导致需要自己匹配代码的数据集格式,需要在图像预处理上花费较多时间。最好的方法是在源码的基础上将网络模型提取出来,在一个基本的图像分割网络进行调用,下面以U-net网络源码调用RegSeg为例。

  1. 参考代码:Pytorch-UNet/unet_model.py at master · milesial/Pytorch-UNet · GitHub 

                          https://github.com/RolandGao/RegSeg

      2. 看U-net的网络结构文件和RegSeg的网络文件model.py

  • 调用深度学习网络模型使用(新人向)_第1张图片调用深度学习网络模型使用(新人向)_第2张图片

 (在这之间需要注意的是RegSeg它的model.py在python里有同名的函数,所以在放入unet的时候需要改名比如RegSeg_model.py,以及看清楚model里面需要的其它模块需要一起复制过去,注意py文件之间的调用)

      3.复制好上述的model文件,注意看u-net中的train.py如何调用网络,用相同的方式调用即可,比如:

net = UNet(n_channels=3, n_classes=args.classes, bilinear=args.bilinear)
net = RegSeg("exp30_decoder4",2)

   4.遇到的问题:

RuntimeError: only batches of spatial targets supported (3D tensors) but got targets of size: : [1, 512, 512, 3]

 解决办法:RuntimeError: 1only batches of spatial targets supported (non-empty 3D tensors) but got targets of size - DuanYongchun - 博客园 (cnblogs.com)

ValueError: Expected input batch_size (1) to match target batch_size (256).

解决办法:网上其它说法是没有计算出正确的特征图的尺寸大小。但是我的问题是我的训练数据集数目不能与batchsize整除导致。

5.这样就可以一个数据集跑不同的网络。

你可能感兴趣的:(学习自存,深度学习,pytorch,计算机视觉)