自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode剑指offer——复杂链表的复制、二叉搜索树与双向链表

复杂链表的复制请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。提示:-10000 <= Node.val <= 10000Node.random 为空(null)或指向链表中的节点。节点数目不超过 1000 。代码:class Solution: def copyRandomList(self, head: 'Node') -&gt

2020-11-25 09:19:05 182

转载 python——闭包

谈谈对Python中闭包的理解Python中的闭包是一个比较模糊的概念,有很多朋友都认为不好理解,但是随着深入学习,就会发现闭包无论如何都是需要去理解的,下面我将自己对闭包的理解进行阐述,希望能够对你有所帮助 ~ 闭包的理解 我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。 闭包的格式 下面用伪代码进行闭包格式的描述 def 外层函数(参数): def 内层函数(): print("内

2020-11-17 22:09:07 182

原创 论文阅读——U-Net论文总结与复现

论文【U-Net: Convolutional Networks for Biomedical Image Segmentation】2015 MICCAIUNet是为了解决医学图像分割问题而提出的CNN模型,谷歌学术目前引用已经达到20000左右,是非常有影响力的工作。UNet沿袭了FCN中的编码器-解码器结构,并将浅层与深层信息的融合做的更加彻底。论文中网络结构图如下:上图的左边就是编码器部分,这里通过不断进行卷积和池化的操作将输入图像的特征图尺寸不断变小,将特征图通道数不断增加。可以看到UNe

2020-11-15 19:33:07 2217

原创 python——可变与不可变对象的引用与拷贝

python变量类似引用式变量,变量都是指向某块地址。对于不可变对象,变量的改变相当于指向改变,直接换一块内存,原内存位置的值是不变的。对于可变对象,变量改变相当于指向的那块内存的值的改变。一、 不可变对象对于int, float, bool, str, tuple等不可变对象,变量值的改变本质上是该引用变量指向的改变,而原来那块内存的值是不变的。>>> a = 3>>> b = a #二者同时引用一块内存>>> a = 4 #a指

2020-11-14 10:11:15 326

原创 LeetCode 剑指offer——二叉搜索树的后序遍历序列、二叉树中和为某一值的路径

二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例1:输入: [1,6,3,2,5]输出: false示例2:输入: [1,3,2,6,5]输出: true代码:class Solution: def verifyPostorder(self, post

2020-11-13 19:51:47 113

原创 PaddlePaddle——模型存储与读取

模型存储:model_dict = model.state_dict()fluid.save_dygraph(model_dict, model_path)#model_path即为存储位置,文件名的部分不用加后缀模型读取:model_state_dict = fluid.load_dygraph(model_path)model.load_dict(model_state_dict[0])#这里注意model_path文件名部分不要加后缀,否则会报错...

2020-11-10 14:01:25 2085

原创 论文阅读——Multiple Organ Localization in CT Image Using Triple-Branch Fully Convolutional Networks

论文【Multiple Organ Localization in CT Image Using Triple-Branch Fully Convolutional Networks】2019CT器官定位是器官分割、损伤检测、图像配准等许多CT图像分析任务的预处理步骤,但也是一项有挑战性的工作。本文作者提出了一种新颖的3D CNN模型CT图像器官定位方法,其流程主要分为三部分:对原始CT图像进行增强,将原图、梯度图、器官强化图联成三通道图像作为网络输入。用一种新颖的三分支网络分别预测器官在三个方向

2020-10-29 09:27:57 564 3

原创 LeetCode 剑指offer——从上到下打印二叉树 II、从上到下打印二叉树 III

从上到下打印二叉树 II从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]代码:class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]:

2020-10-24 09:24:44 135

原创 LeetCode 剑指offer——栈的压入、弹出序列和从上到下打印二叉树

栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3)

2020-10-23 20:36:07 134 1

原创 论文阅读——Effificient Multiple Organ Localization in CT Image Using 3D Region Proposal Network

论文【Effificient Multiple Organ Localization in CT Image Using 3D Region Proposal Network】前几年的CT图像器官检测中的深度学习方法常用2D slices,比如利用冠状面、矢状面、横断面的CT slices训练3个独立的2D网络,通过3个预测B-box确定器官的形心和范围等等一些2D方法。这些策略有两个局限性:第一,相邻层很相似,冗余大,一层一层预测时间消耗多。第二,不能充分利用CT图像的3D空间信息。因此作者尝试

2020-10-22 14:30:44 461 3

原创 LeetCode 剑指Offer——顺时针打印矩阵、包含min函数的栈

顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i].length &lt

