![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
Pr Young
一个踏实努力,充满激情的程序员!
展开
-
一张单通道的二值图(0,1二值图)转化为单通道二值图(0,255)二值图
转换前:转换后: 对应的原图:原创 2022-06-09 23:29:28 · 646 阅读 · 0 评论 -
如何查看torch版本
1.进入你想查看torch版本的虚拟环境:2.输入python(意思是进入python交互环境) 3.继续输入import torch(即导入torch包,这样你下一步输入torch.__version__的时候就不会报错4.第四步关键:输入torch.__version__(注意这里是两个横线组成的下划线,不是一根!!!)所以你的torch版本就是1.11.0另外这里还显示出来了你的cuda是10.2版本......原创 2022-05-07 16:11:02 · 58337 阅读 · 5 评论 -
常见数据增强方法
2.水平翻转和垂直翻转。原创 2022-10-12 21:14:15 · 307 阅读 · 0 评论 -
f1score python实现
f1_score(label,prediction)传入的两个参数都是一维的tensor,所以如果是多维的tensor,需要先将多维的展平(调用flatten()方法)为一维的tensor。注意:flatten()函数要求的参数类型是Tensor,不能是numpy里的array数组。所以如果拿到的数据是array数组,需要先将array数组转化成tensor。原创 2022-10-11 12:52:53 · 1203 阅读 · 0 评论 -
torch.flatten()
将张量拉成一维的向量。原创 2022-10-09 15:30:24 · 219 阅读 · 0 评论 -
pytorch里面的tensor
所以你需要掌握怎么创建tensor,怎么将numpy中的数组转化为tensor,怎么将图片转化为tensor(如果是图片,可以使用OpenCV包将图片转化为numpy数组,然后再将numpy数组转化为tensor)1.tensor你可以理解成就是numpy中的数组(只不过tensor可以使用GPU来加快计算,而array不行)2.得到tensor之后,如果想得到tensor的大小可以调用张量的size属性或者shape属性。原创 2022-10-09 15:06:30 · 1001 阅读 · 0 评论 -
多卡运行时明明指定了哪几张卡(不包含0号卡),但是结果还是包含0号卡
(2)如果import进来的其他文件中import了torch,那os.environ['CUDA_VISIBLE_DEVICES'] 必须在import这个文件之前。所以,最后,我们将os.environ['CUDA_VISIBLE_DEVICES']放在文件的最开始,最开头的位置,就可以完美解决问题。(1)os.environ['CUDA_VISIBLE_DEVICES'] 必须在import torch之前。但是最后发现还是从0号卡开始,占用的不是4,5,6,7,而是0,1,2,3四张卡。原创 2022-09-04 18:39:23 · 721 阅读 · 0 评论 -
dice和iou
DiceLoss和DiceCofficient之间的关系:DiceLoss=1-DiceCofficient。在实现的时候,往往会加上一个smooth,防止分母为0的情况出现。一个是预测图片,一个是label,预测成功的部分称之为True Positive。分母是label中所有像素的数量+预测结果中所有像素的数量-重叠部分的像素数量。(1)Dice系数:DiceCofficient。用于计算两个样本的相似度(取值范围0~1)(2)Dice损失:DiceLoss。分子是预测正确的像素数量。......原创 2022-08-08 13:18:54 · 1937 阅读 · 0 评论 -
深度可分离卷积及其代码实现
深度可分离卷积可分为两个过程,分别为逐通道卷积(DepthwiseConvolution)和逐点卷积(PointwiseConvolution)groups是一个数,当groups=in_channel时,就代表在做深度可分离卷积(depth—wiseconv)、这里需要4个卷积核(输出几个通道就要几个卷积核,这里输出四个通道所以需要四个卷积核)这里我们再用四个卷积核,每个卷积核大小为1*1*3。所以参数总量是4个3*3*3,等于108个参数。这里参数量是3个3*3,等于27个。......原创 2022-07-22 00:54:08 · 19672 阅读 · 10 评论 -
UneXt 基于MLP的快速医学图像分割网络
9.我们还提供了在cpu上操作的平均推理时间,因为护理点设备大多数是低计算力,而且通常没有gpu,CPU是英特尔XeonGoln6140CPU,工作在2.30GHz。4.几乎所有的上述工作都集中在提高网络的性能(精度),而不是太关注计算复杂度、推理时间或参数的数量,这些在许多现实应用中是必不可少的。7.在原文该部分段落中,介绍到该操作受启发于SwinTransformer,实际上再细致一点,是受启发于Swin的窗的设计。其中c1=32,c2=64,c3=128,c4=160,c5=256。......原创 2022-07-20 22:59:58 · 1676 阅读 · 2 评论 -
三维数据(channel在第2维)-四维数据(输入到pooling层之前,channel在第一维)-三维数据(channel在第2维)
代码】三维数据(channel在第2维)-四维数据(输入到pooling层之前,channel在第一维)-三维数据(channel在第2维)原创 2022-07-20 00:14:01 · 512 阅读 · 0 评论 -
归一化Normalization(可以理解将数据标准化)
求出一组数据的均值和方差,使用求出来的均值和方差对这组数据进行归一化(标准化),使得均值为0,方差为1假设一个输入数据集一列的数据,其值范围为0到10,另一列的值范围为100,000到10,00,000建模时将这些值作为特征组合时,最终会出现误差通过归一化,创建新的数值来保持这两列呈现类似的分布,比如正态分布。常见的归一化方法有:Batch Normalization(BN),Layer Normalization(LN)BN就是在N(图片数量)上做归一化(纵向规范化) LN是在C(通道数)上做归一化(横向原创 2022-07-14 16:51:56 · 433 阅读 · 0 评论 -
深度学习多卡训练
直接运行或者是在终端输入下面的命令:原创 2022-07-13 14:57:23 · 337 阅读 · 0 评论 -
GPU有多张卡时,指定其中某一张卡进行训练
直接运行: 现在指定其中一张卡进行训练:原创 2022-07-13 14:35:20 · 1185 阅读 · 0 评论 -
‘Image‘ has no attribute ‘fromarray‘问题解决
会显示'Image' has no attribute 'fromarray'和'Image' has no attribute 'merge'可能不同的两个包里面都有Image这个模块,我们想用的是PIL包里的Image,而不是其他包里面的Image模块,但是程序以为我们调用的是其他包里面的Image模块,而其他包里的Image模块没有fromarray方法和merge方法,所以我们需要让程序知道我们要调用的是PIL包里的Image模块...原创 2022-07-03 12:50:07 · 890 阅读 · 0 评论 -
最近用到的进行数据处理的代码
1.修改文件名2.划分训练集和测试集3.将一张image和一张label做成一个npz文件4.图片进行resize,一般是resize为224或者是512原创 2022-07-02 11:57:26 · 390 阅读 · 1 评论 -
深度学习技巧
1.batchsize不要太大,容易爆内存,一般就是4以下,比如2和4(2的n次方)2.图片一般要裁剪成256*256或者是512*512原创 2022-06-30 16:28:32 · 210 阅读 · 0 评论 -
(新手完全能看懂,看不懂评论区留言,包教包会)将数据集(image,label)划分成训练集,验证集,测试集
1.准备两个文件夹:(文件夹的目录结构如图所示:) before里存放的是没有划分前的图片,after存放的是划分后的图片划分前十张image,十张label 2.运行下列代码:原创 2022-06-27 11:15:55 · 695 阅读 · 2 评论 -
计算predict.png和label.png之间的混淆矩阵,precision,recall,MIOU
1.混淆矩阵:总共两个字母:第一个字母表示你预测的对不对,第二个字母表示你预测的是啥第一个字母表示预测正确(True)还是错误(False),只要是预测正确就是以T开头(True),预测错误就是F开头(False)第二个字母表示预测值是yes(Positive)还是no(Negative)第二个字母表示预测值是Positive还是Negative2.召回率Recall:正确的预测了正样本(TP)/正样本总数(FN+TP)=100/1053.精确率Precision:正确的预测了正样本(TP)/预测为正样本的原创 2022-06-14 20:26:34 · 535 阅读 · 0 评论 -
一行代码一行代码撸出UNet网络
1.Unet结构模型图里面输入的是572*572*1 ,然后经过一个双卷积层,变为568*568*64而这里我们用的是256*256*3,经过一个双卷积层变成258*258*642.UNet模型如下: 总结:这个.py文件里面总共有四个类,这些类创建的固定格式如下:...原创 2022-06-12 20:51:11 · 543 阅读 · 0 评论 -
#from sklearn.metrics import jaccard_similarity_score
改成:from sklearn.metrics import jaccard_score原创 2022-06-09 23:44:49 · 371 阅读 · 0 评论 -
rgb图片,灰度图,二值图
rgb:3个通道(每个像素点取值可以为0~255)灰度图:1个通道(每个像素点取值可以为0~255),又称单通道图二值图:可能有1个通道也可能有3个通道,二值指的是每个像素点取值只能为0或1,二值图也就是我们常说的黑白图,如下图 :重点...原创 2022-06-09 21:08:00 · 1531 阅读 · 0 评论 -
NVIDIA RTX 3090,cuda11.6 对应的torch和torchvision版本
显卡:NVIDIA RTX 3090CUDA版本:11.6torch:1.8.0+cu111torchvision:0.9.0+cu111原创 2022-06-08 13:37:00 · 4315 阅读 · 0 评论 -
深度学习中读取数据(读取训练集的图片或者测试集的图片)
也就是说最终得到的是几个列表,列表里面装的是图片的图片名称(字符串,字符串内容是:文件路径/文件名)原创 2022-06-03 18:47:12 · 541 阅读 · 0 评论 -
虚拟环境取名小技巧
深度学习时创建虚拟环境时,给环境取名时的小技巧: 这样你就创建了一个名字叫作python3.6_torch1.5_cuda10.1的环境原创 2022-06-02 11:13:55 · 386 阅读 · 0 评论 -
state_dict()和load_state_dict()
这两个函数其实就是pytorch中用来保存模型参数和加载模型参数的方式顾名思义:state_dict()就是状态字典(把模型的参数保存到一个对象里面)load_state_dict()就是加载状态字典(加载模型参数)...原创 2022-05-28 12:30:22 · 1602 阅读 · 0 评论 -
model.train()和model.eval()
model.train():进入训练状态,让你的模型知道现在正在训练model.eval():让你的模型知道自己正在进行预测或者测试,等效于model.train(false),两种不同状态下,batchnorm层和dropout层是不同的训练模式下:(1)BatchNorm layers use per-batch statistics,即BatchNorm 层利用每个 batch 来统计(用到每一批数据的均值和方差) (2)Dropout ..原创 2022-05-25 18:42:49 · 1231 阅读 · 0 评论 -
三步安装好d2l包
1.进入下面的网址Python d2l项目安装包(第三方库)下载资源&安装指南页面 - PyPI - Python中文网点击之后会出现下面的页面,继续点击 :下载好了,比如你保存在E:\桌面\d2l-0.15.1-py3-none-any.whl2.打开命令行窗口,进入文件保存的目录:3.运行以下命令:pip install d2l-0.15.1-py3-none-any.whl完事...原创 2022-05-20 11:02:57 · 14721 阅读 · 9 评论 -
pytorch内置的数据迭代器:Dataloader
每次迭代中,数据加载器都会读取小批量数据(大小为batch_size)可以随机先打乱所有样本train_iter = data.DataLoader(train, batch_size, shuffle=True,num_workers=4)#第一个参数表示读入的是训练集,第二个参数是一次读几张图片,第三个参数是是否打乱#第四个参数是指使用几个进程来读取数据,可以加快数据读取速度#返回的是一个列表[(图片100,标签100),(图片167,标签167),(图片34,标签34)........原创 2022-05-19 22:11:04 · 522 阅读 · 0 评论 -
一个很典型的train.py
for epoch in range(10):#返回列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] net.train() #train_dataset是一个列表[(img1,label1),(img2,label2)......(img100,labe100)] for data in enumerate(train_dataset): img,label=data output=net(img) optimize.原创 2022-05-19 22:10:41 · 172 阅读 · 0 评论 -
epoch,batchsize,iteration
(1)把数据集全部放到模型上训练一次,就叫1个epoch,所以一个数据集总共有多少张图片,1个epoch就有多少张图片你将数据集总共往模型上训练3次,那就总共有3个epoch(2)batchsize就是你每次从数据集里面拿多少张图片出来(3)iteration就是迭代次数训练集7000个样本,epoch=10,batchsize=1287000/128=55(每个epoch的literation=55),也就是7000个样本分55次,每次128个样本读入这样的过程进行10次(epoc原创 2022-05-19 21:49:15 · 535 阅读 · 0 评论 -
深度学习里面n_channels和n_classes这两个参数的含义
class UNet(nn.Module): def __init__(self, n_channels, n_classes, bilinear=True): super(UNet, self).__init__() self.n_channels = n_channels self.n_classes = n_classes self.bilinear = bilinear self.inc = DoubleCo.原创 2022-05-19 16:39:31 · 3219 阅读 · 0 评论 -
到底什么是语义分割?
每个像素进行分类这幅图就将像素分为了四类,红色(人),深绿(树木),浅绿(草地),蓝色(天空)这是一张rgb彩色图像,所以,每一个像素是多个类之一如果是一张灰度图,那每个像素就只需做一个二分类即可...原创 2022-05-09 13:54:28 · 617 阅读 · 0 评论 -
从零开始写出一个Unet的model.py文件
1.双卷积,池化,双卷积,池化,双卷积,池化,双卷积,池化,双卷积上采样,拼接,双卷积,上采样,拼接,双卷积,上采样,拼接,双卷积,上采样,拼接,双卷积最后388*388*64的特征图经过一个1*1卷积(两个卷积核)得到一个388*388*2的特征图(这是我们最后的输出分割图)也就是说(双卷积+池化)*4+双卷积+(上采样+拼接+双卷积)*4+1*1卷积其实你说是双卷积+池化)*4+(双卷积+上采样+拼接)*4+双卷积+1*1卷积2.双卷积函数:传入两个参数,输入的通道数和经过双卷积..原创 2022-05-18 13:56:16 · 430 阅读 · 0 评论 -
深度学习的流程概括
训练: 先对训练图片进行预处理,训练集的图片和标签都要读入验证:验证集的图片和标签都要读入(载入训练时得到的权重),算出各项指标分数,保存最后的训练权重测试:载入验证后的权重,将测试集的测试图片和标签读入 算出指标分数,以及将预测结果的图片保存下来 ...原创 2022-05-18 10:05:52 · 776 阅读 · 0 评论