Python(PyTorch和TensorFlow)图像分割卷积网络导图(生物医学)

news2024/11/24 4:53:21

🎯要点

  1. 语义分割图像
  2. 三层分割椭圆图像
  3. 脑肿瘤图像分割
  4. 动物图像分割
  5. 皮肤病变分割
  6. 多模态医学图像
  7. 多尺度特征生物医学
  8. 肖像多类和医学分割
  9. 通用图像分割模板
  10. 腹部胰腺图像分割分类注意力网络
  11. 病灶边界分割
  12. 气胸图像分割
    在这里插入图片描述

Python生物医学图像卷积网络

该网络由收缩路径和扩展路径组成,收缩路径是一种典型的卷积网络,由重复应用卷积组成,每个卷积后跟一个整流线性单元 (ReLU) 和一个最大池化操作。在收缩过程中,空间信息减少,而特征信息增加。扩展路径通过一系列向上卷积和连接将特征和空间信息与收缩路径中的高分辨率特征相结合。

在生物医学图像分割中有很多应用,例如脑图像分割和肝脏图像分割以及蛋白质结合位点预测。也应用于物理科学,例如在材料显微照片的分析中。以下是此网络的一些变体和应用:

  • 像素级回归及其在全色锐化中的应用
  • 从稀疏注释学习密集体积分割
  • 在 ImageNet 上进行预训练以进行图像分割
  • 图像到图像的转换以估计荧光染色
  • 蛋白质结构的结合位点预测

网络训练中数学计算

能量函数是通过最终特征图上的逐像素 soft-max 与交叉熵损失函数相结合来计算的。soft-max 定义为 p k ( x ) = exp ⁡ ( a k ( x ) ) / ( ∑ k ′ = 1 K exp ⁡ ( a k ′ ( x ) ) ) p_k( x )=\exp \left(a_k( x )\right) /\left(\sum_{k^{\prime}=1}^K \exp \left(a_{k^{\prime}}( x )\right)\right) pk(x)=exp(ak(x))/(k=1Kexp(ak(x))),其中 a k ( x ) a_k( x ) ak(x) 表示像素位置 x ∈ Ω x \in \Omega xΩ Ω ⊂ Z 2 \Omega \subset Z ^2 ΩZ2 处特征通道 k k k 的激活。 K K K 是类别的数量, p k ( x ) p_k( x ) pk(x)是近似的最大函数。然后,交叉熵在每个位置上惩罚 p ℓ ( x ) ( x ) p_{\ell( x )}( x ) p(x)(x) 与 1 的偏差,使用下式
E = ∑ x ∈ Ω w ( x ) log ⁡ ( p ℓ ( x ) ( x ) ) E=\sum_{ x \in \Omega} w( x ) \log \left(p_{\ell( x )}( x )\right) E=xΩw(x)log(p(x)(x))
其中 ℓ : Ω → { 1 , … , K } \ell: \Omega \rightarrow\{1, \ldots, K\} :Ω{1,,K} 是每个像素的真实标签, w : Ω → R w: \Omega \rightarrow R w:ΩR 是我们引入的权重图,以赋予某些像素更多的重要性在训练中。我们预先计算每个地面真实分割的权重图,以补偿训练数据集中某一类像素的不同频率,并迫使网络学习我们在接触细胞之间引入的小分离边界。分离边界使用形态学运算计算。然后计算权重图为
w ( x ) = w c ( x ) + w 0 ⋅ exp ⁡ ( − ( d 1 ( x ) + d 2 ( x ) ) 2 2 σ 2 ) w( x )=w_c( x )+w_0 \cdot \exp \left(-\frac{\left(d_1( x )+d_2( x )\right)^2}{2 \sigma^2}\right) w(x)=wc(x)+w0exp(2σ2(d1(x)+d2(x))2)
其中 w c : Ω → R w_c:\Omega\rightarrow R wc:ΩR是平衡类别频率的权重图, d 1 : Ω → R d_1:\Omega\rightarrow R d1:ΩR表示到最近单元格边界的距离, d 2 : Ω → R d_2:\Omega\rightarrow R d2:ΩR表示到第二个最近单元格边界的距离。在我们的实验中,我们设置 w 0 = 10 w_0=10 w0=10 σ ≈ 5 \sigma \approx 5 σ5 像素。

