超详细!手把手教你利用U-net进行语义分割实战
U-net作为当今医学图像分割领域广为认知的一个分割网络,在很多方面有着优点,比如能够网络结构简单,分割效果好,能够在小样本上进行训练等,那么话不多说,接下来我们就来看看如何利用u-net进行语义分割吧
首先选择的代码框架是Pytorch,该代码在github上有2651颗星
链接是:https://github.com/milesial/Pytorch-UNet
也可以通过作者准备好的百度云链接进行下载啦
链接:https://pan.baidu.com/s/1k4FT_g2uTgvzuNdfOd2nBw
提取码:qqzl
那么正常解压好的文件就如下图所示
接着我们挨个分析里面的文件和文件夹:
data文件夹里面存放的是用于训练和测试的数据(该代码是按比例随机划分训练集和测试集的,如有需要可以自行修改train里面的代码来进行索引训练),共有两个文件夹,分别存放原始图片和标签(mask)
runs文件夹里面保存的应该是运行时的日志或其它,在此用不到
unet文件夹里保存的是上下采样的模块等和利用它们进行网络的构建的代码
dice_loss.py文件里是dice评估的相关代码,用于评估结果好坏
eval.py文件是每轮训练结束后进行的一次结果评估
submit.py本机训练用不着,用于kaggle等
train.py就是训练的核心代码,在里面可以进行调参,调整文件路径等,代码部分截图如下
值得注意的是记得更改类别数,如果仅仅二分类的话类别数为1就行,更改的地方为train.py文件里
如果数据和网络参数都调好了那么可以直接在IDE上进行训练了,训练过程如图:
如果挂载在服务器上进行训练或在linux环境下训练的话,可以在当前文件目录下进入黑窗里输入python train.py进行训练
黑窗运行参数训练结果可以用如下代码进行预测
利用牙齿图像进行训练的结果示例如下
进行牙齿分割的结果感谢您的观看,如有问题可以在下方留言,看到的第一时间会进行回复