光栅化及深度测试
光栅化光栅化(Rasterization)是图形学中一种常用的渲染技术,用于将三维场景中的图形对象转换为二维像素表示,以便在计算机屏幕上显示,即将图形对象(通常是三角形)映射到屏幕上的像素格子,并确定每个像素的颜色值。
选择三角形作为渲染的基本图元的原因:
因为三角形是最简单的几何形状之一,任意三个点可以确定一个平面上的三角形
任意多边形都可以被分解为若干个三角形,这种分解使得处理复杂的多边形图形变得更加容易。
三角形在仿射变换下保持平面性,对三角形的变换相对简单,而不会引入复杂的扭曲。
1.直线光栅化算法1.1 DDA数值微分算法通过两点确定一条直线的斜率(k),若|k|<=1,选择x方向作为步长(选择变换快的方向),若|k|>1,选择y方向作为步长。
注:在所选的步长方向上,从起始点 (x0, y0) 开始,计算每个下一个点的坐标 (xi, yi)。对于x方向的步长,使用 xi+1 = xi + 1;对于 y 方向的步长,使用 yi+1 = yi + m。(y的结果要四舍五入)
1.2 Bresenham直线绘制算法Bresenham直线绘制算法通过在每个步骤 ...
SPM
SPM论文:《Learning with Explicit Shape Priors for Medical Image Segmentation》(TMI 2023)
探索形状先验(shape priors)对分割性能的影响
基于unet的医学图像分割模型的局限性:cnn的感受野有限,无法利用器官或组织之间的远距离和全局空间关系,无法实现精细的形状表示。(注意力模块扩大模型的感受野,隐式地捕获形状信息)
注:通过设计特定的损失函数,而不是Dice损失或交叉熵损失,将明确的形状先验集成到分割框架中。但这些损失函数是特定于任务的,不能很容易地扩展到不同的数据集
提出了显式形状模型(SPM),以形状先验作为额外的输入来增强模型的形状表示能力。
其中F代表模型的前向传播,S代表构造图像I和标签L之间映射的形状先验。
注意力图:生成的形状先验在推断阶段充当了注意力图,用于定位感兴趣的区域,并抑制背景区域
SPM模块:
SPM模块由the self-update block (SUB)、cross-update block (CUB)
the self-update block (SUB) ...
MedNeXt
MedNeXt: Transformer-driven Scaling of ConvNets for Medical Image Segmentation论文:《MedNeXt: Transformer-driven Scaling of ConvNets for Medical Image Segmentation》(MICCAI 2023)
1.网络结构
MedNeXt Block:
深度卷积层(DW):k × k × k的深度卷积,归一化使用channel-wise GroupNorm
Expansion Layer:较大的 R 值允许网络在宽度方向上扩展,而 1×1×1 核限制了计算量
Compression Layer:1×1×1卷积层对输出通道进行压缩
MedNeXt Down Block和MedNeXt Up Block:
添加了一个残差连接1×1×1卷积或转置卷积,步幅为2
解码器层使用深度监督,在较低分辨率下具有较低的损失权值(深度监督:在网络的中间部分添加了额外的loss,不同位置的loss按系数求和。深度监督的目的是为了浅层能够得到更加充 ...
nnUNet v2模型训练
nnUNet v2模型训练1.数据集处理nnUnet要求rgb-png格式的数据,故将原数据集由单通道堆叠成三通道的RGB图像
123456789101112131415161718192021222324252627282930313233343536373839import cv2import numpy as npimport osdef gray_to_rgb(image_gray): # 创建一个全零的三通道图像 height, width = image_gray.shape image_rgb = np.zeros((height, width, 3), dtype=np.uint8) # 将灰度图像的值复制到红通道 image_rgb[:, :, 2] = image_gray image_rgb[:, :, 1] = image_gray image_rgb[:, :, 0] = image_gray return image_rgb# 设置目标文件夹路径 # 包含灰度PNG图像的文件夹路径output_folder = ...
3D UX-NET
3D UX-NET论文:《3D UX-NET: A LARGE KERNEL VOLUMETRIC CONVNET MODERNIZING HIERARCHICAL TRANSFORMERFOR MEDICAL IMAGE SEGMENTATION》(ICLR 2023)
1.网络结构
采用具备大卷积核的投影层来提取 patch-wise 特征作为编码器的输入
对Swin transformer的transformer block做了替换:
使用大卷积核(7 × 7 × 7)的深度卷积来模仿Swin Transformer的局部自注意力和窗口移动。
使用2 × 2 × 2、步幅为2的标准卷积块来实现下采样
在Swin Transformer中MLP隐藏层维度比输入维度宽四倍,引入了具有 1 × 1 × 1 卷积核大小的深度卷积缩放(DCS),以独立地线性缩放每个通道特征,减少跨通道上下文产生的冗余信息
DCS:1x1x1的深度卷积+1x1x1的分组卷积
从实验中发现:使用深度卷积缩放(DCS)参数量得到了减小,效果并没有下降
编码器的输出特征由残差块作进一步的处理,以稳定提取的特 ...
图像分割常用指标
图像分割常用指标1.DSC(Dice相似系数)DSC:用于衡量区域的重合程度
计算公式:
DSC = (2 * |A ∩ B|) / (|A| + |B|)其中,A为算法生成的分割结果的像素集合,B为参考分割结果的像素集合
DSC值范围在0到1之间,其中0表示完全不相似,1表示完全相似。
DSC值越接近1,表示算法生成的分割结果与参考分割结果越相似
注:Dice相似系数仅考虑了像素的重叠情况,而没有考虑像素之间的空间关系,在存在模糊边界的分割任务中,Dice系数可能无法准确评估模型的性能。
2.HD(豪斯多夫距离)HD:表示预测分割区域边界与真实区域边界之间的最大距离,其值越小代表预测边界分割误差越小、质量越好。
计算公式:
计算步骤:
(1)对点集X中的每一个点x计算其到点集Y中的每一个点y的距离,保留最短距离,然后找出保留的最短距离中的最大距离记为Dxy。
(2)对点集Y中的每一个点y计算其到点集X中的每一个点x的距离,保留最短距离,然后找出保留最短距离中的最大距离记为Dyx。
(3)取Dxy和Dyx最大值作为点集X和Y之间的豪斯多夫距离。 ...
nnFormer
nnFormer论文:《nnFormer: Volumetric Medical Image Segmentation via a 3D Transformer》(TMI2022)
1.网络结构
编码器nnFormer的输入:对原始图像中随机裁剪(HxWxD),数据增强技术,有助于模型更好地学习不同部分的特征。
The embedding layer:(将输入数据转换成高维张量)
使用卷积的好处:对比transformer使用线性层对patch的向量进行映射,卷积层能够更细致地捕获图像中的像素级信息(减少了训练的参数数量,卷积核在处理特定区域时更加专注)
在初始阶段使用小卷积核的连续卷积层,相对于大卷积核的好处:降低计算复杂度,同时保持相同大小的感受野(非线性激活函数多了,语义表达能力增强了)
注:根据输入的patch大小卷积步长也会有相应的变化
Local Volume-based Multi-head Self-attention (LV-MSA):将不同尺度的信息和高分辨率的空间信息相互关联
不同尺度的特征由下采样层生成,高分辨率的空间信息则由嵌入层编码
使用的是一种基于局 ...
File类
File类1.创建File类的对象
1234567//创建一个File对象,指向某个具体的文件 File f1=new File("./data/test.txt"); System.out.println(f1.length());//文件大小 File f2=new File("./data/aaa.txt");//File对象可以指向空路径 System.out.println(f2.length());//0 System.out.println(f2.exists());//false
2.判断文件类型、获取文件信息
1234567891011121314151617181920//1.创建一个File对象,指向某个具体的文件 File f1=new File("./data/test.txt"); //2.判断文件路径是否存在 System.out.println(f1.exists()); //3.判断文件对象是否是文件 ...
卷积编码位置信息
论文:《HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?》(ICLR2020)
论文内容:初步实验:
对原始图像和裁剪过的图像进行显著性检测。
显著的区域分析,对于相同的物体,在不同的边缘下,显著性区域始终靠近图像中心。
推测:位置信息在 CNN 网络提取的特征图中被隐式编码
Position Encoding Network:
a feed forward convolutional encoder network $f_{enc} $:使用预训练的VGG或者 ResNet,仅作为前馈网络,其参数不参与训练。为前馈网络的在五个卷积层产生的特征图,使用双线性插值缩放到统一尺寸进行拼接,之后输入到 Position Encoding Module 中。
position encoding module:一般卷积网络,其卷积核未使用Padding。
作者使用该网络判断卷积层产生的特征图中是否包含位置信息。
垂直(H)和水平(V)方向的梯度掩码、应用高斯滤波器来设计另一种类型的真值图,高斯分布(G) ...
Java集合框架
集合框架1.泛型泛型:允许在编写类、接口和方法时使用类型参数,以在运行时确定具体的数据类型,用于增强类型安全性和代码的可重用性
1.1 泛型类泛型类:类名<T,...>,T是类型占位符,表示一种引用类型,如果编写多个用逗号隔开
1234567891011121314151617181920212223public class MyGeneric<T> { //1.创建变量 T t; //2.使用泛型作为方法的参数 public void show(T y){ System.out.println(t); } //3.使用泛型作为方法的返回值 public T getT(){ return t; }}class test2{ public static void main(String[] args) { //使用泛型类创建对象 MyGeneric<String> ...