自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiaoxifei的专栏

机器视觉与深度学习

原创 机器学习--基础--逻辑回归/分类(logistic regression)原理与设计思路

logistic regression文章目录logistic regression原理前言建模思路为什么采用sigmoid为什么采用交叉熵构建损失函数原理前言逻辑回归与分类同线性回归与分类有很强的关系;关于逻辑回归算法本身的学习应当参考线性回所指出的一般性思路,即先找两个算法的共同点;其后就逻辑回归算法设计的独到之处进行辨明,即学习该算法相较于其他算法的不同点;从中领略算法设计的思想。建模逻辑回归的建模是明确且简单的,假设具有(x0(0),x1(0),...),(x0(1),x1(1),...

2020-05-13 16:48:41 88

原创 机器学习--基础--线性回归原理与机器学习一般性建模思路

线性回归文章目录线性回归原理机器学习最一般性的思路原理线性回归是一个很基础很简单的问题。如下所示特征1特征2特征3…标签值x10x_1^0x10​x20x_2^0x20​x30x_3^0x30​…y0y_0y0​x11x_1^1x11​x21x_2^1x21​x31x_3^1x31​…y1y_1y1​……………这是一组特征值序列以及他们的标签。线性回归实际上是认为这些特征值同标签存在着线性相关的关系,关系可以描述为:hθ(X)=

2020-05-12 16:34:30 156

原创 机器学习--基础--微分

机器学习中用到的微分文章目录机器学习中用到的微分背景现有常见微分方式梳理自动微分forward 方法backward方法自动微分与机器学习自动微分与机器视觉背景机器学习中尤其是深度学习用到的数学基础首推微分。机器学习中优化问题的解决大多数情况下同微分有关,比如牛顿法,梯度下降法;深度学习中就更不用说了,整个深度学习框架(tensorflow,pytoch等等)的基石,或者说首要处理的问题就是自动微分,pytorch的前身Chainer名字的来源更是微分中的链式罚则。可见理解机器学习中的微分有多重要。这

2020-05-12 14:36:23 79

原创 机器学习---优化---梯度下降

梯度下降优化方法文章目录梯度下降优化方法背景思想原理背景梯度下降优化方法是最为简单基础的优化方法,其直观好用的特点支持其广泛应用于传统的机器学习到深度学习任务;是非常基础且常用的方法;了解其原理对于理解机器学习的框架具有重要意义。思想梯度下降思想非常简单直观,具体可以如下图所述:(这里不讨论具体优化函数的凸性与否)如图所示,梯度下降的思路是非常直观的,即从任意的初始点开始沿着梯度值减少的方向更新获得下一个计算点,在以此点迭代更新获得新的计算点,从而达到获取函数极值的目的。就像上图所示,从初始点

2020-05-11 18:00:42 179

原创 Pytorch 如何 优化/调整 模型参数

Pytorch 如何自动优化/调整 模型超参文章目录Pytorch 如何自动优化/调整 模型超参背景优化模型参数贝叶斯优化深度学习框架下的参数优化平台安装使用参考参考背景对于优化模型性能表现而言,主要可归纳为两种方式:采用NAS的方式搜索,获得某个任务上最优的模型结构以及模型参数设置优化模型参数诚然,对于第一种方式来说,NAS对算力的消耗是巨大的,因而需要具备巨量计算资源才能够进行...

2020-04-30 10:55:23 730

原创 Python 安装tensorflow报错wrapt(cannot uninstall 'wrapt'. it is a distutils installed project tensorflow)

本人环境:win10 pro 64bits Anaconda python3.6安装tensorflow 2.0 以及 tensorflow 1.14解决方法:conda uninstall wrapt 或者pip uninstall wrapt然后安装下面是安装完成后截图...

2020-04-22 10:16:12 139

原创 Python AudioSegment winError 2 The system cannot find the file specified(winError2 找不到系统文件)

这是一个pydub 包的开发错误;中文环境里面的解决方案几乎都是胡说八道,我查看了pydub的代码后,给出如下解决方案,亲测有效。我的环境是 python3.6 pydub 0.23.1这个问题首先是由于ffmpeg造成的1. 下载而不是直接安装ffmpeg 下载地址是(http://ffmpeg.org/),这里需要注意的是下载ffmpeg的exe文件,而不是直接下载sou...

2020-04-03 16:12:31 355

原创 Pycharm 报错 buffer = _builtin_open(filename, 'rb')

使用Pycharm 进行远程调试时会出现这样的错误,tokenize.py 报错,具体情况如下这其实是pycharm没有设置好的原因,具体需要在设置编译器的时候,吧path mapping设置好,将本地位置和服务器上位置设置好mapping,只需要按部就班的设置就可以了。...

2020-02-21 14:36:06 746

原创 图像去除栅格,条纹伪影的办法(附python代码)

医学图像中,有些时候由于使用栅格作为准束用的手段,这会导致栅格的信息叠加在图像中,形成所谓的栅格伪影,比如DR图像中的栅格伪影,如下所示:比如像这张图像中的条纹,这就是栅格伪影。栅格伪影对于正常的图像检测是一种干扰,会影响到对图像细微结构的判断,会影响到图像整体展示效果,因而需要去除。去除栅格伪影是一件简单的事情,因为从成像叠加的原理上来讲,栅格伪影是由准束用经过精确切割的滤线栅所造成...

2020-01-09 09:40:30 936

原创 Pytorch 模型训练如何提速(speed up pytorch model training)

前言导致pytorch的模型训练速度比较慢的原因最有可能的是三个:1. 数据导入环节,操作复杂2.模型本身很复杂,数据流在模型中传递时过于耗时 3.loss函数计算复杂。这其中第一个环节往往是最有可能的原因,第二,三个环节其实一回事;pytorch本身的框架针对这两个问题也做了大量的优化,如果不是专业技术过硬,建议在这两个环节上就不要过于纠结了,设计简单易用的模型才是正道。数据导入环...

2019-12-25 10:54:53 540

原创 图像质量评估指标(6)自然图像质量评估NIQE (付代码链接)

一种新的无参考图像质量指标 NIQEmaking a completely blind image quality analyzer介绍新的模型称之为NIQE(Natural Image Quality Evaluator),这个模型的设计思路是基于构建一系列的用于衡量图像质量的特征,并且将这些特征用于拟合一个多元的高斯模型,这些特征是从一些简单并且高度规则的自然景观中提取;这个模型实际上是...

2019-12-23 15:35:30 2530 9

原创 Pytorch 版本的lookahead 优化函数使用(附代码)

Lookahead 优化算法是Adam的作者继Adam之后的又一力作,论文可以参见https://arxiv.org/abs/1907.08610这篇博客先不讲述Lookahead具体原理,先介绍如何将Lookahead集成到现有的代码中。本人在三个项目中(涉及风格转换、物体识别)使用该优化器,最大的感受就是使用该优化器十分有利于模型收敛,原本不收敛或者收敛过慢的模型在使用lookahea...

2019-11-30 14:35:25 390

原创 从单据图片中提取感兴趣区域(附代码)

有一种任务是从单据或者是书籍的图片中找到相应的感兴趣区域,并将其提取出来以作后续的使用;示例如下所述:比如上述红圈所描述的区域,提取出人名等有用信息。解决这种问题的算法可以按照下面的过程进行:1. 图像二值化2. 简单去噪声干扰3. 找到闭合区域,并用闭合区域的面积进行过滤选取另附代码如下:import cv2# 图像预处理image = cv2.imrea...

2019-11-28 10:53:13 216

原创 图像中检测小点算法思路(另附代码)

如何从图像中检测小数点,这是一个比较简单典型的问题。比如说像下面这样的一张图,检测出小数点的位置。这里的思路简单来说可以按照下面的三个步骤:1. 如果是RGB彩色图,可以转变为灰度图,然后使用阈值方法将其二值化(可以采用OTSU等自适应的阈值方法)2. 采用简单降噪的方法把一些小的噪声点去除(这里方法很多样,一般可以采用高斯低通或者形态学方法)3. 找到闭合轮廓线,使用轮廓线围...

2019-11-28 10:36:46 139

原创 tensorflow 报错DLL load failed:找不到指定的模块

我在重新安装tensorflow 1.12 版本(GPU与CPU)时报如下错误。这个错误很简单,就是CUDA版本CUDNN版本同安装的tensorflow版本不匹配,由于我早已经安装CUDA10.0以及相应版本的CUDNN,所以会报这个错误。因为其他项目依赖CUDA10.0 因此我无法降低CUDA版本,所以解决这个问题很简单,重新安装tensorflow 1.14.0 版本即可。如...

2019-11-25 11:05:12 128

原创 Python time 模块time 函数的时间单位

Python 中time 模块下的time 常用于计算函数运行的时间import time starttime = time.time()xxxendtime = time.time()print('xxx {:.5f} s'.format(endtime-starttime))这里的时间单位是秒(s), 可以参见官方文档对此的描述(https://docs.python.o...

2019-11-22 15:35:18 734

原创 加权平均融合消除图像拼接的拼缝(Python 代码)

这里提供一种采用加权平均融合消除图像拼缝的算法,供大家使用。如下图所示,如果两张图像直接进行拼接,就会在拼接位置处产生一条拼接缝,拼接缝的产生来源于两张图像光场有差别所导致的两者虽然是连续的结构,但是在两张图中的具体数字存在一定的差异。对于具有重叠部分的两张图像,消除这种拼缝的方法主要是基于特征点匹配所涉及;但是加权平均融合方法是最为简单有效的办法,这里将此算法的python代码给出。...

2019-11-13 11:39:46 2236 6

原创 Python 有重叠的切分图像 代码(overlap split image)

在深度神经网络训练过程中,常常需要将图像有重叠的切割后送入网络。我现在把这段简单的代码放出来供大家参考。import numpy as npimport cv2def cutimg(img,num,overlap_factor): '''img 是图像矩阵,num是切过后子图数目,因为统一为正方形切图,因此这里的num开方后需要为整数, overlap_f...

2019-10-25 10:13:57 1004 4

原创 衡量曲线相识度的指标

目录方法总论1. 基于点匹配的方法2. 基于形状的方法方法总论衡量两条曲线f1(x,y)f_1(x,y)f1​(x,y)与f2(x,y)f_2(x,y)f2​(x,y)的相似度,从传统特征工程的角度来讲,思路无外乎是设计不同的特征空间,将曲线映射到特征空间里面再进行相似度的对比,这种相似度的对比实际上就是在特征空间里面的欧式距离了。目前而言,常用的设计思路主要是出于两个方面设计,一个是从...

2019-10-20 12:26:00 529 1

原创 Tensorflow 多个损失函数合成与多个损失函数多次操作的区别(Tensorflow: Multiple loss functions vs Multiple training ops)

代码样例第一种情况final_loss = tf.reduce_mean(loss1+loss2)train_op = tf.train.AdamOptimizer().minimize(final_loss)第二种情况train_op1 = tf.train.AdamOptimizer().minimize(loss1)train_op2 = tf.train.AdamOptimi...

2019-09-18 14:57:58 987

转载 神经网络的可解释性 从经验主义到数学建模

这是我的一篇转载文章,原文地址:https://zhuanlan.zhihu.com/p/71287186本来想把题目取为“从炼丹到化学”,但是这样的题目太言过其实,远不是近期可以做到的,学术研究需要严谨。但是,寻找适当的数学工具去建模深度神经网络表达能力和训练能力,将基于经验主义的调参式深度学习,逐渐过渡为基于一些评测指标定量指导的深度学习, 是新一代人工智能需要面对的课题,也是在当前深度学...

2019-07-04 09:01:05 286

原创 Libra(技术解读) (2)

Libra区块链是一个分散的、可编程的数据库,旨在支持一种低波动性的加密货币,该加密货币将能够作为全球数十亿人的有效交换媒介。我们提出了一项关于Libra协议的建议,该协议实施了Libra区块链,旨在创建一个金融基础设施,以促进创新、降低进入壁垒和改善金融服务的获取。为了验证liba协议的设计,我们构建了一个开源原型实现——liba核心——以期通过全球协作推动这个新生态系统的发展。liba协议允...

2019-06-30 17:33:04 524

原创 Libra (介绍) 建立一个简单的全球货币和金融基础 (1)

1. 简介Libra的使命是建立一个简单的全球货币和金融基础设施,使数十亿人受益[1]。互联网和移动宽带的出现使全球数十亿人能够获得世界上的知识和信息、高保真通信以及广泛的低成本、更方便的服务。这些服务现在几乎可以从世界任何地方使用价值40美元的智能手机访问。1这种连接通过使更多人能够访问金融生态系统,推动了经济授权。科技公司和金融机构共同努力,也找到了解决方案,帮助世界各地增强经济实力。...

2019-06-29 18:03:36 545

原创 Python 如何替换Dicom医学图像内容 附代码

在医学图像处理中的常见图像往往是Dicom格式保存,但是某些公开数据集上的数据直接就是.jpg或者png格式的保存,为了统一图像的输入模块,需要固定输入图像是dicom格式,这时候就涉及到使用png等格式的图像对已有的,非加密的dicom格式图像的图像矩阵内容做替换了。1. Python下对dicom图像进行解析操作需要安装Pydicom模块2. 使用Pydicom模块读取dicom数据...

2019-06-27 10:46:15 1126 7

原创 Tensorflow2.0.0alpha 版本 DLL load failed:找不到指定模块

这个问题是一个很简单的问题,但是中文环境里面尽是一堆破建议,都没有搞清楚原因的由来就开始哔哔;造成这个错误的原因是tensorflow2.0 基于cuda10 开发,需要将自己的cuda设置为10,cudnn也需要相应版本,问题原因描述如下https://stackoverflow.com/questions/56419549/tensorflow-2-0-importerror...

2019-06-21 11:16:31 1242

原创 Pytorch 模型训练模式和eval模型下差别巨大(Pytorch train and eval)附解决方案

当pytorch模型写明是eval()时有时表现的结果相对于train(True)差别非常巨大,这种差别经过逐层查看,主要来源于使用了BN,在eval下,使用的BN是一个固定的running rate,而在train下这个running rate会根据输入发生改变。解决方案是冻住bndef freeze_bn(m): if isinstance(m, nn.BatchNorm2d...

2019-05-29 16:29:02 5172 9

原创 一种数据增广方案(Data Augmentation)MixMatch算法 另附代码分析

MixMatch 算法来源于 MixMatch: A Holistic Approach to Semi-Supervised Learning 这篇文章,客观来说这篇文章并不能严格的算作是数据增广,应该是一种半监督的训练方法,即使用少量数据训练模型使模型达到举一反三的目的。但是我认为这仍然可以归为数据增广的范畴,因为数据增广的目的就是防止模型训练过拟合,使之能在更大的数据集上也有好的表现,只不过...

2019-05-22 19:55:24 2696 8

原创 一种图像增广(Image Augmentation)方式 Mix Up 算法 附有代码解析

这是对facebook研究团队的一篇文章 Mixup: Beyond Empirical Risk Minimization 的解读这篇文章相对于之前提到的Sample pariring来说就不那么神奇了,因为毕竟文章作者在里面有一些相关理论的推导。文章开头通篇讲的是ERM也就是经验风险最小化原则是整个机器学习遵循的原则,作者正是基于此思想才提出了MixUp的方法。在一般的机器学习任务中,比如...

2019-05-21 23:31:45 3245 10

原创 一种图像增广(Image Augmentation)方式 Sample pairing image augmentation

在深度学习领域中常常存在着图像数量不够,或者图像种类不丰富等情况,这一点在医学图像处理中尤其常见,根据我个人经验,使用良好的图像增广(Augmentation)往往能达到事半功倍,甚至是起到决定性的效果。另外,随着半监督、无监督等算法的新起,对图像增广,以及图像relabel的各种算法也开始出现,有必要在这里讨论下一些奇怪但有效的图像增广方法。Sample pairing 增广方法来自于奇...

2019-05-21 16:32:17 1445

原创 破除人工智能中的数据孤岛------联邦学习

众所周知,现在人工智能的工作优化模式是基于数据的,也就是所谓的数据驱动;但是随着人工智能落地场景越来越丰富,社会对于数据隐私的关注也越来越重,尤其是在一些本就需要对隐私保护比较看重的领域(比如银行信贷),范例如下所示:欧盟在几个月前颁布了《一般数据保护条例》(简称为GDPR)。该条例是近三十年来数据保护立法的最大变动,旨在加强对欧盟境内居民的个人数据和隐私保护。法案强调,机器学习模型必须具有可...

2019-05-13 10:44:51 1186

原创 Reduce failed to synchronize: device-side assert triggered .(一个在中文里很难找到解决方案的问题)

这里必须吐槽下中文环境的bug搜寻情况,直接输入上面的报错很难找到中文描述对应的解决方案。这是在使用pytorch 自带的BCELoss所报的错误,在GPU,多GPU与CPU运行loss时都会报这样的错误。我的pytorch环境是0.4.1 ,低于此版本的pytorch都会报这样的问题,1.0版本以上的没有测试过,不知道。这个bug的来源是BCELoss中输入的张量value的范围必须...

2019-04-16 10:41:33 9561 7

原创 Opencv(Python)绘制轮廓函数

opencv有一个绘制轮廓的函数drawContours,很久没用了,现在把使用方法记录下来mask = cv2.imread(path,cv2.IMREAD_UNCHANGED) ''' use threshold, second param is th and the third is number put in when pixel intensity higher t...

2019-03-30 17:46:29 1534

原创 SegNet学习笔记(附Pytorch 代码)

SegNet 的应用SegNet常用于图像的语义分割。什么是语义分割了?,我们知道图像分割大致可以划分为三类,一类是语义分割、一类是实例分割,一类是全景分割,另外还有一些可以归为超像素分割。打个比方,如果是有一群人的沙滩排球这样的一个场景,图像中有一群人,有蓝天,大海,沙滩,还有一些椰子树。语义分割就是将人从这张图中分出来,其他的全部认为是背景;实例分割,就是不仅仅要把人分出来,还要区别不同的人...

2019-03-21 11:26:51 3298 3

原创 图像质量评估指标(5) 梯度幅相似性偏差 GMSD

梯度幅相似性偏差 GMSD(以下使用GMSD作为简称)的提出主要是受到图像梯度场对于图像退化比较敏感这一事实的启发提出的。GMSD出现比较晚(2013年),在此之前有很多比较流行的评估指标比如VIF和FSIM等等,但是在当时条件下这些算法的计算耗时相对来讲比较长,因此GMSD的设计主要围绕着下面两个指标进行:1. 提供可信的评价能力2. 使用尽可能小的计算时间开销用论文作者的话说就是:...

2019-03-06 11:49:14 2388

原创 卷积神经网络降低显存消耗方法(可分离卷积Separable Convolution,Pytorch代码示例)

卷积神经网络中的Separable Convolution卷积网络运算中非常消耗显存,除了从框架本身考虑节省显存外,也可以从计算方式来入手,这里分享一篇讲分离卷积计算的博客(https://yinguobing.com/separable-convolution/#fn2)常规的卷积运算假设输入为64643的这样一个彩色图片,经过一个包含有4个filter的卷积层,最终输出4个通道,设定每一...

2019-02-27 10:40:47 2447

原创 Pytorch optimizer.step() 和loss.backward()和scheduler.step()的关系与区别 (Pytorch 代码讲解)

因为有人问我optimizer的step为什么不能放在min-batch那个循环之外,还有optimizer.step和loss.backward的区别;那么我想把答案记录下来。首先需要明确optimzier优化器的作用, 形象地来说,优化器就是需要根据网络反向传播的梯度信息来更新网络的参数,以起到降低loss函数计算值的作用,这也是机器学习里面最一般的方法论。从优化器的作用出发,要使得优...

2019-02-20 15:24:53 25232 5

原创 WGAN-GP学习笔记(从理论到Pytorch实践)

WGAN相关学习,主要文献 improved of training of WGAN首先我们需要明白一般的GAN数学表达式如下:mathminGmaxDEx∼Pr[log(D(x))]+Ex~∼Pg[log(1−D(x~))]math\mathop{min}\limits_{G}\mathop{max}\limits_{D}\mathop{E}\limits_{x\sim{P_r}}[log...

2019-02-17 17:03:22 5342 8

原创 WGAN学习笔记(从理论分析到Pytorch代码实践)

原始的GAN存在的问题原始的GAN的目标函数实际上可以表现为−Ex∼Pr[logD(x)]−Ex∼Pg[log(1−D(x))]-E_{x\sim{P_r}}[logD(x)] - E_{x\sim{P_g}[log(1-D(x))]}−Ex∼Pr​​[logD(x)]−Ex∼Pg​[log(1−D(x))]​这里PrP_rPr​是真实的样本分布,PgP_gPg​是生成器产生的样本分布。...

2019-02-15 16:21:31 2725 2

转载 直观理解WGAN为什么好训练

转载自https://zhuanlan.zhihu.com/p/53260242最关键的地方其实是D(X),即对整个H*W*C这个高维空间的评分系统,好不好训,最关键的地方其实是D(X)的打分是否是从G(X)(生成分布)的支撑集的低分逐渐升高到R(X)(真实分布)的支撑集处的高分,从而使得G(X)这个生成分布可以顺着D(X)的梯度不断靠近真实分布R(X)。以往的损失函数在固定G后train...

2019-01-23 15:40:18 1302

原创 关于PatchGAN的理解

GAN一般情况下的网络结构,在一些人的实验中已经表明对于要求高分辨率、高细节保持的图像领域中并不适合,有些人根据这一情况设计了PatchGAN的思路。这种GAN的差别主要是在于Discriminator上,一般的GAN是只需要输出一个true or fasle 的矢量,这是代表对整张图像的评价;但是PatchGAN输出的是一个N x N的矩阵,这个N x N的矩阵的每一个元素,比如a(i,j) 只...

2019-01-16 14:30:02 16432 11

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