自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 VScode SSH突然失效

VScode 远程连接服务器突然失效的问题,可以通过删除。文件后再重新连接解决。

2023-06-18 03:16:13 329

原创 Keras自定义训练过程中实时评估模型的Metrics Class

在深度学习任务中经常需要自定义函数类来满足独特的模型评估,基于Keras的自定义Metrics Class的代码实现如下。

2022-09-02 22:39:08 665 1

原创 CAM (Classification Attention Maps) Generation with Multi-workers in Keras

Keras使用多个workers加速生成CAM简述Keras官方文档中有如何生成CAM热图的参考代码,但是如果对大量测试图像生成CAM则需要使计算过程更加高效。本博文在Keras官方文档代码基础上进行修改实现使用多个workers加速生成CAM。使用multi-workers加速的部分主要是读取原始图像和向原始图像上添加热图两部分。加速生成热图部分主要是调高batch size。下面以一个适用于2分支分割任务的代码来举例,读者可根据自己的需求自行修改。代码细节1. 主程序模块def grad_

2022-05-05 02:33:04 460

原创 Keras DataGenerator with Multi-workers 加速读取训练数据(从单一数据集文件夹中读取)

Keras DataGenerator with Multi-workers 加速读取训练数据(从单一数据集文件夹中读取)描述训练集比较大的时候需要使用multi-workers来加速数据集的读取,如果已经预先进行了数据集的平衡工作并将训练所需的数据集都存在了一个文件夹下,则可用此博文的代码实现数据读取加速。如果读者需要对多个不等长的数据集文件夹同时进行读取,则请参考博文Keras DataGenerator with Multi-workers 加速读取训练数据(同时从多个不等长数据文件夹中读取)代

2022-04-07 03:05:15 442

原创 基于Keras的Channel-Spatial Attention Layers的实现

基于Keras的Channel-Spatial Attention Layers的实现描述Attention被应用于医学图像分割领域以提高神经网络对空间特征及通道的关注度,从而提高分割任务的精确程度。本文根据参考文献实现一种Spatial Attention 和Channel Attention融合使用的注意力层。代码展示1.Spatial Attention Layerclass SpatialAttention(Layer): def __init__(self,outChan,fe

2022-04-06 23:46:22 3594 1

原创 Keras DataGenerator with Multi-workers 加速读取训练数据(同时从多个不等长数据文件夹中读取)

Keras DataGenerator with Multi-workers 加速读取训练数据描述:对于训练任务,有时数据量很大且不同类型的数据存放在不同的文件夹中而且每个文件夹内的数据长度不相同,如果想要快速的从多个文件夹中读取训练数据就需要使用多个worker进行同步读取操作。下面将详细展示能实现快多worker快速数据读取的python代码。代码展示以我自己目前四分类任务的数据读取来举例:1. DataGenerator Modulefrom concurrent.futures impo

2022-04-06 23:20:50 907

原创 VSCode python debug突然失效问题的解决

VSCode python debug突然失效问题的解决问题描述VSCode突然对python文件就不能进行debug了,但是可以正常直接运行,如果点击’Run and Debug’会没反应。解决办法应该是python插件自动更新的原因,将python插件的版本回退到之前的旧版本即可。旧版本的python extension可以在在这里下载https://code.visualstudio.com/updates/v1_66Reference:https://docs.microsoft.c

2022-04-04 19:05:13 8060 10

原创 Keras在训练过程中根据epoch的值更换loss function

不停止训练根据epoch值更换loss function以大于50epoch时将binary cross-entropy loss转换为focal loss为例。1. 代码实现Net Moduleclass Net(object): def __init__(self,epochs,img_rows,img_cols): # initialize your parameters self.epochs = epochs self.img_rows =

2022-01-21 22:18:31 2132 5

原创 不规则形状渐变掩模(gradient mask)的生成

渐变掩模对于规则形状,比如圆形的渐变掩模生成是比较简单的,因为每一圈上像素的位置是固定的,只需要对每一圈上的像素填充上不同的值即可生成渐变的Mask,如图1所示为一个圆形的渐变Mask。图1但是这种Mask生成方式并不适用于不规则的形状,下面将描述一种生成不规则形状Mask的方法。不规则渐变Mask的生成如图2所示为一个不规则的圆环形状。如果希望图示的白色区域是一个渐变的显示,则可以图像中心为原点,作多条直线进行采样(图3),则可得到每条直线穿过的像素点坐标,继而实现径向的像素值的渐变。图2本

2022-01-07 23:27:00 1971

原创 Keras 多输出Loss加权和不等于Total Loss

多输出模型各子loss的加权和数值上不等于总Loss是因为模型中使用了L1或L2正则化项有正则化项的Total Loss = weight*subLoss + regularize_lossReferences:https://stackoverflow.com/questions/57902381/keras-loss-seems-to-be-wrong-weighted-sum-is-wronghttps://stackoverflow.com/questions/55969404/summi

2021-12-20 20:31:08 520

原创 TF2 build-in Keras在eager及非eager模式下callback训练过程中梯度的方式

Class Activation Map / Gradient Attention Map分类/分割任务中可能会需要对训练过程中某些层的计算梯度进行操作,对于Keras来说我们可以通过使用Callback()实现返回梯度的目的,具体的例子如下所示,分为非eager模式和eager模式两部分。1. 非eager模式tf.compat.v1.disable_eager_execution() # 这句一定要加上!def get_gradient_func(model): ## If usin

2021-12-14 21:50:49 2112

原创 Win10远程连接使用Cluster提交任务时报错batch: error: Batch script contains DOS line breaks (\r\n) sbatch: error

描述:Win10系统的笔记本远程连接办公室的Win10工作站,然后用Win10工作站向集群服务器提交任务。这时直接在集群服务器linux环境下编辑的bash.sh文件是无法正常被运行的,使用vim打开文件重新编辑也无法解决报错,会提示如下所示的报错:batch: error: Batch script contains DOS line breaks (\r\n)sbatch: error: instead of expected UNIX line breaks (\n)此时用vscode将b

2021-12-11 05:09:42 1140

原创 layout failed: Invalid argument: Size of values 0 does not match size of permutation 4 @ fanin shape

Keras使用tf.where()时由于维度顺序不对报错2021-12-10 21:38:30.064007: E tensorflow/core/grappler/optimizers/meta_optimizer.cc:801] layout failed: Invalid argument: Size of values 0 does not match size of permutation 4 @ fanin shape inmodel/tf.where/SelectV2-1-Transpo

