自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 语义分割损失函数系列(3):Dice损失

Dice损失在医学图像分割任务中使用得极多,用于度量两个集合得相似性,dice系数的定义如下:DiceCoefficient=2∣A∩B∣∣A∣+∣B∣Dice Coefficient = \frac{2|A\cap B|}{|A| + |B|} DiceCoefficient=∣A∣+∣B∣2∣A∩B∣​Dice 损失等于1-dice系数Diceloss=1−DiceCoefficientDice loss = 1-Dice CoefficientDiceloss=1−DiceCoeffic

2022-04-14 14:30:09 2792

原创 语义分割损失函数系列(2):IoU损失

交叉熵损失函数好用是好用,但当数据存在严重的不平衡问题的时候,会导致结果特别糟糕,特别是在医学图像分割问题中,一般目标区域都比较小,背景区域比较大,此时用交叉熵损失函数的话得到的结果就不太好。IOU loss介绍IOU即是交并比,用相交的部分去除上并集,就得到IOU的值,1-IOU的值就是IOU Loss。至于IOU的数学定义去看百度百科吧,举个例子:上面两张图求IOU,白色区域为目标区域,就是用两张图片的白色区域的交集去比上白色部分的并集,就得到了白色类别的IOU值。在实际工程中,一般黑色像素为类

2022-03-25 00:21:01 3270 3

原创 Pytorch 使用Grad-CAM可视化网络模型的特征图

介绍虽然说咱也不知道这个Grad-CAM的数学理论是如何推导的,但是在看论文的时候发现很多论文里面都用了Grad-CAM来可视化模型的特征图,用来显示网络对ROI区域的捕捉。想详细了解的话看一下B站大佬噼里啪啦的讲解视频。推荐代码code:https://github.com/jacobgil/pytorch-grad-cam安装pytorch-grad-cam :pip install grad-cam官方给的例子:自己的尝试我试着使用这个仓库来可视化我的vit模型,做的是一个五分类的

2022-03-23 15:56:00 11820 4

原创 Pytorch使用Vision Transformer做肺癌和结肠癌组织病理学图像分类

模型介绍文章链接:https://arxiv.org/pdf/2010.11929.pdfgithub地址:视频教程:https://www.bilibili.com/video/BV1Jh411Y7WQ?spm_id_from=333.337.search-card.all.click是B站大佬霹雳吧啦Wz的讲解视频,讲得特别好,我的代码也是完全按照他的代码抄的,自己抄一遍代码对Vision Transformer的理解会更深刻,很多模型细节看论文中是感受不到的,例如embedding的方法。Vis

2022-03-22 23:49:57 4608 27

原创 语义分割损失函数系列(1):交叉熵损失函数

最近一直在做一些语义分割相关的项目,找损失函数的时候发现网上这些大佬的写得各有千秋,也没说怎么用,在此记录一下自己在训练过程中使用损失函数的一些心得.本人是使用的Pytorch框架,故这一系列都会基于Pytorch来实现。首先是交叉熵损失函数,语义分割其实是一个逐像素分类的一个分类问题,做过图像分类的应该都比较熟悉交叉熵损失函数。pytorch中自带有写好的交叉熵函数,只需要调用就行:loss_func = nn.CrossEntropyLoss()torch.nn模块中写好的损失函数都是以类的方

2022-02-22 22:32:01 5443 4

原创 python正确的的画出ROC曲线

ROC曲线简介受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。为了了解ROC曲线的意义,我们首先得了解一些变量。以下定义引自维基百科最近在做一些分类的任务,评价中的ROC曲线在很多地方都会用得到,特别在论文中。在此记录一下在做ROC曲线的过程中遇到的一些坑。

2022-02-12 21:10:01 6066 1

原创 python读取dicom格式的图像并转为png格式

