- 博客(170)
- 资源 (2)
- 收藏
- 关注
原创 [leetcode] MergedKSortedList && ReversedNodesinKGroup
第一题:MergedKSortedList题意:给定了K个有序单向的list的第一个节点,让给返回将这K个List合并后的List的首节点思路1:每次比较K个list的当前节点,选出最小的,加入result的list中。直到K个list都遍历完成。思路2:2分法合并,首先利用二分法将其分成两两list,然后再合并两两list,直到最后合并完成。思路3:利用最优队列,将所有点加入到最优队...
2019-01-14 21:23:44
149
原创 [leetcode] 3sum && 4sum
题意:给定n个数,让我们在其中选择3个或者是4个,使其的和等于一个target,找出所有的存在的解法,并没有重复。本质上是对2sum的扩展,我们在面对2Sum问题的时候,首先对数组nums进行一个排序,然后维护两个指针,一个从小到大,一个从大到小的遍历整个数组,直到这两个指针相遇。- r=0, l=nums.size()- 当r<l的时候 - 如果nums[r] + nums[l...
2019-01-12 15:48:20
226
原创 [deep learning] Optimizer
本文主要是用于介绍深度学习中常用的几种优化器SGD:这是我们最常用的优化器之一。SGD其实有三个版本:batch-SGD,他是一个epoch更新一次数据,这样子的缺点也是很明显的,对计算的要求大,不能实时增加数据。有冗余的信息。SGD,每个sample更新一次梯度。这样子做的主要问题是网络可能难以收敛,波动较大。Mini-batch SGD,这是我们现在最常用的,就是对一个batch内...
2019-01-10 14:27:22
410
原创 [leetcode] RomanToInteger、IntegerToRoman和Container With Most Water
今天主要分享三道题Container With Most Water题意:给一系列的高度为hih_ihi的木板,彼此之间的距离为1个单位长度。问任选两个木板组成的容器面积最大是多少?解法1:暴力,遍历所有组合,时间负责度是O(n2)O(n^2)O(n2),代码如下:int maxArea(vector<int>& height) { i...
2019-01-10 13:08:13
156
原创 [leetcode] Regular Expression Matching
题意:让我们实现正则表达式的isMatching函数,判断包含正则表达式的p是否能匹配上字符串s。其中p只包含两种特殊字符。.和*,前者也可以匹配任意字符,后者可以重复前一个字符0~多次。解法:解法1,递归,分情况讨论s,p长度都为0,则返回trues长度不为0,p长度为0,则返回falses长度为0,p长度不为0,这种情况下只有p的格式是cc才可以匹配,否则都为false。两者...
2019-01-09 16:19:06
635
原创 [论文阅读] Going Deeper with Convolutions
一般来说更深的网络具有更好效果,更深的网络也面临两个问题。更深的网络拥有更多的参数,更容易过拟合。更深的网络对计算的要求也更高。针对上述问题的一个解决方法就是使用稀疏连接(convolutional layer),而不是dense connection。此外,同一类的物体在不同图片中的大小差距也比较大,如下图所示,从左到右图像需要的kernel size依次递减。为了解决这个问...
2019-01-09 12:42:41
630
原创 [论文阅读] Batch Normalization: Accelerating Deep Network Training By Reducing Internal Covariate Shift
Background存在什么问题?训练深度神经网络是比较复杂的,因为每层输入的分布在训练过程中都在变化。如果每层输入的分布在不停的变化,那我们就需要不停的调整我们的参数去补偿这部分变化,这就使得训练过程更加缓慢。此外,由于分布的变化使得使用saturating nonlinearity function变得更加难以训练。首先我们区分什么是saturating,什么是non-satur...
2018-12-25 10:43:00
457
原创 白化Whitening
白化操作的目的是让我们的减少冗余信息,准确来说通过白化操作我们有两个目的:每个特征之间关联性更少每个特征有相同的方差对于第一个目的来说,我们可以通过熟悉的PCA来实现。PCAPrincipal Components Analysis (PCA) 是一个用来减少特征纬度的算法,它通过减少特征的纬度来减少冗余信息。比如说,下图所示的一个特征纬度为2的点分类问题,我们可以看到数据的主要...
2018-12-24 19:12:12
1187
原创 [Tensorflow] 如何对两幅图像做同样的数据增广操作
在深度学习中,我们经常会对数据进行数组增广操作,比如说左右翻转,增加noise等操作。但是,现在我们的输入是一组图像是一个sample,那我们需要对这一组图像进行同样的数据增广操作,也就是说同一个sample之间的随机性是不存在的,不同sample之间的随机性是存在的。实现方法参考下面的代码:img = tf.ones([512, 512, 3], dtype=tf.float32)s...
2018-10-24 10:06:43
1683
原创 [论文阅读]SSD Single Shot Multibox Detector
SSD Single Shot Multibox DetectorCode: https://github.com/balancap/SSD-TensorflowSSD 是ECCV 2016的文章,文章主要提出了一种新的framework来完成object detection任务。主要的特点是速度快,mAP也比较有竞争力。文章的主要贡献提出了SSD,它比当时最快的YOLO更快,而且相比...
2018-10-10 21:40:02
241
原创 Nvidia-docker安装
首先按照下面的命令添加package repositories# Add the package repositoriescurl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add -curl -s -L https://nvidia.github.io/nvidia-docker/u...
2018-09-01 21:52:50
889
原创 医学图像分割中常用的度量指标
接下来给大家介绍一下医学图像中常用的几个度量指标,主要参考MICCAI2007 - 首先定义以下标识符:VgtVgtV_{gt}代表的是ground truth的分割结果,VpredVpredV_{pred}代表的是预测的分割结果. - DICE: 这个相信大家最熟悉,因为使用的频率应该是最多的.它的定义如下所示. 直观上来说代表的是两个体相交的面积占总面积的比值.完美分割该值为1. DIC...
2018-06-04 21:16:42
10315
8
原创 天池大赛--ICPR Text Detection总结
ICPR2018举办的文本检测比赛,详细链接请戳.任务描述:从一副图像中检测出文本所在的位置.先后尝试了三种做法: 基于Faster RCNN的CTPN方法,代码链接. 直接加载训练好的模型在数据集上测试F1 score只是0.10数量级. 关于CTPN的详情请看我的这篇博文—[论文阅读]—CTPN基于U-Net的EAST, 代码链接. 直接加载训练好的模型在数据集上测试F1 score...
2018-05-26 22:07:07
5554
1
原创 Tensorflow中的反卷积
实现函数:tf.nn.conv2d_transpose(input_tensor, filter_weights_tensor, output_shape, strides, padding) input_tensor: 代表的是输入的tensor,默认的size是[batch_size, w, h, channel]filter_weight_tensor: 代表卷积运算时filter参...
2018-04-09 16:51:32
1592
原创 【论文阅读】EAST: An Efficient and Accurate Scene Text Detector
任务:文本检测(可以检测倾斜文本)contributions 提出了End-to-End 的全卷积网络来解决文本检测问题可以根据特定的应用生成quardrangles或者是rotated boxes两种格式的几何标注改进了state-of-the-art方法算法的核心思想:主要思想来自于U-Net, 采用U型结构来得到1、pixel-level的分割预测结果。2、pixel-leve...
2018-04-08 20:48:27
2398
4
原创 Git 配置Server
首先配置Server(在GIT Sever执行下面的命令) sudo apt-get update sudo apt-get install git-core openssh-server openssh-clientsudo apt-get install python-setuptoolsgit clone https://github.com/res0nat0r/gitosis.g...
2018-04-01 22:11:11
437
原创 [论文阅读] CTPN---Detecting Text in Natural Image with Connectionist Text Proposal Network
这篇论文思路和Faster RCNN是差不多的。总体来说,就是先通过RPN(Region Proposal Network)来提取proposal,然后再对提取得到的proposal进行classification。文章对Faster RCNN有以下几点改进: Faster RCNN中使用的3种size和3种长宽比组合的9种anchor,但是CTPN中,他固定了anchor为16px(vgg...
2018-03-25 20:49:39
1004
2
转载 为什么L1正则项产生稀疏的权重,L2正则项产生相对平滑的权重
L1 和L2正则项的定义如下: L1=∑i|wi|L2=∑i(wi)2L1=∑i|wi|L2=∑i(wi)2L1 = \sum_{i} |w_i|\\L2 = \sum_{i} (w_i)^2首先我们先计算一下他们对应的导数,导入如下所示: ∂L1∂wi=1or−1→wt+1i=wti+η(−1or1)∂L2∂wi=wi→wt+1i=wti+ηwi∂L1∂wi=1or−1→wit+1...
2018-03-11 16:42:31
3310
2
原创 [论文学习]《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 》
faster R-CNN的主要贡献 提出了 region proposal network(RPN),通过该网络我们可以将提取region proposal的过程也纳入到深度学习的过程之中。这样做既增加了Accuracy,由降低了耗时。之所以说增加Accuracy是因为,RPN是可以通过反向传播训练的,所以他提取的proposal也会更准确一些。The Flowchart of the Fa...
2018-03-10 14:29:30
413
原创 [python] 修饰器
修饰器本质上是一种python函数的代称,它可以让其他函数在不需要做任何代码变动的情况下增加额外的功能。既然修饰器的本质是一种python函数,那么它就有对应的输入和输出,他的输入有两种可能,一种是参数,一种是function。他的返回值也是一个函数对象。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。先看一个简单的例子:下面的函数,我们实现了两个数字的加法操作。但是现在我们现在...
2018-03-05 21:06:45
458
1
原创 Caffe 安装
目标:在Ubuntu 16.04上装上CPU only 版本的caffe参考博客详细步骤:安装依赖sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install --no-i
2018-01-22 21:03:40
214
原创 CenterLoss---Tensorflow
本文主要讲解自己对CenterLoss的一些理解,想要看原文的请戳这里 A discriminative feature learning approach for deep face recognitionbackground CenterLoss提出的主要目的是对FaceNet的改进,FaceNet使用的是triple loss,该计算方法需要我们提前计算出三元组,计算量大不说,而且收敛
2018-01-16 16:08:57
2004
11
原创 word 技巧总结
如何给list的编号续上 双击编号,如果可以出现闪电⚡️符号,点击它,然后可以看到续前表,点击即可如果上述方法闪电符号不出现的话,点击格式->项目符号和编号->继续前一表->确定如何给图表(例如折线图)加上x轴的标题 选中折线图选中在word上方出现的图表设计点击添加图表元素选择坐标轴标题然后就可以添加横纵坐标轴的标题啦
2018-01-12 23:10:05
337
原创 GPU 命令行释放内存
我们在使用tensorflow+pycharm 写程序的时候, 有时候会在控制台终止掉正在运行的程序,但是有时候程序已经结束了,nvidia-smi也看到没有程序了,但是GPU的内存并没有释放,那么怎么解决该问题呢?首先执行下面的命令sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID因为我们只有一块显卡,所以显示如下图所示: 可以看到我们的nvidia0上还有一
2017-12-21 10:25:41
44602
5
原创 cuda之遇到过的bug
在运行cuda sample hello world的时候,我们遇到了如下的错误cc1plus: fatal error: cuda_runtime.h: No such file or directory在这里,我们执行的是nvcc hello.cu,之所以会报这个错误,是因为我们nvcc的路径的问题,我们是直接把nvcc拷贝至了/usr/local/bin下面,这并不是一个很好的姿势,需要我们
2017-10-13 09:38:36
4426
原创 [深度学习]Softmax 交叉熵
交叉熵代表的是不同概率分布的相似情况,他的计算方法如下所示:其中y代表的是每种类比出现的概率 cross\_entropy = -\sum y * log(y)对于深度学习中的分类问题来说,当分类越准确的时候,上述值就越小。但是对于神经网络来说,怎么把一个神经网络的输出转化成相应的概率呢?这就是我们接下来要说的softmax函数的作用softmax函数的定义如下所示:我们可以看到sof
2017-09-16 21:47:30
730
转载 使用PyCharm进行远程开发和调试
使用PyCharm进行远程开发和调试你是否经常要在Windows 7或MAC OS X上面开发Python或Web应用程序,但是它们最后需要在linux上面来运行呢? 我们经常会碰到开发时没有问题但是到了正式的Linux环境下面却出现问题。那么怎样保证开发环境跟运行环境的一致呢?通常有两种方法解决。一种是使用PyCharm内置支持的Vagrant,这个教程可以参考V
2017-09-14 11:44:30
983
原创 论文阅读:RCNN[Rich feature hierarchies for accurate object detection and semantic segmentation]
文章的突出点 可以利用大容量(high capacity)的卷积神经网络去定位分割物体当我们训练数据很少的时候,我们可以使用迁移学习的方法来fine-tuning现成的网络文章的重点当然是我们怎么去定位一个物体,在这里,我们以人脸识别为例,在一张图片中检测出人脸。 数据集:FDDB人脸检测库FDDB流程: 从一张图像中选取许多个bounding box,文中说明了使用selective
2017-08-17 20:52:33
525
原创 Python 多进程
基本的多进程:每个程序之间相互不关联,不需要返回结果使用Processing类即可实例如下:process = Process( target=processing_one_folder, args=( fold_path, annotations_dict[int(fold_name)], ))process.start()其中tar
2017-08-17 15:27:15
283
原创 Tensorflow 笔记
tf.get_variable 和 tf.Variable的异同:他们都可以用来创建变量通过get_variable我们还可以获取到之前的变量,不过这需要和variable_scope配合使用,如下举例获取到在其他文件中定义的weights参数with tf.variable_scope(name, reuse=True): res_dict[name] = [] res
2017-08-17 15:14:23
366
原创 Tensorflow、深度学习填坑记
问题1 背景:VGG16去做一个人脸j检测的算法,使用RCNN,在fine-tuning的时候其实就是一个二分类问题,区分出来background和face问题描述:在fine-tuning的时候总是将所有样本归到负样本,即就是background。解决方案:增大学习率,一开始我还以为是我selective search提取bounding box的时候有问题,但是完全使用VGG16去做SVR
2017-08-17 10:18:51
497
原创 论文阅读-BoVW-pLSA
论文链接:Medical Image BoVW-pLSA文章大意:其实和BoVW-MI差不多,也都是在原来的词库上选择一些更具代表性的词汇。只不过将原来mutual information更换成了这里的PLSA方法,PLSA详细介绍请看下文。PLSA(probabilistic Latent Semantic Analysis)首先我们先明白一下单词的意思: word:视觉单词,代表的是通过B
2017-08-15 22:21:19
670
原创 python-PIL 画出带有角度的椭圆
最近在学习FDDB的人脸识别库,发现他们的标记是用椭圆来标记的,而且还是有角度的椭圆。在PIL库中好像并没有画出带有角度椭圆的函数,所以在StackOverflow上找到了如下代码:def ellipse_with_angle(im,x,y,major,minor,angle,color): # take an existing image and plot an ellipse cen
2017-08-14 21:39:23
4130
原创 PAT-Forwards on Weibo
原题链接:Forwards on Weibo题目大意:给你一个有向图、起点和最远能走的步数,让你计算一共可以经历多少个点解法:无非就是遍历,给定起点,我们利用广度优先遍历的算法来做,使用queue来存储每一个节点,注意,在这里我们不仅仅要维护每个节点的坐标还要维护一个length值,代表的是从起点走到当前节点的路程距离,这个举例不能超过题中给出的约束条件。代码如下:#include <ios
2017-08-13 20:48:11
356
原创 PAT-Build A Binary Search Tree
原题链接:Build A Binary Search Tree题目大意:给你一个数组,让你将其按照指定的二叉搜索树的结构排序,最后输出这颗二叉搜索树的层次序遍历结果。解法:原以为还需要我们自己手写二叉搜索树的构建,最后才发现不用,我们只要将这个数组排好序,再对号入座到响应的位置,然后输出遍历结果就好。那我们怎么找到相应的位置呢? 我们可以找到二叉树中每个节点对应的value值,怎么找呢?我们
2017-08-11 21:01:26
279
原创 PAT-Insertion or Heap Sort
题目链接:Insertion or Heap Sort大意:给你两个数列,第二个是第一个通过某种排序算法过程中产生的一个状态序列。让你判断此时使用的是插入排序还是堆排序,并且输出下一个状态的序列。很暴力的解法,把排序的每一个状态都记录下来,然后一一比对,最后输出下一个状态序列。我们直到插入排序时间复杂度是O(N^2),但是本题数据量也较少,n<=100。所以没有问题。不论堆排序还是插入排序,记录
2017-08-11 10:48:58
388
原创 堆排序
在这里我们主要讲解一些最大堆排序的过程。先来一段百度百科的介绍:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可
2017-08-11 10:40:33
305
原创 论文阅读:BoVW-MI:TASK DRIVEN DICTIONARY LEARNING BASED ON MUTUAL INFORMATION FOR MEDICAL IMAGE CLASSIFIC
BoVW MUTUAL information
2017-08-09 21:47:11
743
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