
计算机视觉
文章平均质量分 82
normol
先做人,后做事。
展开
-
StyleCLIP global direction详解
CLIP中虽然图像特征与文本特征不存在一一对应的关系,但相同的语义下,图像特征的变化方向与文本特征的变化方向是一致的,如下图右侧的man,woman所示可以将stylegan中隐空间的语义变化方向投影至CLIP空间(下图左下角),这样若命令为man->woman,则可以首先计算CLIP中文本特征对应的变化方向Δt\Delta tΔt,再计算该Δt\Delta tΔt与CLIP中间中所有图像变化方向Δi\Delta iΔi的共线程度(即变化方向一致),取出共线程度大的Δi。原创 2023-10-19 17:19:08 · 558 阅读 · 1 评论 -
pytorch dataloader输出shape探讨(RNN format)
前言:第一次接触视频分割相关的网络(RVOS,https://github.com/imatge-upc/rvos),发现网络dataloader的输出数据格式不是batch first,而是[length_of_clips, batch_size, channels, height, width]。经过实验发现:若Dataset返回tensor对象,则dataloader输出常规的[batch_size, length_of_clips, channels, height, width],(即batch原创 2021-04-25 20:48:24 · 5836 阅读 · 2 评论 -
pytorch F.affine_grid F.grid_sample探究
在pytorch框架中, F.affine_grid 与 F.grid_sample(torch.nn.functional as F)联合使用来对图像进行变形。F.affine_grid 根据形变参数产生sampling grid,F.grid_sample根据sampling grid对图像进行变形。需要注意,pytorch中的F.grid_sample是反向采样,这就导致了形变参数与直觉是相反的(后面有实验验证)(例如放射矩阵中的缩放因子是0.5,会使目标图像扩大两倍;平移为正会使目标图像往左上角原创 2020-08-27 17:20:03 · 10575 阅读 · 5 评论 -
pytorch Sequential ModuleList与python list构建网络比较
参考别人博客,自己实验并总结,供参考。import torchimport torch.nn as nn"""比较了nn.Sequential,ModuleList与python list构建网络的区别"""class net1(nn.Module): def __init__(self): super(net2, self).__init__() self.conv = nn.Sequential(nn.Conv2d(3, 5, 5, 0))原创 2020-08-26 10:02:47 · 684 阅读 · 0 评论 -
弹性变形与采样,旋转,形变场可视化
文章目录采样变形场可视化变形与可视化实例STN(Spatial Transform Network)Dense Deformation(Elastic deformation)的采样与可视化对于采样(sample)而言,分为前向与后向。前向直观上更容易理解,但实际应用会有问题,因此,算法中的采样操作一般为后向。采样前向采样:将输入图像坐标p1根据DDF(Dense deformatio...原创 2020-05-06 20:20:54 · 3472 阅读 · 4 评论 -
神经网络 高维空间的理解
首先,先看一下在分割问题中,最常见的one-hot编码直观上是如何进行的,以及是怎样进行preds的下图(图一),是常见的ground-truth分割图,一共有两个类别(背景可以作为0,不单独作为一个类别)如果想进行cross-entropy计算损失函数等,就需要对图一的label进行one-hot编码,直观上会变成下图所示(图二)然后,我们的图片经过神经网络,训练好之后,输出的预测值就...原创 2019-04-04 20:07:56 · 4126 阅读 · 0 评论 -
FCN 中metric的深入理解与对应代码
首先来看一下原始论文的描述:一开始我对n_ji和n_ij的理解挺绕的。后来理清楚了之后发现很简单:∑inii\sum_{i}n_{ii}∑inii 即class i 被正确分成了class i。 True Positive∑jnij=ti\sum_{j}n_{ij}=t_i∑jnij=ti 即class i 被正确分成了class j,然后对class j求和。这就是ground...原创 2019-04-06 11:12:56 · 850 阅读 · 1 评论 -
医学图像分割 基于深度学习的肝脏肿瘤分割 实战(二)
在医学图像分割 基于深度学习的肝脏肿瘤分割 实战(一)中原创 2019-04-02 13:46:19 · 26656 阅读 · 28 评论 -
python matplotlib需要注意的坑
仅是临时记录一下,避免忘记当plt有subplot时,注意数据格式要按要求,要么是0-1的浮点数,要么是0-255的整数,若sbuplot有两幅图时,一副是0-255符合规范的整数,另一幅是0.0-255.0不符合规范的浮点数,则不合符规范的图片不能正确显示。此外,plt的imshow能正确处理范围外的图片,例如若范围超出了255,那么plt内部能够进行转化并显示出转换后正确范围的图片。...原创 2019-05-27 15:39:17 · 1999 阅读 · 0 评论 -
Selective Search与Graph-Based Segmentation python实现(一)
在用深度学习做完肿瘤分割后,因为需要对比实验,所以当时(2019-4-13)在传统方法里找到过Felzen的Graph-Based Segmentation,而且那个时候还混淆了Graph-Cut分割和Graph-Based分割,因为看名字以为Graph-Based segmentation是一个大的类别,其实并不是。 当时虽然也学习了关于这个分割算法的知识,但是流于形式,一下就忘了,仅用...原创 2019-05-28 15:42:16 · 954 阅读 · 3 评论 -
voxel 转换为 patient coordinate(python实现)
dcm其实自己感觉还未完全理解(博客内容若有错误请指出),先记下来,等答辩、课题等事情弄好再重新学习并补充。一些基础概念别人博客已经写的很好了,我理解的关键点为:1、病人坐标系的xyz定义方向为LPS2、图像坐标xy定义方向:(0,0)代表图像左上角,(max(x),max(y))代表图像右下角(这儿x的延伸方向也是i的延伸方向,y的延伸方向等同于j的延伸方向)3、仿射变换矩阵定义为...原创 2019-06-05 20:31:35 · 1172 阅读 · 1 评论 -
激活函数与对应的损失函数选择(binary与multi-class如何选择损失函数)
之前一段时间,对激活函数和损失函数一直是懵懂的状态,只知道最后一层常用的激活函数是sigmoid或者softmax,而损失函数一般用的是cross-entropy或者dice loss(我看的都是分割方向的)。但是有几个点一直弄不清为什么:1、为什么有时候二值分割问题还进行了one-hot编码?2、sigmoid和softmax是可以任意切换的吗?下面是我理解的东西,但不一定正确,仅供参考。...原创 2019-03-24 13:09:43 · 2667 阅读 · 5 评论 -
医学图像预处理(五) 器官与病灶的直方图
事情起因是:用模型训练分割肝脏,效果还不错。但是训练分割肝脏肿瘤时,dice系数很低。由于已经经过ROI处理,和图像预处理过程,所以只可能是数据层面出现了问题。经过查看,发现很多ct图是即使用肉眼也无法分辨出肿瘤的。论文中给出的那种图片,肿瘤与肝脏对比度很高,但这种情况只是数据集中的少数。为了验证自己的想法,在LITS2017的数据集上,做出了130个病人对应的肝脏与肿瘤的hu直方图,发现果然如...原创 2019-03-30 09:56:22 · 7715 阅读 · 5 评论 -
自己实现knn,进行图片分类(python)
数据集下载这是斯坦福课程的作业,根据大纲里面assignment1内的提示,下载好实验所需要的数据集。目录前言:代码主体:part1 数据的导入以及预处理part2 knn训练以及预测具体实现3.1 数据导入3.2 计算dist(三种实现,由易到难,原理相同)3.3 预测通过Cross-validation选取hyperparameters前言:...原创 2018-11-18 13:39:26 · 19036 阅读 · 4 评论 -
医学图像分割 unet实现(一)
这次实验用来学习unet网络实现图像分割(keras, backend: tensorflow)。数据集DRIVE:为眼部图像,目的是分割出眼部血管。数据集结构:上面分别是训练的原始图片images、first_manual、mask整体流程:1、前期准备:将所有图片写入h5文件,(为了后期训练网络时减少io时间)2、训练网络2.1、获取训练图片和groundtruth图片...原创 2019-02-27 17:39:35 · 46720 阅读 · 66 评论 -
医学图像预处理(一)——读取图片(dcm,nii,PIL,skimage,cv2)
总结一下目前遇到的一些医学图像预处理步骤,但才开始自学两周,所以很多东西或许不对或者不全面,以后争取每两周回顾以前的文章,将内容完善,并提高质量。(2019-3-5)由于篇幅原因,将预处理的步骤分开来,这一篇将总结读取图片的方法。文章目录读取DICOM格式读取普通的图片案例一:skimage读取图片案例二,PIL读取图片读取nii格式读取DICOM格式用到的包:pydicom例如,以公共...原创 2019-03-05 13:38:46 · 33937 阅读 · 4 评论 -
医学图像预处理(二)——重采样(resampling)
之所以需要重采样是由于不同的病人体型不同,但最后数字成像的分辨率是一样的,这就导致了一定程度的失真变形。但医学图像例如dcm或nii格式,都会带有SliceThickness,PixelSpacing类似的属性,可以利用这些属性去尽量还原真实物体。例如:现在希望spacing变为(1,1),意思是希望数字成像的图片大小就代表原始物体大小。若spacing=(2,2)则表示原始物体大小是数...原创 2019-03-05 15:55:38 · 24916 阅读 · 16 评论 -
计算机视觉,深度学习, tensorflow 知识杂记,经验教训(持续更新)
以前随手的记录本子上的内容,在这篇文章里做一个汇总,方便以后查看。2019-1-22 ~ 2019-1-241、resnet每经过一个降采样过程,都会使它的channel数目翻倍,这样可以避免因为降采样带来的信息损失。2、vggnet带来的启发:2.1、网络更深;2.2、多使用33的卷积核:2个33的卷积核可以看做一层55的卷积核(同等的receptive field),同时参数更少。3...原创 2019-03-05 21:11:01 · 658 阅读 · 0 评论 -
U-net实现(keras)
毕设老师给的题目是基于深度学习的肝脏肿瘤分割,而unet则是深度网络实现图像分割的benchmark。本人小白一名,没有机器学习与深度学习的基础,但因为毕设紧迫。来不及系统学习,博客里记录学习过程,可能有很多地方理解并不正确,但会一边学习一边更正之前的内容。unet结构说明其实unet就是encoder-decoder,encoder部分是重复conv-conv-maxpooling的过程,用...原创 2019-02-27 13:08:38 · 9163 阅读 · 14 评论 -
keras pytorch 构建模型对比
使用CIFAR10数据集,用三种框架构建Residual_Network作为例子,比较框架间的异同。文章目录数据集格式pytorch的数据集格式keras的数据格式输入网络的数据格式不同整体流程keras 流程pytorch 流程对比流程构建网络对比网络pytorch 构建Residual-networkkeras 对应的网络构建部分pytorch model summarykeras mode...原创 2019-03-03 19:37:23 · 7578 阅读 · 0 评论 -
关于python 高维数组transpose的实现原理以及pytorch view等的思考
很多时候需要给高维数组变形,以达到需要的格式,但很多时候,可能变形后的结果并不是你所预想的那样,我是在看一段pytorch的代码时引发的思考:prediction = prediction.view(batch_size, bbox_attrs*num_anchors, grid_size*grid_size)prediction = prediction.transpose(1,2).con...原创 2019-03-14 16:33:08 · 4012 阅读 · 0 评论 -
根据mask绘制contour ,bounding box。批量展示图片 等工具函数
主要解决两个问题:1、如何用给定的mask找到最小包围矩形2、如何用给定的矩形在原图上绘制bounding box(利用matplotlib)只有一个类的情况import numpy as npimport matplotlib.patches as patchesimport matplotlib.pyplot as plt"""masks shape: (batch_size...原创 2019-03-14 21:07:02 · 6283 阅读 · 1 评论 -
医学图像预处理(三)——windowing(ct对比增强)
若是dicom格式的图片,得先转化为hu值(即ct图像值,若图片本来就是ct,则不需要转换),因为hu值是与设备无关的,不同范围之内的值可以代表不同器官,dicom转化为hu的示例代码如下:def get_pixels_hu(scans): #type(scans[0].pixel_array) #Out[15]: numpy.ndarray #scans[0].pi...原创 2019-03-07 17:06:25 · 28869 阅读 · 15 评论 -
医学图像预处理(四)—— 提取包含目标的切片(比如仅提取包含肿瘤或肝脏的切片)
在训练网络时,一般目标区域越有针对性效果越好,因此经常会在训练前对数据进行预处理,提取出包含有目标的那些切片。下面是示例代码(原始数据是3D ct images)简单的方法:def getRangImageDepth(image): """ args: image ndarray of shape (depth, height, weight) """ # 得到轴向上出现过目标(l...原创 2019-03-07 18:26:12 · 12480 阅读 · 2 评论 -
医学图像分割 基于深度学习的肝脏肿瘤分割 实战(一)
在之前的一篇博客里:医学图像分割 unet实现(一),是学习并复现别人的实验。这篇将记录下自己毕设第一阶段的实验。毕设题目为:基于深度学习的肝脏肿瘤分割。经过几番调整,最终确定:第一阶段分割出腹部图像中的肝脏,作为第二阶段的ROI(region of interest),第二阶段利用ROI对腹部图像进行裁剪,裁剪后的非ROI区域变成黑色,作为该阶段输入,分割出肝脏中的肿瘤。第三阶段用随机场的后处...原创 2019-03-24 22:14:55 · 59754 阅读 · 269 评论 -
svm实现图片分类(python)
目录 前言knn vs. svmsvm & linear classifierbias trickloss functionregularizationoptimization代码主体导入数据及预处理svm计算loss_function和梯度验证梯度公式是否正确比较运行时间svm训练及预测,结果可视化通过corss-vali...原创 2018-11-19 17:03:28 · 68774 阅读 · 16 评论