超详细!手把手教你利用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进行训练



黑窗运行参数

训练结果可以用如下代码进行预测



利用牙齿图像进行训练的结果示例如下

进行牙齿分割的结果


感谢您的观看,如有问题可以在下方留言,看到的第一时间会进行回复

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。