暂无个人介绍
正则表达式是一种通用的技术,它不仅适用于开发人员,对于非开发人员来说,掌握这项技术同样可以提高日常的工作效率。它的覆盖范围之广泛,可以用"无所不至"形容,linux命令行、文本搜索、开发、爬虫等。本文就来详细介绍一下正则表达式的使用。
LeNet是由2019年图灵奖获得者、深度学习三位顶级大牛之二的Yann LeCun、Yoshua Bengio于1998年提出,它也被认为被认为是最早的卷积神经网络模型。但是,由于算力和数据集的限制,卷积神经网络提出之后一直都被传统目标识别算法(特征提取+分类器)所压制。终于在沉寂了14年之后的2012年,AlexNet在ImageNet挑战赛上一骑绝尘,使得卷积神经网络又一次成为了研究的热点。尽管近几年深度卷积网络非常热门,LeNet基本处于被忽略的状态,但是它的思想依然对CNN的学习有着不可忽视的价值。本文就详细介绍一下LeNet的结构,同时会详细介绍网络模型的搭建方法。
过拟合是机器学习中非常常见并且令人困惑的一种现象,因此很多研究者在不断的研究不同的方法解决过拟合,例如权重衰减、过滤器范数约束、稀疏激活等,虽然各种方法层出不穷,但是效果都与Dropout相差很远。从2012年Dropout横空出世至今,它一直是解决过拟合问题的首选之一,它不仅自身效果突出,而且可以和其他解决过拟合的算法结合使用,因此成了很多深度学习模型的必选单元之一,本文就来详细的介绍一下Dropout。
在Python中,通过类的特殊方法可以给类添加上运算法、字符串、函数调用、迭代器等众多功能,让Python面向对象编程变的更加丰富。前文介绍了一些比较常用的特殊方法,Python中的特殊方法远不止这些,本文介绍剩余的一些特殊方法。当然,由于篇幅有限,不可能面面俱到的把每一个方法都详细的介绍,因此,本文会按功能对剩余的特殊方法进行分类,从每类中挑选个别的进行编码讲解。
当我们使用一些波动幅度较大的数据做预测分析时,我们需要对它进行标准化、归一化、滑动窗口等方式做预处理,这样不仅可以提高计算速度,还可以一定程度上提高结果的准确度。这一点在深度神经网络中同样适用,批量归一化(Batch Normalization, BN)就是其中用于数据归一化的一种非常常用的算法,在tensorflow、mxnet这些知名的机器学习框架中都对BN进行了实现,它不仅能够加快训练过程,同时还具备一些正则化功能,对防止过拟合具有一定作用。下面就来详细介绍一下这个算法。 备注:在有些文章中Batch Normalization也有被译作批量标准化
激活函数是卷积神经网络模型中必不可少的一个单元,它不仅让深层神经网络变得有意义,而且使得模型对非线性空间的拟合效果更好。目前有很多种类的激活函数,其中比较常用的包括逻辑函数、双曲正切函数、线性整流函数、带泄露线性整流函数等,它们各有自身的优缺点,下面分别介绍一下各个激活函数,之后在项目中可以根据不同的场景选择对应的激活函数。
类,对于Python这类面向对象的编程语言至关重要。而特殊方法,又是Python类中举足轻重的一系列方法。特殊方法,又称为魔术方法,通过特殊方法的使用,能够将类变成字典、字符串,能够实现各种高级、简洁的程序设计模式。本文就来讲解一下Python类的特殊方法,由于特殊方法比较多,篇幅有限,所以分开来讲。
近几年出现了很多经典、优秀的卷积神经网络模型,单从网络架构来说,很多都是采用的AlexNet、VGG这些经典网络作为基本的模块,它们所采用的组件大同小异,如果学习卷积神经网络仅仅为了能够搭建一个跑得通的模型,那是没有意义的,因为目前开源项目随处可见,而且千篇一律,实现一个CNN网络模型所需代码不过几十行。其中真正重要的是里面的卷积层、池化层、批量正则化、Dropout这些行之有效的技术。所以,要想学习卷积神经网络,首先应该了解这些概念,当对这些内容有了了解之后会发现搭建网络轻而易举。
"I really love the line-of-code completions in the new kite.com",Python之父Guido van Rossum这样评价这款工具。这是一款基于人工智能的Python编码自动补全工具,起初,我对这款工具并不看好,直到我使用一段时间之后,才不由得感叹--"这款工具太牛了",有了它,就可以摆脱繁琐的插件配置、摆脱臃肿的IDE。
通过对Python基础知识的学习,你可以写出一些能够跑得通、实现相应功能的代码。但是这显然是不够的,如果你要写出让机器、让其他人更容易读懂的代码,那就需要掌握一些特殊的用法,装饰器就是这些特殊用法中的一种。装饰器是Python中一个非常重要的概念,通过装饰器的使用可以让代码更加简洁易懂,能够避免很多重复的代码行,减少代码冗余。本文就来详细的介绍一下它的使用。
不管是否喜欢Python这门编程语言,它都是目前最受欢迎的编程语言之一。尤其是在计算机视觉、自然语言、数据分析等领域,它具有不可撼动的地位。有同学提及Python会不懈的说“这门编程语言太容易了”,但是我个人认为它是一门“会用容易,用好困难”的编程语言。开设【进阶Python】这个系列不会去重复的讲解Python的基础语法,会从Python的一些高阶用法开始,讲解一些平时开发过程中用的较少或者容易忽略的部分。开设这个系列的目的主要有两点:第一:把自己开发过程中的一些心得和经验总结下来。第二:如果能够帮助更多的Python学习者,那就更加荣幸了。
入门计算机视觉领域的绝大多数同学应该都学过或听说过斯坦福大学的公开课(CS231n: Convolutional Neural Networks for Visual Recognition),主要就围绕CNN进行展开,甚至很多近几年入门计算机视觉的同学就斩钉截铁的认为,计算机视觉就是卷积神经网络,我认为这有一些"一叶障目,不见泰山的"感觉。CNN是计算机视觉的一个子集,而且是一个很小的子集,更确切的说,计算机视觉是一种应用性技术,CNN是一种工具。本文就来介绍概述一下卷积神经网络,后续会挑选比较经典的模型详细展开并编程实现。入门计算机视觉领域的绝大多数同学应该都学过或听说过斯坦福大学的公开课
一年一度的秋季招聘马上就要开始了,秋季招聘是校园招聘中最为集中、岗位最多的一次集体招聘会,虽然也有春招,但是对于很多公司而言主要是“查漏补缺”,岗位数量相对于秋招有很大的差距。因此,很多即将毕业的学生会把秋季招聘看的非常重要,毕竟第一份工作对一个人来说是至关重要的,每个同学都希望找到称心如意的工作,我在这里推荐2份不错的Github学习资源,对近两年各大互联网、IT公司面试过程中遇到的问题进行了总结和汇总,希望对即将参加校招的同学有所帮助。
DPM模型在我心里的印象一直都非常深刻,不仅是因为它非常经典,此外,它是我进入CV领域看的第一篇文章。还记得当初开始做项目时,老师就发给我一篇文章,并反复声明,要认真研究,好好学习。我反复把这篇文章看了很多遍,也把源码看了几遍,真是深深的被这个神作惊叹到了。真不愧为传统目标识别领域的经典之作,虽然时间过去很多年,特征提取加机器学习这一套在效率上远不如深度学习,但是DPM的影响力和思想依然非常有生命力,从后面深度学习模型中经常可以看到DPM的身影,DPM的原文从2009年至今引用已经超过8000次,它的价值可见一斑,下面就来介绍一下这个经典的目标检测模型。
在机器学习的过程中,我们会去不同的平台寻找一些学习资源,对于很多人来说,GitHub是一个非常好用的开源项目托管社区。GitHub上的确有很多热门受欢迎的开源项目,但是我个人认为大多数项目比较浅显,而且形式类似,且内容过于繁多,当学习时却无从下手,或者无法理解这些算法背后的原理。近期GitHub开源了一个热门开源项目,在一段时间学习之后发现的确非常不错,在这里推荐给大家。
做开发的应该很多人都知道Docker,就算是没有用过,应该也有所耳闻。这款开源于2013年的工具一经问世,便迅速火爆起来,在微服务 、项目迁移、云等方面备受欢迎。如今它的github项目已经达到54k个star。Docker到底是什么?它有什么优点使得它如此受欢迎?到底该怎么使用?本文就从以上几点进行阐述,希望通过这篇文章能够让大家对Docker有一个清晰的认识。
2018年被很多人认为是人工智能元年,每个人都在谈论AI,高校创建人工智能学院,人工智能相关的创业公司如同雨后春笋一样,和AI相关的公众号、媒体也呈现喷发式的增长。不管懂或者不懂AI的人都在追捧AI,而计算机视觉(Computer Vision)作为人工智能里应用场景相对较为丰富的领域,更是令人趋之若鹜。很多非本方向的学生、工作人员都放弃了原本熟悉的行业转身投入到计算机视觉领域。这样做到底是否值得?计算机视觉前景到底如何?计算机视觉目前还面临哪些问题,本文谈一下个人看法,如有不同意见,欢迎讨论。
在Python开发和测试过程中主要有两种模式可以选择:脚本模式、命令行模式。在代码的开发和调试过程中使用脚本模式还是很方便的,尤其接触pycharm、eclipse这类强大的IDE,或者配合vs code这种综合的文本编辑器。但是如果使用纯文本编辑器,或者是在做整个系统开发时,与其他模型进行接口调用时,命令行模式就显得非常重要了。目前有很多热门的命令行工具,本文会一一介绍一下,并且重点介绍一下最近发现的一款命令行神器Click。
传统目标识别中,特征提取和机器学习两个最为重要的研究方向,有一些研究者把全部精力投入到机器学习的研究中,而有一批研究者把所有的心思放在了特征提取方面,因此,可见特征提取在传统目标识别中的重要地位。特征提取的好坏,会直接影响到最终检测效果,因此,需要针对不同类型的图像选取不同的特征,例如边缘特征、区域特征、角点特征、纹理特征、高低频特征等,本文要介绍的就是角点检测中的一种经典算法--Harris角点检测。
开发工作中往往会用到Linux系统,如果直接使用桌面版还好,但是如果使用putty或MobaXterm此类工具远程服务器必然会少不了和vim打交道,如果在windows下开发好再用sftp或git、svn远程到服务器需要多余的操作比较麻烦,合理利用vim能够极大提高开发效率。推荐理由:丰富而高效的命令;简单、便捷;配合插件能够自动补全、自动缩进等,而且对于Python第三方库的补全速度远超vs code等IDE;
前面一篇文章介绍了一下Python调试工具包pdb,虽然能够避免print、log的繁琐和解脱对IDE的依赖,但是这依然不够让人眼前一亮甚至惊叹,本文介绍一款最近非常火热的Python调试神器,同时详细阐述一下Python装饰器的使用方法,另外文末附有福利。
对于开发人员来说,DEBUG是一项必不可少的能力,在很多开发工作中是绕不开DEBUG过程的。不同的人偏好于不同的DEBU方式,本文就介绍一下Python自带的一个DEBUG工具包,对于偏好于使用VIM、sublime、notepad之类纯文本编辑器进行开发的工程人员来说是一个比较基础且实用的工具包。
近几年深度学习的大规模成功应用主要的就是得益于数据的累积和算例的提升,虽然近几年很多研究者竭力的攻克半监督和无监督学习,减少对大量数据的依赖,但是目前数据在计算机视觉、自然语言处理等人工智能技术领域依然占据着非常重要的地位。甚至可以说,大规模的数据是计算机视觉成功应用的前提条件。但是由于种种原因导致数据的采集变的十分困难,因此图像增广技术就在数据的准备过程中占据着举足轻重的角色,本文就概括一下常用的图像增广技术并编程实现相应手段。
近几年深度学习的大规模成功应用主要的就是得益于数据的累积和算例的提升,虽然近几年很多研究者竭力的攻克半监督和无监督学习,减少对大量数据的依赖,但是目前数据在计算机视觉、自然语言处理等人工智能技术领域依然占据着非常重要的地位。甚至可以说,大规模的数据是计算机视觉成功应用的前提条件。但是由于种种原因导致数据的采集变的十分困难,因此图像增广技术就在数据的准备过程中占据着举足轻重的角色,本文就概括一下常用的图像增广技术并编程实现相应手段。
本文介绍一下近期比较热门的一个目标检测算法FCOS(FCOS: Fully Convolutional One-Stage Object Detection),该算法是一种基于FCN的逐像素目标检测算法,实现了无锚点(anchor-free)、无提议(proposal free)的解决方案,并且提出了中心度(Center—ness)的思想,同时在召回率等方面表现接近甚至超过目前很多先进主流的基于锚框目标检测算法。此外,本算法目前已开源。
本文介绍一下近期比较热门的一个目标检测算法FCOS(FCOS: Fully Convolutional One-Stage Object Detection),该算法是一种基于FCN的逐像素目标检测算法,实现了无锚点(anchor-free)、无提议(proposal free)的解决方案,并且提出了中心度(Center—ness)的思想,同时在召回率等方面表现接近甚至超过目前很多先进主流的基于锚框目标检测算法。此外,本算法目前已开源。
提到linux命令行,很多做开发的都不陌生,linux自带很多命令行工具,但是会存在这样或那样的不足之处,因此,有很多大牛开发了一些可以替代或者补强linux命令行的工具。在这里,就介绍10款让开发效率倍增的命令行工具和6款终端模拟神器,文末有下载方式。
图像分割是一种把图像分成若干个独立子区域的技术和过程。在图像的研究和应用中,很多时候我们关注的仅是图像中的目标或前景(其他部分称为背景),它们对应图像中特定的、具有独特性质的区域。为了分割目标,需要将这些区域分离提取出来,在此基础上才有可能进一步利用,如进行特征提取、目标识别。因此,图像分割是由图像处理进到图像分析的关键步骤,在图像领域占据着至关重要的地位。
校Python也被列为通识课程,之所以如此受欢迎正是由于它的高效、简洁、易用、强大的第三方库等优点。如今在web开发、人工智能、大数据等方便应用非常广泛。不管你是否喜欢,不管怎么吐槽,如果想要从事人工智能,依然很难绕过Python,虽然这两年julia、Go被炒得也很热,但是在人工智能方面依然无法撼动Python的地位。
计算机视觉主要有两部分组成: 特征提取 模型训练 其中第一条特征提取在计算机视觉中占据着至关重要的位置,尤其是在传统的计算机视觉算法中,更为明显,例如比较著名的HOG、DPM等目标识别模型,主要的研究经历都是在图像特征提取方面。图像增强能够有效的增强图像中有价值的信息,改善图像质量,能够满足一些特征分析的需求,因此,可以用于计算机视觉数据预处理中,能够有效的改善图像的质量,进而提升目标识别的精度。
很多人想入门AI,可是AI包含很多方向,我建议首先应该明确的选择一个方向,然后有目标、有针对的去学习。 计算机视觉作为目前AI领域研究较多、商业应用较为成功的一个方向,这几年也是非常火热,无论是学术界还是企业界,学术界有CVPR、ICCV、ECCV等顶刊,企业界对计算机视觉领域的人口需求也非常的大,因此,我从计算机视觉这个方向开始着手AI教程。
机器学习平台在人工智能的开发过程中扮演者非常重要的作用,所以,这些年来,也出现了很多不同的机器学习平台,侧重传统方法的scipy、sklearn,侧重深度学习的caffe、theno、pytorch、tensorflow、mxnet,还有高度集成的gluon、keras,都在人工智能工作中扮演者重要的角色,今天我就推荐一些这两年表现比较突出的三个机器学习平台的相关学习资源,分别是tensorflow、pytorch、mxnet。 备注:我已经把tensorflow、pytorch、mxnet官方文档PDF版和epub版放进共享链接,有需要的可以关注微信公众号回复doc获取。
最近几年人工智能异常火热,人工智能包含很多方向,其中计算机视觉就是相对研究较多的一个方向,CVPR、ICCV、ECCV....顶会、期刊数不胜数,paper也自然不再少数,每年发表的文章数量非常庞大,而学习英语文章又相对非常耗时,所以选取出一些优秀的文章则变得至关重要,在这里,我把一些经典、优秀的文章整理一下,方便入门的同学学习,如果嫌下载麻烦,可以关注微信公众号,回复"cv"获取。
优化算法包含很多种,如果按梯度类型进行划分,可以分为有梯度优化算法和无梯度优化算法,在大多数人工智能技术中常用有梯度优化算法,当然也会有些场景也会用到无梯度优化算法,比如在强化学习中会用到黑盒优化算法cma-es、贝叶斯优化等,有些时候也会用到遗传算法和粒子群优化算法。本文主要讲解机器学习\深度学习中一些常用的优化算法,梯度下降法、动量法momentum、Adagrad、RMSProp、Adadelta、Adam,介绍不同算法之间的关联和优缺点,后续会继续分享其他的算法,