当只有少量训练样本可用时,数据增强对于教会网络所需的不变性和鲁棒性至关重要。对于显微图像,我们主要需要平移和旋转不变性以及对变形和灰度值变化的鲁棒性。尤其是训练样本的随机弹性变形似乎是用很少的带注释图像训练分割网络的关键概念。

代码构建模型

实现可分为三个部分。首先,我们将定义收缩路径中使用的编码器块。该块由两个 3×3 卷积层、后跟 ReLU 激活层和 2×2 最大池化层组成。第二部分是解码器块,它从下层获取特征图,对其进行上转换、裁剪并将其与同级编码器数据连接,然后执行两个 3×3 卷积层,然后执行 ReLU 激活。第三部分是使用这些块定义模型。

编码模块

def encoder_block(inputs, num_filters): 
	x = tf.keras.layers.Conv2D(num_filters, 
							3, 
							padding = 'valid')(inputs) 
	x = tf.keras.layers.Activation('relu')(x) 
	x = tf.keras.layers.Conv2D(num_filters, 
							3, 
							padding = 'valid')(x) 
	x = tf.keras.layers.Activation('relu')(x) 
	x = tf.keras.layers.MaxPool2D(pool_size = (2, 2), 
								strides = 2)(x) 
	return x

解码模块

def decoder_block(inputs, skip_features, num_filters): 
	x = tf.keras.layers.Conv2DTranspose(num_filters, 
										(2, 2), 
										strides = 2, 
										padding = 'valid')(inputs) 
	skip_features = tf.image.resize(skip_features, 
									size = (x.shape[1], 
											x.shape[2])) 
	x = tf.keras.layers.Concatenate()([x, skip_features]) 
	x = tf.keras.layers.Conv2D(num_filters, 
							3, 
							padding = 'valid')(x) 
	x = tf.keras.layers.Activation('relu')(x) 
	x = tf.keras.layers.Conv2D(num_filters, 3, padding = 'valid')(x) 
	x = tf.keras.layers.Activation('relu')(x) 
	
	return x

打印模型简要

import tensorflow as tf 

def model(input_shape = (256, 256, 3), num_classes = 1): 
	inputs = tf.keras.layers.Input(input_shape)  
	s1 = encoder_block(inputs, 64) 
	s2 = encoder_block(s1, 128) 
	s3 = encoder_block(s2, 256) 
	s4 = encoder_block(s3, 512) 

	b1 = tf.keras.layers.Conv2D(1024, 3, padding = 'valid')(s4) 
	b1 = tf.keras.layers.Activation('relu')(b1) 
	b1 = tf.keras.layers.Conv2D(1024, 3, padding = 'valid')(b1) 
	b1 = tf.keras.layers.Activation('relu')(b1) 

	s5 = decoder_block(b1, s4, 512) 
	s6 = decoder_block(s5, s3, 256) 
	s7 = decoder_block(s6, s2, 128) 
	s8 = decoder_block(s7, s1, 64) 

	outputs = tf.keras.layers.Conv2D(num_classes, 
									1, 
									padding = 'valid', 
									activation = 'sigmoid')(s8) 
	
	model = tf.keras.models.Model(inputs = inputs, 
								outputs = outputs, 
								name = 'NetModel') 
	return model 

if __name__ == '__main__': 
	model = model(input_shape=(572, 572, 3), num_classes=2) 
	model.summary()

输出