使用网上的大多数格式转换过来图像失真过于严重,出现了这种情况:而原始图像是:读取的过程中直接变成了二值图,所以就先对读取到的原始像素矩阵做归一化,在*255变为灰度图,代码如下:import SimpleITK as sitKimport numpy as npimport cv2import osdef convert_from_dicom_to_png(img,low_window,high_window,save_path): lungwin = np.array([low_

2022-01-18 10:47:28 5801 1

原创 python nrrd图像转png

最近在做医学图像相关的实践,数据集图像是dicom格式的,标注是nrrd格式的图像.为了方便后期的模型搭建和训练转一下格式.python读取nrrd格式的图像需要用到pynrrd库,使用pip就可以安装:pip install pynrrd核心代码:import numpy as npimport nrrdimport osimport cv2def nrrd_to_png(nrrd_filename,save_path,patient_id): nrrd_filename = n

2022-01-18 01:46:11 3967 6

原创 基于U-net的肝脏肿瘤分割实战(Pytorch实现)

这是我去年本科毕业设计的一部分,去年使用tensorflow去实现的,这几天就随手用Pytorch做了一下实现。肝脏肿瘤的分割是医学影像分割里面比较重要的一部分,实现从人的CT或MRI影像中将肝脏区域肿瘤给分割出来,对临床治疗还是有一定的实际意义。在这里网络还是使用最简单的U-net网络,U-net作为医学影像分割中的最经典的方法,其Encoder和Decoder的结构以及对称式的设计对后面的很多网络都有很大的影响。网络结构跳跃连接部分就是讲encoder的特征图和decoder的特征图在通道纬度上做

2021-12-13 14:07:17 5730 15

原创 python opencv给证件照换底色

昨天朋友忙要把白色背景的证件照换为红色的,比较急用,本人也不太会用PS,网上的那些转换小工具都是要收费的,就想着自己搞一搞,原理很简单,白色背景的像素值为[255,255,255],用这个信息生成mask,再将生成的Mask对应回原图像将背景区域换为红色的像素值[256,0,0]即可实现。read imagedef read_source_image(image_path): img = cv2.imread(image_path) return imgresizedef resi

2021-12-12 20:21:24 2634

原创 Pytorch实现U-net视网膜血管分割

网络结构U-net是MICCAI2015的专门针对医学影像分割设计的网络结构,直到今天还是很好用,效果任然很好。网络的左半部分是Encode部分,此部分将输入图像逐步下采样得到高层的语义信息。右半部分是Decoder部分,将Encode提取的语义特征逐步恢复为原始图像的尺寸,中间是跳跃连接,将下采样过程中提取到的不同level的特征加入到Decoder中,得到更好的分割结果。完整训练代码和数据可以去我的github上面下载:https://github.com/SPECTRELWF/Semantic

2021-12-12 12:24:58 4800 2

原创 Pytorch实现U-net细胞分割

网络结构U-net是MICCAI2015的专门针对医学影像分割设计的网络结构,直到今天还是很好用,效果任然很好。网络的左半部分是Encode部分,此部分将输入图像逐步下采样得到高层的语义信息。右半部分是Decoder部分,将Encode提取的语义特征逐步恢复为原始图像的尺寸,中间是跳跃连接,将下采样过程中提取到的不同level的特征加入到Decoder中,得到更好的分割结果。数据集介绍数据集使用的是ISBI细胞分割数据集,训练集总共就三十张图像,少的可怜,U-net比其他网络强大的地方就在此,小数

2021-12-10 20:48:35 3696

原创 OPENCV-PYTHON将.GIF格式的图像转为PNG格式

在做UNET的眼球血管分割的时候,眼球的标注使用的gif格式存储的,习惯了使用jpg或者png了,先转一下。直接用opencv读进来以后重写一下就可以。gif读取的时候要使用VideoCapture,因为GIF是动图。# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/9 下午6:54import numpy as npimport cv2import osdef gif_to_png(

2021-12-10 08:46:43 1693

原创 opencv-python将.tif格式的图像转为png格式

在做UNET的眼球血管分割的时候,眼球的图像使用的tif格式存储的,习惯了使用jpg或者png了,先转一下。直接用opencv读进来以后重写一下就可以。# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/9 下午6:41import cv2import numpy as npimport osdef tif_to_png(image_path,save_path): """

2021-12-10 08:44:01 6326 4

原创 opencv-python将视频切分成帧

原始视频是41秒,每秒30帧,opencv提供了简单的实现来切分视频。代码:# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/9 上午8:19import cv2import globimport osdef video_to_frame(save_path,video_path): # save_path : frame save path # video_path

2021-12-09 08:35:19 1150

原创 实战Kaggle比赛(1):树叶分类

比赛地址:https://www.kaggle.com/c/leaf-classification/rules完整代码:https://github.com/SPECTRELWF/kaggle_competition个人主页:liuweifeng.top:8090比赛题目:对树叶的类别进行分类,树叶总共99个类别,树叶的图片如下:我也不知道怎么分类,反正总共有99中类别的树叶。下载到的数据集解压后如下:image里面存了所有的树叶图像,train.csv是训练文件的标号以及类别,后面有一堆的

2021-12-08 18:47:45 1887

原创 opencv-python将视频帧还原成视频

最近在做一些分割的项目,拿视频来做分割测试,在做分割时是一帧一帧的读进去的,出来的结果也是离散的视频帧。所以就有这个需求:原始帧序列:从第一帧到最后一帧依次存起来的。从这些分割借过帧中还原视频,opencv提供了简单的实现:# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/2 上午9:59import cv2import globimport osdef frames_to_v

2021-12-02 13:26:30 3567

原创 Pytorch:yolov1系列(1)读取VOC2012数据集的目标检测标注

图像分类学的差不多了,最近开始学一下目标检测,记录一下学习的过程。首先打算复现一下YOLO系列的算法,先从简单的yolo v1开始。yolov1论文地址:https://arxiv.org/pdf/1506.02640.pdf网络结构:yolo是一个一阶段的端到端的算法,检测速度会比RCNN系列快很多,网络是一个24层的卷积层,最后的输出是一个7730的tensor,这是原文中作者设定的,讲一张图片划分为77的grid,也就是待检测目标的中心点,也就是锚框。每个锚框预测两个bounding box。

2021-11-28 21:09:49 3449

原创 Pytorch:手撕ResNet34实现汽车分类

完整项目代码:https://github.com/SPECTRELWF/pytorch-cnn-studyResNet网络结构ResNet是何恺明大神在CVPR2016的工作,也拿到了当年的最佳论文。是为了解决深层网络的梯度消失的问题,引入了残差块连接。论文地址:https://arxiv.org/pdf/1512.03385.pdf其实我自己刚开始看这篇文章的时候不是很明白,有很多细节并不能很清楚,比如怎么去实现shortcut,每个阶段的输出到下一阶段时候的特征通道并不一致,在这里推荐大神李

2021-11-16 21:30:33 1373 6

原创 Pytorch:GAN生成对抗网络实现二次元人脸的生成

github:https://github.com/SPECTRELWF/pytorch-GAN-study网络结构最近在疯狂补深度学习一些基本架构的基础,看了一下大佬的GAN的原始论文,说实话一头雾水,不是能看的很懂。推荐B站李宏毅老师的机器学习2021的课程,听完以后明白多了。原始论文中就说了一个generator和一个discriminator的结构,并没有细节的说具体是怎么去定义的,对新手不太友好,参考了Github的Pytorch-Gan-master仓库的代码,做了一下照搬吧,照着敲一边代码

2021-11-15 12:46:07 1059 3

原创 Pytorch:GAN生成对抗网络实现MNIST手写数字的生成

github:https://github.com/SPECTRELWF/pytorch-GAN-study个人主页:liuweifeng.top:8090网络结构最近在疯狂补深度学习一些基本架构的基础,看了一下大佬的GAN的原始论文,说实话一头雾水,不是能看的很懂。推荐B站李宏毅老师的机器学习2021的课程,听完以后明白多了。原始论文中就说了一个generator和一个discriminator的结构,并没有细节的说具体是怎么去定义的,对新手不太友好,参考了Github的Pytorch-Gan-ma

2021-11-15 12:23:59 2552 1

原创 PTA浙大版python程序设计题目集--第2章-4 特殊a串数列求和 (20 分)

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。输入格式:输入在一行中给出不超过9的正整数a和n。输出格式:在一行中按照“s = 对应的和”的格式输出。输入样例:2 3输出样例:s = 246a , b = map(int,input().split())sum = atemp = afor i in range(b-1):...

2021-11-12 13:13:12 1407

原创 PTA浙大版python程序设计题目集--第2章-3 阶梯电价 (15 分)

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。输入格式:输入在一行中给出某用户的月用电量(单位:千瓦时)。输出格式:在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost...

2021-11-12 13:13:03 2735

原创 PTA浙大版python程序设计题目集--第2章-2 计算分段函数[1] (10 分)

本题目要求计算下列分段函数f(x)的值:公式输入格式:输入在一行中给出实数x。输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。输入样例1:10输出样例1:f(10.0) = 0.1输入样例2:0输出样例2:f(0.0) = 0.0n = float(input())if n == 0: print('f(0....

2021-11-12 13:12:53 3121

原创 PTA浙大版python程序设计题目集--第3章-5 字符转换 (15 分)

本题要求提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。输入格式:输入在一行中给出一个不超过80个字符且以回车结束的字符串。输出格式:在一行中输出转换后的整数。题目保证输出不超过长整型范围。输入样例:free82jeep5输出样例:825s = input()res = ""for i in s: if i >= '0' and i ...

2021-11-12 13:12:36 1730 3

原创 PTA浙大版python程序设计题目集--第1章-3 输出“Python语言简单易学” (10 分)

输入格式:无输出格式:输出一句短语,Python语言简单易学。如果包含汉字,用"print(s.encode(“utf-8”))"输出.如: s="人生苦短,我学Python" print(s.encode("utf-8"))输入样例:无输出样例:“人生苦短,我学Python” 的输出:b’\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe...

2021-11-12 13:10:24 1712

原创 PTA浙大版python程序设计题目集--第1章-1 从键盘输入两个数,求它们的和并输出 (30 分)

本题目要求读入2个整数A和B,然后输出它们的和。输入格式:在一行中给出一个被加数在另一行中给出一个加数输出格式:在一行中输出和值。输入样例:在这里给出一组输入。例如:18-48输出样例:在这里给出相应的输出。例如:-30a = int(input())b = int(input())print(a+b)...

2021-11-12 13:10:08 2075

原创 PTA浙大版python程序设计题目集--第2章-1 计算 11+12+13+...+m (30 分)

输入一个正整数m(20<=m<=100),计算 11+12+13+…+m 的值。输入格式:在一行输入一个正整数m。输出格式:在一行中按照格式“sum = S”输出对应的和S.输入样例:在这里给出一组输入。例如:90输出样例:在这里给出相应的输出。例如:sum = 4040n = int(input())sum = 0for i in range(11,n+1)...

2021-11-12 13:09:55 3938

原创 PTA浙大版python程序设计题目集--第1章-2 从键盘输入三个数到a,b,c中,按公式值输出 (30 分)

在同一行依次输入三个值a,b,c,用空格分开,输出 bb-4a*c的值输入格式:在一行中输入三个数。输出格式:在一行中输出公式值。输入样例:在这里给出一组输入。例如:3 4 5输出样例:在这里给出相应的输出。例如:-44a,b,c=map(int,input().split())print(b*b-4*a*c)...

2021-11-12 13:09:40 8041 1

原创 python将图片转换为灰度图

灰度图的位深度为8,此代码使用PIL库中的convert函数进行转换。convert函数的参数解释:1 ------------------(1位像素,黑白,每字节一个像素存储)L ------------------(8位像素,黑白)P ------------------(8位像素,使用调色板映射到任何其他模式)RGB------------------(3x8位像素,真彩色)RGBA------------------(4x8位像素,带透明度掩模的真彩色)CMYK------------

2021-11-12 13:08:59 5331 1

原创 python将灰度图转换为RGB彩色图

代码如下:from PIL import Imageimport ospath = r'图片存储的路径'newpath = r'转换后存储图片的路径'def RGBtoGray(path): files = os.listdir(path) for file in files: imgpath = path + '/' + file #print(imgpath) # im = Image.open(imgpat

2021-11-12 13:08:45 16647 10

原创 PYTORCH:DenseNet做新冠肺炎CT照片是否确诊分类

完整项目代码:https://github.com/SPECTRELWF/pytorch-cnn-studyDenseNet网络结构DenseNet是清华大学的黄高教授在CVPR的工作,在resnet提出的第二年提出,也拿到了当年的最佳论文。。数据集描述数据集使用的是来自格物钛的一个公开数据集,数据集下载地址:https://gas.graviti.cn/dataset/data-decorators/COVID_CT里面包含715张图片,包含确诊和未确诊的,比例大概一比一,图像是处理过的CT图

2021-11-11 10:55:11 4779 29

原创 pytorch:ResNet50做新冠肺炎CT照片是否确诊分类

完整项目代码:https://github.com/SPECTRELWF/pytorch-cnn-study个人主页:liuweifeng.top:8090ResNet网络结构ResNet是何恺明大神在CVPR2016的工作,也拿到了当年的最佳论文。是为了解决深层网络的梯度消失的问题,引入了残差块连接。数据集描述数据集使用的是来自格物钛的一个公开数据集,数据集下载地址:https://gas.graviti.cn/dataset/data-decorators/COVID_CT,里面包含715张

2021-11-09 21:23:54 2925 25

原创 到底什么是范数?

最近在学习机器学习的的过程中老遇到范数的定义,在读论文过程中也常遇到L1范数,L2范数等等。正好最近在看deep learning这本书,就总结记录一下。LPL^{P}LP范数从数学的角度来看,范数是向量大小的一种表示,也即是范数越大,表示向量越大。在数学上,LPL^{P}LP范数的定义如下:其中,p∈R,p≥1p\in \mathbb{R},p\geq 1p∈R,p≥1。L1L^{1}L1范数当p==1时,称为L1L^{1}L1范数,在某些机器学习的任务中,区分0和非0但值很小的元素是非常重要

2021-11-08 20:06:38 1995

原创 Pytorch:实现VGG16做汽车分类

github地址:https://github.com/SPECTRELWF/pytorch-cnn-study网络介绍:VGG是牛津大学Visual Geometry Group小组在ICLR2015的一篇文章,得益于Alexet网络在卷积层的深度上的工作带来的好处,VGG网络也在卷积层的数量上做工作。与Alexnet相比,VGG使用更小的卷积核去替代Alexnet中的卷积,实验证明,两个33的卷积核可以替代55的卷积核,3个33的卷积核可以替代一个77的卷积核,但更小的卷积核大小的参数会更少。

2021-11-07 14:34:34 561

原创 Pytorch:使用Alexnet网络实现CIFAR10分类

全部代码: https://github.com/SPECTRELWF/pytorch-cnn-study网络介绍:Alexnet网络是CV领域最经典的网络结构之一了,在2012年横空出世,并在当年夺下了不少比赛的冠军,下面是Alexnet的网络结构:网络结构较为简单,共有五个卷积层和三个全连接层,原文作者在训练时使用了多卡一起训练,具体细节可以阅读原文得到。Alexnet文章链接:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf作者在网络中

2021-11-05 15:34:57 2899 1

原创 python读取CIFAR10数据集并将数据集转换为PNG格式存储

CIFAR10数据集介绍CIFAR10数据集包括10类图像,每张图像的大小为32*32,包含如上图的十个类别的对象。每个类都包含6000张图片,总共有60000张图片,数据集平衡。其中,训练组图像包含50000张图片,测试集包含10000张图像。数据集的下载数据集地址:http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz也可以使用pytorch中的方法来获取数据集:trainset = torchvision.datasets.CIFAR1

2021-11-05 14:09:40 1297 4

原创 使用PYTORCH复现ALEXNET实现猫狗识别

完整代码链接:https://github.com/SPECTRELWF/pytorch-cnn-study网络介绍:Alexnet网络是CV领域最经典的网络结构之一了,在2012年横空出世,并在当年夺下了不少比赛的冠军,下面是Alexnet的网络结构:网络结构较为简单,共有五个卷积层和三个全连接层,原文作者在训练时使用了多卡一起训练,具体细节可以阅读原文得到。Alexnet文章链接:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf作者在网络

2021-11-04 15:34:22 2622 1

原创 使用PYTORCH复现ALEXNET实现MNIST手写数字识别

网络介绍:Alexnet网络是CV领域最经典的网络结构之一了,在2012年横空出世,并在当年夺下了不少比赛的冠军,下面是Alexnet的网络结构:网络结构较为简单,共有五个卷积层和三个全连接层,原文作者在训练时使用了多卡一起训练,具体细节可以阅读原文得到。Alexnet文章链接:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf作者在网络中使用了Relu激活函数和Dropout等方法来防止过拟合,更多细节看文章。数据集介绍使用的是MNIST手

2021-11-03 19:04:17 4859

原创 MNIST手写数字识别

进入到研究生阶段了,从头学一下Pytorch,在这个小破站上记录一下自己的学习过程。本文使用的是Pytorch来做手写数字的识别。step0:先引入一些相关的包和库import torchfrom torch import nnfrom torch.nn import functional as Ffrom torch import optimimport torchvisionfrom matplotlib import pyplot as pltfrom utils import

2021-10-27 20:56:00 2489

空空如也

空空如也

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

TA关注的人

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