2021-12-11 04:54:50 4718 5

原创 PyTorch中Warm Up学习率不使用就不要定义否则影响学习率一直为0

踩坑描述:如果定义了warm Up学习率的衰减方式如下, if args.decay_type == "cosine": scheduler = WarmupCosineSchedule(optimizer, warmup_steps=args.warmup_steps, t_total=t_total) else: scheduler = WarmupLinearSchedule(optimizer, warmup_

2021-12-07 17:50:52 2485 3

原创 Keras多输入模型(多迭代器输入)数据加载方法

Keras多迭代器输入有时训练模型时需要有多个输入,虽然官方文档给出了多个输入的举例Models with multiple inputs and outputs。但是举例中只给出了矩阵输入的具体情况,对于迭代器输入具体细节没有展示。对于大数据量的情况通常需要使用迭代器批次读入数据进行训练,下面展示使用多个迭代器输入的具体代码细节。DataGenerator:class DataGenerate3(tf.keras.utils.Sequence): 'Generates data for Ke

2021-11-18 01:51:15 1014

原创 linux系统无root权限安装cuda-11.2及cudnn-8.1

linux系统无root权限安装cuda-11.2及cudnn-8.1目前支持最新版本Tensorflow-gpu-2.6.0 的是cuda11.2和cudnn8.1,各版本tensorflow对应的cuda及cudnn版本见链接tensorflow-gpu在linux下无root权限时,无法通过官方给出的如下安装命令安装sudo sh cuda_11.2.0_460.27.04_linux.run直接从https://anaconda.org/nvidia/cudatoolkit/files下载

2021-10-27 04:50:01 1594 3

原创 多层文件夹递归的MATLAB和Python实现

MATLAB实现:function scanDir(root_dir)% if isempty(varargin)% root_dir = uigetdir;% end% files={};if root_dir(end)~='\' root_dir=[root_dir,'\'];endfileList=dir(root_dir); %扩展名n=length(fileList);for i=1:n if strcmp(fileList(i).name,'.')==1||

2021-07-19 17:53:33 224

原创 Patch-GAN (Discriminative Network) 的Pytorch实现

Patch-GAN (Discriminative Network)Patch-GAN可以在对抗学习中被用作discriminator,参考Markovian Generative Adversarial Networks结构中的Discriminative network部分(图1)进行Pytorch代码实现。网络结构的具体细节可参考下述文献:[1] Li, C. , and M. Wand . “Precomputed Real-Time Texture Synthesis with Marko

2021-07-16 17:46:27 3478 6

原创 VGG在中间层进行输出的Pytorch实现

简介搭建网络时有时需要使用到VGG网络的部分结构(如图1所示),这时需要在VGG网络的中间层输出。图1所示的鉴别器网络就分别需要从Relu3_1和Relu5_1层进行输出。图1 鉴别器网络参考博文VGG的Pytorch实现代码,修改部分代码实现VGG网络在中间层输出。https://blog.csdn.net/zhanghao3389/article/details/85038252VGG网络不同层的名称描述可参照博文:https://blog.csdn.net/dudek/articl

2021-07-16 15:51:28 672

原创 基于Operator Discretization Library (ODL)的CT图像正反投

持续更新…1. FBPimport odlimport matplotlib.pyplot as pltreco_space = odl.uniform_discr(min_pt=[-20, -20], max_pt=[20, 20], shape=[512, 512])geometry = odl.tomo.parallel_beam_geometry(reco_space)projector = odl.tomo.RayTransform(reco_space,geometry, impl=

2021-07-15 18:00:13 2941 11

原创 Pytorch实现CT图像正投影(FP)与反投影(FBP)的模块

FP/FBP Modules有关CT图像重建或图像处理的训练任务有时需要数据在投影域和图像域上进行变换,为了能使梯度在投影域和图像域之间进行传播,需要实现Forward Projection与Back Projection模块。参考文献中提到的平行束正反投方法,可以进行网络中正反投模块的Pytorch实现。[1] Zhao, J. , et al. “Unsupervised Learnable Sinogram Inpainting Network (SIN) for Limited Angle

2021-07-09 16:14:38 6095 9

原创 h5py将MATLAB中mat结构体转换为Python的dict形式

h5py将MATLAB中mat结构体转换为Python的dict形式,Python代码如下:def mat2dict(path, strname): struct_mat = h5py.File(path,'r')# 将MATLAB结构体读入 struct_dict = dict() struct_keys = list(struct_mat[strname].keys()) # 结构体中所有的key for i in range(len(struct_keys)):

2021-07-07 11:59:07 561

原创 大津阈值(otsuthresh)的Python实现

参照《数字图像处理》中对大津阈值的理论描述,Python可如下实现import numpy as npdef otsuthresh(h): h = h/sum(h) i = np.arange(1,h.size+1) P1 = np.cumsum(h) m = np.cumsum(i*h) mG = m[-1] eps = 2.2204*pow(10,-16) sigSquared = np.power((mG*P1-m),2)/(P1*(1-P1

2021-07-07 11:39:15 1101

原创 Python实现MATLAB函数regionprops(BW, ‘Extrema‘)功能

Python实现MATLAB函数regionprops(BW, ‘Extrema’)功能Python软件包skimage中的measure.regionprops()与MATLAB函数regionprops()功能相似。返回二值化图像区域顶点坐标MATLAB中使用的是regionprops(BW,‘Extrema’),可以返回八个顶点坐标,如图1所示。而Python中measure.regionprops(BW)[‘bbox’]只返回四个顶点坐标(min_row,min_col,max_row,max_

2021-07-07 10:42:58 1434 2

原创 快速批量Radon变换的Python实现——使用PyTorch函数affine_grid和grid_sample

Radon变换的旋转过程Radon变换的旋转过程可以使用ndimage.rotate()对图像进行特定角度的旋转,但这个过程比较耗时,不利于投影角度较多或者需要对批量图像进行Radon变换的情况。而通过利用PyTorch中的仿射变换相关函数affine_grid()和grid_sample()也可以实现旋转的过程,可以在GPU上进行运算,Radon变换所需的时间大幅减少。快速批量Radon变换的Python实现from scipy import ndimageimport numpy as npi

2021-05-12 14:37:17 1916 2

原创 扇形束CT重建快速生成系统矩阵(system matrix)的Python实现

import numpy as npimport mathSDD = 962.9SOD = 570ReconCentre = [0,0]pixel_spacing = 0.6836channel_spacing = 0.5channel_num = int(1024)view_num = 720image_size = 512'''每个探测器单元的中心(每条Ray在探测器上的landpoint)到探测器中心的距离'''Ray2DetCentre = []for i in ran

2021-05-05 15:52:03 3083 13

原创 Python写入DICOM文件(AttributeError: ‘FileMetaDataset’ object has no attribute ‘TransferSyntaxUID’解决方式)

写入DICOM文件import numpy as npimport matplotlib.pyplot as pltimport pydicomimport sysdef InitDicomFile(): infometa = pydicom.dataset.Dataset() infometa.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian infometa.ImplementationVersionName

2021-04-28 17:08:31 2064 2

原创 Python实现平行束滤波反投影——Inverse Radon Transformation

参考博文进行了平行束滤波反投影的修改,将时域滤波修改为频域滤波,重建后消除原博文中图像的竖条状伪影。https://blog.csdn.net/hsyxxyg/article/details/106433940频域平行束滤波反投影(反radon变换)产生频域滤波信号:nextpow2函数的实现可参见github:https://github.com/freenowill/Denoise-/blob/ba99babb685f6c80f07a23275c8c2127de601815/Denois

2021-04-21 17:39:49 2257 7

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除