2020-10-21 14:15:47 93

原创 非极大抑制(Non-max suppression,NMS)算法

非极大抑制(Non-max suppression,NMS)算法目标检测算法会生成很多候选框,这时我们要将多余的候选框去除,如上图,这就要用到NMS算法。以YOLOV1举例,对于YOLOv1而言,网络最终会生成98个候选框。代码中的做法是:对98个候选框进行筛选,先删除confidence小于0.1的,再对每个候选框分别计算score,score为confidence*最大类别概率,删除score<0.1的,得到剩余候选框列表L后再进行下一步NMS处理:先取L中score最大的候选框,然后删

2020-10-20 09:41:39 707

原创 论文阅读——YOLOv4: Optimal Speed and Accuracy of Object Detection

论文【YOLOv4: Optimal Speed and Accuracy of Object Detection】YOLOv4目标检测模型虽然没有特别的理论创新,但实验并应用了很多最新的CNN方面的方法和技巧,在公开数据集上的检测性能与速度都达到非常高的水平。使用了一些通用方法Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN),

2020-10-19 09:20:05 179

原创 LeetCode 剑指Offer——二叉树的镜像、 对称的二叉树

二叉树的镜像请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000代码:class Solution: def m

2020-10-18 12:35:51 174

原创 python——ASCII码和字符之间的相互转换-ord()和chr()

python中有两个函数可以实现ASCII码和字符之间的相互转换,就是ord()和chr()。ord()可以将字符转换为ASCII码:print(ord('a'))#输出 97print(ord('0'))#输出 48chr()可以将ASCII码转换为字符:print(chr(97))#输出 'a'print(chr(48))#输出 '0'应用例题:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。s中所有字符为字母’a’~‘z’。重复返回False,不重复返

2020-10-17 09:54:59 9700

原创 Numpy——数组的拼接和分裂