Model: "NetModel"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_6 (InputLayer)           [(None, 572, 572, 3  0           []                               
                                )]                                                                
                                                                                                  
 conv2d_95 (Conv2D)             (None, 570, 570, 64  1792        ['input_6[0][0]']                
                                )                                                                 
                                                                                                  
 activation_90 (Activation)     (None, 570, 570, 64  0           ['conv2d_95[0][0]']              
                                )                                                                 
                                                                                                  
 conv2d_96 (Conv2D)             (None, 568, 568, 64  36928       ['activation_90[0][0]']          
                                )                                                                 
                                                                                                  
 activation_91 (Activation)     (None, 568, 568, 64  0           ['conv2d_96[0][0]']              
                                )                                                                 
                                                                                                  
 max_pooling2d_20 (MaxPooling2D  (None, 284, 284, 64  0          ['activation_91[0][0]']          
 )                              )                                                                 
                                                                                                  
 conv2d_97 (Conv2D)             (None, 282, 282, 12  73856       ['max_pooling2d_20[0][0]']       
                                8)                                                                
                                                                                                  
 activation_92 (Activation)     (None, 282, 282, 12  0           ['conv2d_97[0][0]']              
                                8)                                                                
                                                                                                  
 conv2d_98 (Conv2D)             (None, 280, 280, 12  147584      ['activation_92[0][0]']          
                                8)                                                                
                                                                                                  
 activation_93 (Activation)     (None, 280, 280, 12  0           ['conv2d_98[0][0]']              
                                8)                                                                
                                                                                                  
 max_pooling2d_21 (MaxPooling2D  (None, 140, 140, 12  0          ['activation_93[0][0]']          
 )                              8)                                                                
                                                                                                  
 conv2d_99 (Conv2D)             (None, 138, 138, 25  295168      ['max_pooling2d_21[0][0]']       
                                6)                                                                
                                                                                                  
 activation_94 (Activation)     (None, 138, 138, 25  0           ['conv2d_99[0][0]']              
                                6)                                                                
                                                                                                  
 conv2d_100 (Conv2D)            (None, 136, 136, 25  590080      ['activation_94[0][0]']          
                                6)                                                                
                                                                                                  
 activation_95 (Activation)     (None, 136, 136, 25  0           ['conv2d_100[0][0]']             
                                6)                                                                
                                                                                                  
 max_pooling2d_22 (MaxPooling2D  (None, 68, 68, 256)  0          ['activation_95[0][0]']          
 )                                                                                                
                                                                                                  
 conv2d_101 (Conv2D)            (None, 66, 66, 512)  1180160     ['max_pooling2d_22[0][0]']       
                                                                                                  
 activation_96 (Activation)     (None, 66, 66, 512)  0           ['conv2d_101[0][0]']             
                                                                                                  
 conv2d_102 (Conv2D)            (None, 64, 64, 512)  2359808     ['activation_96[0][0]']          
                                                                                                  
 activation_97 (Activation)     (None, 64, 64, 512)  0           ['conv2d_102[0][0]']             
                                                                                                  
 max_pooling2d_23 (MaxPooling2D  (None, 32, 32, 512)  0          ['activation_97[0][0]']          
 )                                                                                                
                                                                                                  
 conv2d_103 (Conv2D)            (None, 30, 30, 1024  4719616     ['max_pooling2d_23[0][0]']       
                                )                                                                 
                                                                                                  
 activation_98 (Activation)     (None, 30, 30, 1024  0           ['conv2d_103[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_104 (Conv2D)            (None, 28, 28, 1024  9438208     ['activation_98[0][0]']          
                                )                                                                 
                                                                                                  
 activation_99 (Activation)     (None, 28, 28, 1024  0           ['conv2d_104[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_transpose_20 (Conv2DTra  (None, 56, 56, 512)  2097664    ['activation_99[0][0]']          
 nspose)                                                                                          
                                                                                                  
 tf.image.resize_20 (TFOpLambda  (None, 56, 56, 512)  0          ['max_pooling2d_23[0][0]']       
 )                                                                                                
                                                                                                  
 concatenate_20 (Concatenate)   (None, 56, 56, 1024  0           ['conv2d_transpose_20[0][0]',    
                                )                                 'tf.image.resize_20[0][0]']     
                                                                                                  
 conv2d_105 (Conv2D)            (None, 54, 54, 512)  4719104     ['concatenate_20[0][0]']         
                                                                                                  
 activation_100 (Activation)    (None, 54, 54, 512)  0           ['conv2d_105[0][0]']             
                                                                                                  
 conv2d_106 (Conv2D)            (None, 52, 52, 512)  2359808     ['activation_100[0][0]']         
                                                                                                  
 activation_101 (Activation)    (None, 52, 52, 512)  0           ['conv2d_106[0][0]']             
                                                                                                  
 conv2d_transpose_21 (Conv2DTra  (None, 104, 104, 25  524544     ['activation_101[0][0]']         
 nspose)                        6)                                                                
                                                                                                  
 tf.image.resize_21 (TFOpLambda  (None, 104, 104, 25  0          ['max_pooling2d_22[0][0]']       
 )                              6)                                                                
                                                                                                  
 concatenate_21 (Concatenate)   (None, 104, 104, 51  0           ['conv2d_transpose_21[0][0]',    
                                2)                                'tf.image.resize_21[0][0]']     
                                                                                                  
 conv2d_107 (Conv2D)            (None, 102, 102, 25  1179904     ['concatenate_21[0][0]']         
                                6)                                                                
                                                                                                  
 activation_102 (Activation)    (None, 102, 102, 25  0           ['conv2d_107[0][0]']             
                                6)                                                                
                                                                                                  
 conv2d_108 (Conv2D)            (None, 100, 100, 25  590080      ['activation_102[0][0]']         
                                6)                                                                
                                                                                                  
 activation_103 (Activation)    (None, 100, 100, 25  0           ['conv2d_108[0][0]']             
                                6)                                                                
                                                                                                  
 conv2d_transpose_22 (Conv2DTra  (None, 200, 200, 12  131200     ['activation_103[0][0]']         
 nspose)                        8)                                                                
                                                                                                  
 tf.image.resize_22 (TFOpLambda  (None, 200, 200, 12  0          ['max_pooling2d_21[0][0]']       
 )                              8)                                                                
                                                                                                  
 concatenate_22 (Concatenate)   (None, 200, 200, 25  0           ['conv2d_transpose_22[0][0]',    
                                6)                                'tf.image.resize_22[0][0]']     
                                                                                                  
 conv2d_109 (Conv2D)            (None, 198, 198, 12  295040      ['concatenate_22[0][0]']         
                                8)                                                                
                                                                                                  
 activation_104 (Activation)    (None, 198, 198, 12  0           ['conv2d_109[0][0]']             
                                8)                                                                
                                                                                                  
 conv2d_110 (Conv2D)            (None, 196, 196, 12  147584      ['activation_104[0][0]']         
                                8)                                                                
                                                                                                  
 activation_105 (Activation)    (None, 196, 196, 12  0           ['conv2d_110[0][0]']             
                                8)                                                                
                                                                                                  
 conv2d_transpose_23 (Conv2DTra  (None, 392, 392, 64  32832      ['activation_105[0][0]']         
 nspose)                        )                                                                 
                                                                                                  
 tf.image.resize_23 (TFOpLambda  (None, 392, 392, 64  0          ['max_pooling2d_20[0][0]']       
 )                              )                                                                 
                                                                                                  
 concatenate_23 (Concatenate)   (None, 392, 392, 12  0           ['conv2d_transpose_23[0][0]',    
                                8)                                'tf.image.resize_23[0][0]']     
                                                                                                  
 conv2d_111 (Conv2D)            (None, 390, 390, 64  73792       ['concatenate_23[0][0]']         
                                )                                                                 
                                                                                                  
 activation_106 (Activation)    (None, 390, 390, 64  0           ['conv2d_111[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_112 (Conv2D)            (None, 388, 388, 64  36928       ['activation_106[0][0]']         
                                )                                                                 
                                                                                                  
 activation_107 (Activation)    (None, 388, 388, 64  0           ['conv2d_112[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_113 (Conv2D)            (None, 388, 388, 2)  130         ['activation_107[0][0]']         
                                                                                                  
==================================================================================================
Total params: 31,031,810
Trainable params: 31,031,810
Non-trainable params: 0
__________________________________________________________________________________________________

图像分割和预测

import numpy as np 
from PIL import Image 
from tensorflow.keras.preprocessing import image 

img = Image.open('cat.png') 
img = img.resize((572, 572)) 
img_array = image.img_to_array(img) 
img_array = np.expand_dims(img_array[:,:,:3], axis=0) 
img_array = img_array / 255.

model = umodel(input_shape=(572, 572, 3), num_classes=2) 

predictions = model.predict(img_array) 
predictions = np.squeeze(predictions, axis=0) 
predictions = np.argmax(predictions, axis=-1) 
predictions = Image.fromarray(np.uint8(predictions*255)) 
predictions = predictions.resize((img.width, img.height)) 

predictions.save('predicted_image.jpg') 
predictions

👉更新:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2120907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《黑神话悟空》四大弟子三十六难解锁方法

在《黑神话悟空》的神秘世界中,探索和战斗是永恒的主题。对于许多玩家而言,解锁游戏中的成就不仅是对技巧的挑战,也是对游戏深度理解的证明。今天,就让我们一起深入探索如何解锁“四大弟子三十六难”这一成就,让你的旅…

基于协同过滤算法+SpringBoot+Vue+MySQL的商品推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及…

SmartNews如何赋能日本市场解锁购买力强劲广告营销新篇章

SmartNews如何赋能日本市场解锁购买力强劲广告营销新篇章 在数字化浪潮席卷全球的今天,日本市场以其独特的消费文化和强大的购买力,成为了众多品牌竞相角逐的舞台。而SmartNews,作为一款集新闻聚合、个性化推荐与深度内容分析于一体的智能新…

[Linux]:文件(上)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. C语言文件操作 C语言文件操作接口如下,详情可参照——C语言文…

零基础国产GD32单片机编程入门(十九)红外避障传感器模块实战含源码

文章目录 一.概要二.红外避障模块主要参数1.模块引脚定义2.模块特点3.模块原理图 三.GD32单片机红外避障模块检测实验四.工程源代码下载五.小结 一.概要 红外避障模块具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测遇到障碍物时&…

HTML5( HTML5 、CSS3) 第一天

HTML5 第一天 HTML5 第一天一、什么是 HTML5二、HTML5 新增标签三、多媒体音频标签四、多媒体视频标签五、新增 input 标签六、新增表单属性七、CSS3 新特性八、CSS3 属性选择器九、结构伪类选择器十、nth-child 参数详解十一、nth-child 和 nt-of-type 的区别十二、伪元素选…

写作翻译两不误!Deepl翻译,我的创意加速器

嘿,朋友们!有没有觉得有时候写论文的摘要、给外国朋友发邮件,或者追剧的时候没有字幕,这些都挺让人头疼的?就像是在猜谜语一样难搞?别担心,我有个好消息要告诉大家,2024年翻译界出了…

azkaban安装

azkaban安装 Azkaban介绍azkaban三大组件 Azkaban安装1、下载地址2、安装前准备3、安装1、分别解压web-server、executor-server2、初始化脚本 4、配置ssl认证5、配置 execServer6、配置web-server7、配置user8、启动、激活 验证 Azkaban介绍 Azkaban是由Linkedin开源的一个批…

【西电电装实习】3. SMT

前言 西电电装实习 定义 SMT,全称为Surface Mount Technology,即表面贴装技术。 是一种将电子元器件直接贴装在印刷电路板(PCB)表面的工艺。 与传统的插针式组装方法相比,SMT技术具有更高的组装密度、更小的电子产品…

excel提示宏病毒处理

excel提示宏病毒如何解决? 文章目录 操作步骤1、打开文件2、找到选项3、点击信用中心4、点击信任中心设置5. 依次点击:点击宏设置→通过通知禁用 VBA 宏(A)→(去掉√)信任对VBA工程对象模型的访问→确定6、…

MySQL总结(上)

目录 一、SQL语句1.1、DDL(数据库定义语言)1.1.1、定义数据库1.1.2、定义数据表 1.2、DML(数据库操作语言)1.2.1、增加 insert into1.2.2、删除 delete1.2.3、修改 update 1.3、DQL(数据库查询语言)1.3.1、…

info_scan!自动化漏洞扫描系统,附下载链接

在我们团队的日常工作中,定期进行安全演练和漏洞扫描几乎是必不可少的。每次安全互动我们都需要对关键资产进行全面的安全评估,及时发现可能存在的安全隐患。 就在上周,我们针对几个主要服务进行了例行的漏洞扫描。在这个过程中,…

【数学分析笔记】第3章第2节 连续函数(3)

3. 函数极限与连续函数 3.2 连续函数 【Riemann(黎曼)函数】 R ( x ) { 0 , x 是无理数 1 p , x q p , p ∈ N , q ∈ Z 且 q ≠ 0 , p 与 q 互质 1 , x 0 R(x)\left\{\begin{matrix} 0&,x是无理数 \\ \frac{1}{p}&,x\frac{q}{p},p\in\mat…

你真的懂吗系列——GPIO

你真的懂吗 文章目录 你真的懂吗前言一、GPIO介绍二、GPIO基本结构三、GPIO的八种模式浮空输入输入上拉输入下拉模拟输入开漏输出推挽输出什么是推挽结构和推挽电路?开漏输出和推挽输出的区别?开漏式复用推挽式复用 前言 最近在做STM32的时候发现有些寄…

利用 Zero-1-2-3 进行多视图 3D 重建:从单图像到多视图 3D 模型的生成

3D 模型生成在计算机视觉领域有着广泛的应用,从虚拟现实到自动驾驶,基于单张图像的 3D 重建技术正在迅速发展。这篇博客将带你深入探索如何使用 Zero-1-2-3 框架进行多视图 3D 重建,通过详细解析该框架中的代码结构和功能,帮助你理…

BUUCTF 之Basic 1(BUU LFI COURSE 1)

1、启动靶场,会生成一个URL地址,打开给的URL地址,会看到一个如下界面 可以看到是一个PHP文件,非常的简单,就几行代码,判断一下是否有一个GET的参数,并且是file名字,如果是并且加载&a…

C语言 预处理详解(二) #命令行定义 #条件编译 #文件包含 #其他预处理指令

文章目录 前言 一、命令行定义 二、条件编译 三、文件包含 什么叫做文件包含? (一)、本地文件包含 (二)、库文件包含 如何做才能避免头文件被多次包含呢? 方法一:利用条件编译: 方法二:利用 #pragma once 四、其他预处…

鸿蒙界面开发——组件(8):图形绘制

绘制几何图形——父组件Shape 绘制组件的父组件,父组件中会描述所有绘制组件均支持的通用属性。 1、绘制组件使用Shape作为父组件,实现类似SVG的效果。 2、绘制组件单独使用,用于在页面上绘制指定的图形。 Shape(value?: PixelMap) value …

指针之旅(4)—— 指针与函数:函数指针、转移表、回调函数

目录 1. 函数名的理解 1.1 “函数名”和“&函数名”的含义 1.2 函数(名)的数据类型 2. 函数指针(变量) 2.1 函数指针(变量)的创建格式 2.2 函数指针(变量)的使用格式 2.3 例子 判别 3. typedef 关键字 3.1 typedef的作用 3.2 typedef的运作逻辑 和 函数指针类型…

全球瞩目丨2024深圳秋季糖酒会火热招商中

第 111 届深圳秋季全国糖酒会 2024 年 10 月29-31日 将在深圳国际会展中心(宝安新馆)盛大举行。 这是一场备受瞩目的行业盛会, 为企业提供了一个展示产品、 拓展市场、加强合作的绝佳机会。 作为亚洲地区食品行业规模最大、最具影响力的…