深度学习断层实战(三)——UNet神经⽹络模型识别断层(附程
序)
随着深度学习算法的蓬勃发展,卷积神经⽹络(CNN)被⼤规模的应⽤在分类任务中,输出的结果是整个图像的类标签。后来在⽣物医学领域,医⽣需要对病灶区域进⾏病理分析。这时需要⼀种更先进的⽹络模型,通过较少数量的训练图⽚,就能预测像素点类别,并且可以对像素点进⾏着⾊绘图,形成更复杂的判断,这时Unet⽹络设计出来了。
地震勘探领域的断层识别,同样需要对断层位置进⾏精准判断,并画出断层线条甚⾄断⾯。越来越多的研究学者将Unet⽹络运⽤到地震勘探⾏业。拉萨好玩吗
01 Unet神经⽹络断层识别原理
UNet⽹络结构最初由 Ronneberger 等⼈在2015年提出。该⽹络的核⼼思想是引⼊了跳跃连接,使得图像分割的精度⼤⼤提升。地震断层识别相⽐图像分割问题要简单⼀些,因此伍新明等教授对Unet⽹络进⾏了简化,使得更适⽤于断层的识别。
Unet⽹络的主要结构包括了编码器、解码器、瓶颈层三个部分。
退休金如何计算
(1)编码器部分:包括了三个程序块。每个程序块都包括3*3的卷积(使⽤Relu激活函数),步幅为2的2*2的池化层。每个程序块处理后,特征图逐步缩⼩。
(2)瓶颈层部分:包含了两个3*3的卷积层。
(3)解码器部分:与编码器部分对称,也包括三个程序块,每个程序块包括步幅为2的2*2的上采样操作,然后与编码部分进⾏特征映射级联(concatenate),最后通过两个3*3的卷积(使⽤Relu激活函数)。
最终输出层包含⼀个1*1的卷积层,其后紧跟sigmoid激活函数,⽣成⼆维断层概率图像。
UNet ⽹络结构的关键在于编码部分和解码部分的跳跃连接( Skip Connection),将来⾃解码器的深层⾼级特征与来⾃编码器的浅层低级特征相结合。编码器的浅层结构可以提取断层的简单特征,⽽深层结构则能抓取到断层的复杂特征。
02 实战案例应⽤
结合前期合成的地震断层数据作为模型训练的标签数据,我们构建⼀个完整的Unet神经⽹络作为训练模型,来给⼤家讲解Unet断层识别模型的构建过程。
为了能够流畅的运⾏,同样建议⼤家使⽤独⽴的显卡,并且⽀持CUDA GPU加速,显存8G以上,内存64G以上。
1.加载训练集数据
我们使⽤前期机器⾃动⽣成的数据集,包括200个样本的训练集和20个样本的验证集,每个样本的尺⼨是128*128*128。
为了提⾼模型鲁棒性,还可以对训练数据进⾏增强处理。就是在加载仿真数据后,再对训练数据进⾏⽔平翻转多次翻转,进⼀步增加训练样本的多样性。
使⽤下⾯的程序。
2.构建Unet神经⽹络
根据前⽂的介绍,构建了⼀个Unet⽹络结构:
主要的代码包括编码、解码和瓶颈层三部分。编码部分的代码是这样的:
其中每个代码块的内容是这样的:
解码部分的代码是这样的:
其中每个代码块的内容是这样的:
瓶颈部分的代码是这样的:
训练参数部分:港澳通行证怎么办理
蒸茄子由于整个地震数据中,断层部分很少,⼤部分都是⾮断层,造成了数据分布不均衡,因此这⾥修改了loss函数,优化了cross_entropy算法。
3.训练神经⽹络
整个⽹络训练了25个周期,平均每个周期训练时间10分钟左右。
平行志愿录取规则图解训练准确率可以达到94.91%,验证准确率达到95.67%,可见鲁棒性较好,没有出现过拟合。
训练的图形是这样的:
从训练图像来看,训练曲线⽐较稳定,可以收敛。验证曲线不太稳定,说明模型还需要优化。
4.保存神经⽹络
堆的组词我们可以将训练的模型保存下来,未来进⾏其它数据预测时可以直接调⽤模型。
5.识别效果
下⾯两张图显⽰了其中卷积层学习到的特征。
可以看到逐渐识别到了地震信号的特征。
仿真数据的识别效果见下图。
可以看到识别效果⾮常好,不管是主要断层还是细⼩的断层都能识别出来,也没有错误出现。
具体可视化显⽰断层的⽅法后续会介绍。
这次的课程就到这⾥。我们给⼤家讲解了建⽴Unet神经⽹络模型进⾏训练和断层识别的⼀套实战流程。如果⼤家对程序感兴趣欢迎联系我交流。再见。
扩展阅读:
怎样轻松⼊门地震勘探研究:先从地震数据处理开始
教你如何从0开启地震深度学习科研之路
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论