1、利用np.concatenate、np.vstack、np.hstack进行数组拼接np.concatenate([x, y], axis=0)将x,y两个数组拼接在一起,返回numpy数组,x, y的类型可以是列表、元组、ndarray等等都可以,也可以有两个以上的列表进行拼接。axis是拼接维度,若axis不等于0的话x,y必须是多维数组。例子:grid = np.array([[1, 2, 3], [4, 5, 6]])np.concatenate([grid, grid, grid],

2020-10-16 13:15:05 443

原创 论文阅读——YOLOv3: An Incremental Improvement

论文【YOLOv3: An Incremental Improvement】YOLOv3于2018年推出,相较于YOLOv2最大的改进就是网络结构上采用了作者设计的基础框架Darknet-53,如下所示:网络摒弃了pooling,全部使用步长为2的卷积进行下采样。作者使用三个不同尺度的特征图(分别在8倍降采样、16倍降采样、32倍降采样处)进行目标检测。YOLOv3使用COCO数据集,有80类,YOLOv3中每个cell有3个box,每个box还有(x, y, w, h, confidence)5个

2020-10-15 08:57:01 241

原创 Numpy——随机数数组生成-随机整数-正态分布-均匀分布

import numpy as np1、随机数种子np.random.seed(0) 如果在程序上方添加此行代码,则每次程序执行生成相同的随机数组2、np.random.randint()生成随机整数组成的数组np.random.randint(1, 10, size = 3)#array([6, 1, 4]) 生成[1, 10)之间的整数组成的数组np.random.randint(1, 10, size = (3, 3)#array([[3, 8, 9],#

2020-10-14 09:54:42 15473 2

原创 2D IOU与3D IOU计算

在目标检测任务中,常用IOU作为评价指标,它的含义就是交并比,如下图:计算方式很直观,将预测框与ground truth框之间的交集比上两者的并集。代码如下:def compute_iou(pos1,pos2): left1,top1,right1,down1 = pos1 left2,top2,right2,down2 = pos2 area1 = (right1-left1)*(top1-down1) area2 = (right2-left2)*(top2-do

2020-10-13 09:20:35 5401 6

原创 LeetCode 剑指 Offer——合并两个排序的链表、树的子结构

合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码:class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: cur = dum = ListNode(0) whil

2020-10-12 09:20:29 108

原创 论文阅读——YOLO9000: Better, Faster, Stronger

论文【YOLO9000: Better, Faster, Stronger】YOLO9000是YOLO系列的第二代模型,它改进了YOLOv1的一些如定位错误高、召回率低等缺点,并将模型扩展到可以定位9000+物体上,并与此同时依然保持预测的高速度。新应用的几点方法:1、每个卷积层后增加BN层,提高2%左右的mAP,同时可以移除dropout层而没有过拟合。2、高分辨率的分类器。v1利用的预训练分类器输入224x224训练卷积网络,检测时用高分辨率448x448输入影响了检测性能。YOLO9000分

2020-10-11 20:53:41 289 1

原创 LeetCode 剑指 Offer——链表中倒数第K个节点、反转链表

链表中倒数第K个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.代码:class Solution: def getKthFromEnd(self, head: ListNode,

2020-10-10 10:04:46 188

原创 论文阅读——又看了两篇图像质量评价(IQA)的论文

【Blind CT image quality assessment via deep learning strategy: Initial Study】2018本文主要讲了一种基于AlexNet的2D CT图像无参考质量评估(NR-IQA)方法。其框架图如下:使用了300张优质CT图像+1200张添加噪声图像合计1500张作为数据集,其中1350张作为训练集,150张作为测试集。作者将图像质量从劣到优分为5个等级,图像整体输入,AlexNet只修改输入图像大小和输出部分。除了分类准确率,作者还采用了

2020-10-09 09:59:57 1833 4

原创 LeetCode 剑指 Offer——表示数值的字符串、调整数组顺序使奇数位于偶数前面

表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。本题关键是了解判断数值的规则:1、数字分5个部分,正负号、数字、小数点、小数、指数(包括e、可选的正负号、整数)2、正负号存在则其后必须跟数字或小数点3、小数点前或后必须有数字4、指数符号e前必须有数字5、字符串前后的空格不影

2020-10-08 11:08:44 187

原创 LeetCode 剑指 Offer——删除链表中的节点、正则表达式匹配

删除链表中的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为

2020-10-07 13:20:52 118

原创 论文阅读——看了两篇医学图像质量评价(IQA)的论文

【A CNN BASED NEUROBIOLOGY INSPIRED APPROACH FOR RETINAL IMAGE QUALITY ASSESSMENT】 IBM Research - Australia 2016论文主要用CNN进行视网膜图像质量评估。网络结构图如下:数据集是20471760的101张视网膜PNG彩色图像,作者将其切割为30000个150150的patch,来自同一张图像patch标签相同, 进行图像质量二分类。由于数据集没有反例,作者通过施加高斯白噪声、椒盐噪声和散斑噪声

2020-10-06 10:22:07 1664

原创 python笔记——DiceLoss、zip函数、scipy.io、os.environ、os.path、yaml模块、isinstance、nn.Module类、特殊函数

1、DiceLoss 大量医学图像分割论文中被使用,代价函数如下:可以通过one-hot格式的prediction和ground truth计算,K代表类别,两者都是K个特征图。2、内置zip函数3、scipy.io 不同格式文件的读入写入4、os.environ模块 可获取各种关于系统的信息,Windows和Linux下不同5、os.path 主要用于获取文件的属性更多os.path模块方法访问:https://www.runoob.com/python/python-os-

2020-10-05 13:29:53 340 1

原创 论文阅读——Densely Connected Convolutional Networks

论文【Densely Connected Convolutional Networks】DenseNet是在ResNet基础上的改良。在一个Dense Block中前层的特征图channel连接到每一个后层输出中,L层的Dense Block包括L(L+1)/2个直接连接。如下图所示:DenseNet有以下几个有点:缓和了梯度消失问题、加强了特征传播复用、减少了参数数量。其与ResNet主要区别就是DenseNet特征图复用性更强,Dense Block内每一层都将特征图直接传递到后面每一层进行复

2020-10-04 18:29:11 485

原创 Numpy——舍入函数around 四舍五入、floor 向下取整、ceil 向上取整

有时我们需要对numpy里面的数字进行舍入,这时可以用numpy中的舍入函数around、floor和ceil轻松实现。around()返回四舍五入后的结果numpy.around(a, decimals)#a为numpy数组,decimals为要舍入的小数位数,默认为0。#decimals若为正数则代表保留几位小数,若为0则代表保留整数位#decimals若为负数则代表要四舍五入到小数点左侧,例如decimals为-1,代表舍入到十位,13舍入为10,16舍入为20import numpy

2020-10-03 14:56:36 5484 2

原创 LeetCode 剑指 Offer——数值的整数次方、打印从1到最大的n位数

数值的整数次方实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 3

2020-10-02 13:32:53 228 1

原创 论文阅读——ResNet,Deep Residual Learning for Image Recognition

论文【Deep Residual Learning for Image Recognition】神经网络模型的深度对其性能有很大影响,但越深的网络优化越困难,甚至出现层数增加而准确度反而降低的情况。本文提出一种deep residual learning framework来解决深度网络难以优化的问题。假设H(x)是我们所期望的输入到输出的映射,通过堆叠网络直接拟合H(x)很困难,本文考虑拟合F(x) := H(x) - x,F(x)称为残差映射(residual mapping),即让网络拟合H(x)

2020-10-02 08:54:17 180

原创 LeetCode 剑指 Offer——剪绳子2、二进制中1的个数

剪绳子2给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例1:输入: 2输出: 1解释: 2 = 1 + 1, 1 ×

2020-10-01 08:56:57 164

原创 泛读了一些OAR相关论文2

近几年关于OAR分割的方法主要分两类:深度学习、其他方法。其中深度学习的方法使用最多,占比约60%,并且有越来越高的趋势。多图谱相关论文也比较多,占剩余的一半,其他各种机器学习以及传统算法数量较少。深度学习:基于2D、2.5D、3D卷积核的各种CNN。出名的有U-Net、3D U-Net、V-Net等。2D 卷积通常使用的是slice by slice的方式训练,忽略了每层之间的空间联系,特别对于一些模糊的物体很不利。2.5D 卷积依然采用的是2D卷积核,但多了几个正交的卷积视图。这两种卷积方法现在使用

2020-09-30 09:16:54 311

原创 泛读了一些OAR相关论文

最近泛读了一些OAR分割以及医学图像分割的论文,通过这些论文了解了一些当前分割领域使用的方法。1、多图谱寻找论文时发现近年来有许多使用多图谱算法做医学图像分割的论文,很多其他方法的论文在介绍相关工作的时候也提到多图谱是近年来非常热门的一种图像分割算法。方法主要是:为每个器官准备一个专家标注过的图谱集,将待分割图像与图谱集中每个图谱进行一一配准,最后将结果通过投票等方式融合。总结起来分为四步:图谱构建、配准、标签传播、标签融合。配准就是将图谱图像形变,使其尽可能相似于待分割图像,并把形变信息(映射函数

2020-09-29 12:47:29 511

原创 LeetCode 剑指 Offer——机器人的运动范围、剪绳子

机器人的运动范围地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例1:输入:m = 2, n = 3, k = 1输出:3示例2:输入:

2020-09-28 12:59:16 123

原创 Python——集合Set的一些内容

1、集合可以去重>>>l = [1, 1, 2, 2, 3]>>>set(l)>>>{1, 2, 3}>>>list(set(l))>>>[1, 2, 3]2、集合的中缀运算符(以集合A和B为例)| 运算符 ,A | B,返回A与B的合集,&运算符,A & B,返回A与B的交集-运算符,A - B, 返回A与B的差集^运算符,A ^ B,返回A与B的对称差集(A,B中不属于A交B

2020-09-28 09:40:13 226

原创 论文阅读——AAR - RT – A system for auto-contouring organs at risk on CT images...

论文【AAR - RT – A system for auto-contouring organs at risk on CT images for radiation therapy planning: Principles, design, and large-scale evaluation on head-and-neck and thoracic cancer cases】主要方法:Automatic Anatomy Recognition - Radiation therapy(AAR - R

2020-09-27 18:43:51 166

原创 LeetCode 剑指 Offer——旋转数组的最小数字、矩阵中的路径

旋转数组中的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例1:输入:[3,4,5,1,2]输出:1示例2:输入:[2,2,2,0,1]输出:0代码:def minArray(self, numbers: List[int]) -> int: i, j = 0, len(numbers)-1

2020-09-26 10:35:08 108

原创 LeetCode 剑指 Offer——斐波那契数列、青蛙跳台阶问题

斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例1:输入:n = 2输出:1示例2:输入:n = 5输出:5限制:

2020-09-25 13:33:35 209

原创 研究OAR分割的意义、应用及目前相关方法和评价指标

一、危及器官OAR危及器官(organ at risk,OAR)指在放射治疗(radiation therapy,RT)中可能卷入射野内的健康组织或器官。它们的放射敏感性(耐受剂量)将显著著地影响治疗方案的设计或靶区处方剂量的大小,在确定计划靶区时要考虑这些器官的存在。在放射治疗中,不同肿瘤涉及的危及器官也不尽相同,常见的危及器官如下:1)、头颈部肿瘤OARs:颞叶 temporal lobe、视神经 optical nerve、晶体 len、脑干 brain stem、垂体 pituitary gl

2020-09-25 08:41:27 3648

空空如也

空空如也

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

TA关注的人

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