人脸识别与美颜算法实战:基于Python、机器学习与深度学习(txt+pdf+epub+mobi电子书下载)


发布时间:2021-04-08 10:12:35

点击下载

作者:方圆圆

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

人脸识别与美颜算法实战:基于Python、机器学习与深度学习

人脸识别与美颜算法实战:基于Python、机器学习与深度学习试读:

前言

据统计,在当今各行各业中,互联网与软件工程行业薪资名列前茅,大幅领先于传统行业。BOSS直聘发布《2020年人才资本趋势报告》,该报告公布了2020年人才领域的前瞻趋势,对其中的人工智能相关方向进行了梳理。其中,自然语言处理岗位的平均薪资为25553元;机器学习岗位的平均薪资为27652元;语音识别岗位的平均薪资为24037元;深度学习岗位的平均薪资为27516元;语音、视频、图形开发岗位的平均薪资为22979元。随着人工智能领域的不断扩大和普及,各行各业逐步深入实践和应用人工智能领域的相关技术,具有实践经验的顶尖AI人才缺口增大,人工智能技术将成为第四次工业革命的发动机,成为不可或缺的力量源泉。

在人工智能领域,计算机视觉是人工智能最重要的部分之一,尤其是人脸图像处理领域涌现了商汤、旷视、云丛、抖音等多家独角兽企业。2014年,中国人脸识别行业的市场规模为49亿元;2018年,中国人脸识别行业的市场规模为131亿元,年均复合增长率为37%。这充分显示了人脸图像处理技术的巨大商用价值,大量的人脸相关应用不断涌现。

本书结合大量的实际案例,从Python图像处理开始讲起,再到机器学习、深度学习的理论和应用,通过由浅入深、图文并茂的讲解及项目实战,提高读者的理论水平和代码实践能力。本书特色1.入门门槛低,学习曲线平滑

本书从搭建环境学起,首先介绍Windows、Linux和Mac OS这三种环境下编译环境的配置和安装;然后介绍与Python数据编程相关的基础知识、图像处理算法基础及常用函数;接着介绍机器学习和深度学习的基础理论;最后通过Python复现各种常用软件中的人脸图像算法应用。本书学习曲线平滑,适合深度学习和机器学习的零基础读者阅读。2.通过对比、理论结合实践的方式讲解,适合新手学习

对于一个新知识点的出现,本书通过对比的方式给出了概念或原理,让读者能举一反三,拓宽知识面;对深度学习的一些理论和概念,本书结合目前热门软件中的图像算法应用实例,让读者能边学习边实践,缩短了新手与老手之间的差距。3.内容丰富、实用,主次分明

本书所选案例涉猎广泛而丰富,算法案例紧跟当前潮流,如抖音、天天P图、美颜相机中的各种图像处理技巧,沿着“需求→算法设计→代码实现”的思路讲解,书中大量既丰富又生动有趣的例子简单易学,可直接上手。在代码示例中,不仅包含了模型构建和设计的核心思想,同时也兼顾了新手容易犯错的细节展示。此外,本书还介绍了一些在工程实践中常用的设计与实现技巧,以提高内容的实用性,增强案例与实际系统设计和实现过程的联系。4.图文搭配合理、生动有趣,全程伴随实战

本书从实战出发,介绍了大约60多个案例,脉络清晰,没有太多枯燥的理论讲解,而是以一位资深AI算法工程师手把手带读者入门做项目的方式,讲述了新手如何入门成为AI图像算法工程师,遇到项目如何入手去做,以及目前抖音中好玩的效果是如何一步步通过算法设计做出来的,沿着Python基础、图像处理技术、视频处理技术、机器学习、深度学习及各类图像美颜算法的思路去实现。目前,各种App中美颜算法大行其道,希望通过作者有趣的讲解,可以带领读者探索其中的各种算法设计小技巧。本书内容第1章 AI时代:图像技术背景知识

本章首先介绍了什么是人工智能以及人工智能的历史和发展,通过介绍AI的发展历史和一些标志性事件,概述了目前中国AI技术的发展现状;然后介绍了计算机视觉技术及其分类和应用,让读者在第1章就可以体会到AI在生活中无处不在,以及它无限的发展前景。第2章 武器和铠甲:开发环境配置

本章主要介绍了本书涉及的开发语言和编译环境,详细介绍了OpenCV开源库及Python不同版本间的区别,带领读者手把手搭建PyCharm和Anaconda编译环境,完成基本的AI开发环境配置,并且在不同环境下装载各种需要的工具包。第3章 开启星辰大海:图像处理技术基础知识

本章详细介绍了图像处理技术的基础知识,每个知识点对应多个Python实例,让读者能够轻松完成图像的旋转、平移、镜像和缩放等一系列操作。第4章 First Blood:第一波项目实战

本章以大量的Python实例展示了基于图像处理算法可以实现的多种效果,介绍了抖音哈哈镜、照片怀旧、素描、油画、卡通化和马赛克处理等一系列项目的算法原理和代码实现,有趣地展示了图像处理技术中的各种玩法。第5章 Double Kill:视频图像处理理论和项目实战

本章介绍了视频图像处理技术的原理和流程,并以大量的实例展示了如何根据抖音的一些视频特效来设计算法以实现其效果,完成了抖音视频中抖动、闪白、霓虹、时光倒流、视频反复、慢动作和Black magic等效果设计。第6章 Triple Kill:基于机器学习的人脸识别

本章详细介绍了机器学习的基础知识,从一个机器学习的实例出发,讲述了机器学习的原理,以及什么时候使用机器学习。本章以经典的人脸识别算法为例,从数据准备到算法设计原理,再到最后的训练,完成一个完整的机器学习项目。第7章 Quatary Kill:基于深度学习的人脸识别

本章详细介绍了深度学习的基本概念和使用场景;讲解了深度学习和机器学习的区别,并以LeNet-5网络为例讲解了深度学习的经典网络;还讲解了几种常见的网络层及其作用,如卷积层、激励层、池化层、Flatten层和全连接层;调用TensorFlow进行数据增广,详解模型训练和测试过程,并讲解了如何设计损失函数和优化器,以及如何评价一个模型的好坏。第8章 Penta Kill:人脸图像美颜算法项目实战

本章以几种经典的图像美颜算法为例,讲解了目前主流的美图软件,如美颜相机、天天P图等图像美颜算法的设计。其中,涉及的图像处理基础算法有各种图像过滤器、图像颜色HSV空间、颜色分割和各种图像增强算法等。本章还通过大量的Python实例实现了人脸磨皮、美白和祛痘等效果。第9章 Legendary:AI时代图像算法应用新生态

本章以目前主流的应用领域为例,分析了AI时代图像算法的应用现状,讲解了项目中基本的算法设计逻辑,以及抖音和天天P图等应用中图像算法的应用情况与算法设计复现,带领读者感受应用级项目算法的设计思路。配套资源获取方式

本书涉及的源代码文件等资料需要读者自行下载。请登录华章公司的网站www.hzbook.com,在该网站上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到下载链接。本书读者对象

·深度学习爱好者;

·计算机视觉技术爱好者;

·算法工程设计实现工程师;

·渴望入门深度学习相关领域的学生;

·图像处理技术爱好者;

·对美颜算法、App自动化妆算法感兴趣的人员;

·深度学习应用研究人员;

·人工智能从业人员。本书作者

本书由方圆圆编写。作者在人工智能技术领域有多年的工作经历和丰富的开发经验。由于能力和时间所限,书中可能还存在疏漏和不足之处,敬请广大读者朋友指正。联系邮箱:hzbook2017@163.com。第1章 AI时代:图像技术背景知识

阿尔法狗与李世石的人机“世纪大战”让人工智能又一次成为了人们关注的焦点。到底什么是人工智能?人工智能的发展历程是怎样的?带着这些问题,本章将介绍人工智能的发展历史和最新的研究进展。

如图1.1所示为2019年RoboCup机器人世界杯中认真踢球的机器人。利用图像视觉处理技术,机器人通过头部的摄像头捕捉足球的位置,利用视觉测量技术计算足球的距离,完成踢球动作。在球消失在视野中时,头部转动,摄像头完成环视动作,识别摄像头捕捉图像中的足球,从而完成目标识别动作。没想到小小的机器人会有这么多图像处理技术吧,想知道具体是怎么实现的吗?跟随本书一起学习吧。图1.1 2019年RoboCup机器人世界杯中踢球的机器人

本章主要介绍人工智能技术的发展历史、图像处理技术和人工智能技术的关系,以及图像处理技术在人工智能领域的应用,同时提纲挈领地介绍AI图像处理技术的分类,及其发展前景。本章涉及的知识点主要有:

·人工智能的基本概念;

·图像处理技术;

·计算机视觉技术的定义和分类。1.1 人工智能的前世今生

1956年,John McCarthy联合Minsky、Claude Shannon和Nathaniel Rochester在达特茅斯组织了长达两个月的会议。达特茅斯会议将不同研究领域的研究者组织在了一起,首次提出了“人工智能”这个词。从此,人工智能正式诞生了。

关于人工智能(Artificial Intelligence,AI)的定义,百度百科是这样解释的:

它是一门研究和开发用于模拟和拓展人类智能的理论方法和技术手段的新兴科学技术。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,其理论和技术日益成熟,应用领域也不断扩大,可以设想,未来,人工智能带来的科技产品将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程进行模拟。人工智能不是人的智能,但能像人那样思考,也可能超过人的智能。

根据艾瑞咨询报告的CB Insight数据显示,2017年全球人工智能创业公司总融资达到创纪录的52亿美金,中国企业占比48%。2018年的融资事件更加密集。在计算机视觉领域,2018年9月12日,商汤科技宣布获得了软银10亿美元的融资。在政府的支持下,中国的人工智能产业进入迅猛的发展期。我国人工智能企业主要集中在北京、上海、广东等发达地区,约占全国的85%左右。如图1.2所示为艾瑞网绘制的中国人工智能公司产业图谱。

可以看出,国内人工智能公司主要集中在技术层,是算法、产品及解决方案的提供者。包括科大讯飞、BAT(百度、阿里巴巴、腾讯)在内的互联网公司在全球人工智能领域具有很强的竞争力。根据《麻省理工科技评论》公布的2017年全球最聪明50家公司榜单显示,中国有9家公司上榜,分别为科大讯飞、腾讯、Face++(旷视科技)、大疆、阿里巴巴、蚂蚁金服、百度、富士康和HTC。

2020年,全球AI市场规模将达到1190亿元,年复合增速约19.7%;同期中国人工智能市场规模将达91亿元,年复合增速超50%。事实上,随着人口老龄化、人力成本攀升,以及危重工种从事意愿降低这些问题的凸显,AI的商业化进程正逐步加快。图1.2 艾瑞网绘制的人工智能产业图谱1.2 AI与CV的相互融合之路

机器视觉是人工智能中一个非常重要的应用,得益于深度学习算法的成熟,大量的模型被应用到机器视觉处理领域,并取得了不俗的成绩。人脸识别、图像分类、图像检索、目标检测等被大规模应用到安防、金融、电商和娱乐等领域。比如金融和安防领域中的人证一体验证系统,以及娱乐中的变脸和美颜等应用。无论是医疗、金融,还是信息采集、产品安全,图像识别技术都得到了广泛应用。其存在的价值是让计算机代替人工来处理大量的图片等富媒体信息。在计算机技术不断完善的前提下,我们更加深刻地认识到图像识别技术的价值。

融合了人工智能技术的图像识别技术最突出的优势就是科技发展中对图像识别技术的应用质量。站在智能化角度分析,较之传统的图像处理技术,人工智能图像识别技术的优势明显。特别是人脸解锁的功能和图像处理智能识别存在异曲同工之妙。也就是在完成一次人脸解锁以后,就能够以此方法为主要解锁手段。除此之外,智能化还能够自我分析和保存。在此基础上,根据图形识别便捷化分析,伴随图像识别技术的合理运用,使人们的生活和工作得到了高质量的服务。基于社会快速发展,图像识别技术大众化特征逐渐凸显出来。AI技术也给计算机视觉带来了更多的活力和无限的可能。

数字图像处理技术是一门很古老的技术,它比人工智能要早得多,起源于20世纪20年代,从年代和发展而言,要比人工智能资格老得多,因此接下来一场来自AI和古典图像技术流的对话悄然展开(图1.3是相互关系)。图1.3 AI与CV相互融合

AI:您是前辈,开场先介绍下自己吧。

CV:咳咳!好吧。数字图像处理技术是将图像信号转变成数字信号并借助计算机以便达到某种目的的一种处理方式。

AI:信号处理感觉比较基础哎。

CV:对呀,没有我们这种基础的输入哪有你们这些后来者的繁荣发展。

AI:我诞生于1956年,到20世纪80年代才成为了一个独立的学科。

CV:那我想想这一段时间我都经历了哪些变化吧。20世纪20年代,我最早应用于报纸行业,目的是解决图像的传输问题。当时一张图像传输的时间需要7天,而借助数字图像处理技术仅耗费3小时。到了20世纪60年代,能够实现图像处理任务的计算机诞生了,我进入了快速发展阶段,开始了计算机高级图像处理。到了20世纪70年代初,我慢慢地进入了医学图像和天文学等领域。其中最值得一提的就是计算机CT的出现,开启了医学影像的蓬勃发展时期。到了20世纪80年代,研究人员将我应用于地理信息系统。从这个阶段开始,我的应用领域不断扩大,在工业检测和遥感等方面也得到了广泛应用,尤其是在遥感方面对卫星传送回来的图像的处理。

AI:原来前辈这么厉害呀!1968年世界上诞生了第一台专家系统,后来我的应用效果不是很理想,所以美国、英国相继缩减了经费支持,我就进入低谷啦!前辈在发光发热的时候,人家还呆在小黑屋,呜呜……

CV:莫哭,现在大家只知道AI技术,但是不知道我们的CV之前做了大量的铺垫工作,人脸识别在AI技术还没有兴起的时候,我们花了20年去研究,放到现在,几天就可以完成一个人脸识别系统,而且技术多样性在不断增加中。

AI:我们也是在前辈们的理论基础上进行迭代的呀!CV的特征提取过程给我们后来的发展提供了大量的灵感,手工设计和提取特征在AI时代被机器所取代,神经网络的兴起,利用大量的算力达到了很好的效果。

CV:可以预见,未来突破了算力的限制,我们的应用场景将会焕发更加崭新的生命力。

AI:嗯嗯,我们一起加油吧!

基于人工智能深入研究并分析图像识别技术有着重要的现实意义。在计算机技术与信息技术的发展背景下,图像识别技术引起了人们的广泛关注,其技术的形成和更新已成为图像识别技术的主要发展趋势,并且具有广阔的应用前景。

总而言之,我们认为人工智能对于图像处理的影响是量变引起质变的一个过程,如果没有大量的图像数据,就无法支撑起人工智能的分析手段,而一旦这个量上的条件得到满足,人工智能可以在不断地在学习中挖掘出传统手段无法发现的信息,或是完成传统手段难以大批量完成的任务。1.3 AI图像处理技术

AI图像处理技术经常又被叫做计算机视觉技术。计算机视觉是指用摄像机和计算机及其他相关设备对生物视觉的一种模拟。它的主要任务是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样。计算机视觉技术是人工智能的重要核心技术之一,可应用到安防、金融、硬件、营销、驾驶和医疗等领域。目前我国计算机视觉技术水平已达到全球领先水平,广泛的商业化渠道和坚定的技术基础是其成为最热门领域的主要原因。

图1.4和部分内容引自“五分钟带你了解人工智能领域的计算机视觉技术”(摘自简书)。

据American Imaging Association提供的数据显示,2015年全球计算机视觉市场达到了42亿美元。而据iiMedia Research(艾媒咨询)数据显示,2017年中国计算视觉行业市场规模为68亿人民币,预计2020年市场规模将达到780亿人民币。由此,中国也掀起了一场由计算机视觉刮起的创业之风。据iiMedia Research艾媒咨询数据显示,在中国的人工智能创业公司所属领域的分布中,计算机视觉领域的创业公司最多,高达35家,紧随其后的是服务机器人领域、语音及自然语言处理领域等。图1.4 人工智能主要构成

计算机视觉的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的信息。计算机视觉任务的主要类型有以下5种。1.物体检测

物体检测是视觉感知的第一步,也是计算机视觉的一个重要分支。物体检测的目标就是用框去标出物体的位置,并给出物体的类别。

物体检测和图像分类不一样,检测侧重于物体的搜索,而且物体检测的目标必须要有固定的形状和轮廓。图像分类可以是任意目标,这个目标可能是物体,也可能是一些属性或者场景。2.物体识别(狭义)

计算机视觉的经典问题便是判定一组图像数据中是否包含某个特定的物体、图像特征或运动状态。这一问题通常可以通过机器自动解决,但是到目前为止,还没有哪个单一的方法能够广泛地对各种情况进行判定:在任意环境中识别任意物体。

现有技术能够很好地解决特定目标的识别,比如简单几何图形的识别、人脸识别、印刷或手写文件识别和车辆识别。而且这些识别需要在特定的环境中,具有指定的光照、背景和目标姿态等要求。3.图像分类

一张图像中是否包含某种物体,以及对图像进行特征描述,是物体分类的主要研究内容。一般来说,物体分类算法通过手工特征或者特征学习方法对整个图像进行全局描述,然后使用分类器判断是否存在某类物体。

图像分类问题就是给输入的图像分配标签的任务,这是计算机视觉的核心问题之一。这个过程往往与机器学习和深度学习不可分割。4.物体定位

如果说图像识别解决的是What的问题,那么物体定位解决的则是Where的问题。利用计算视觉技术找到图像中某一目标物体在图像中的位置,即定位。

目标物体的定位对于计算机视觉在安防、自动驾驶等领域的应用有着至关重要的意义。5.图像分割

在图像处理过程中,有时需要对图像进行分割,从中提取出有价值的用于后续处理的部分,例如筛选特征点,或者分割一幅或多幅图片中含有特定目标的部分等。

图像分割指的是将数字图像细分为多个图像子区域(像素的集合,也被称为超像素)的过程。图像分割的目的是简化或改变图像的表示形式,使图像更容易被理解和分析。更精确地说,图像分割是对图像中的每个像素添加标签的一个过程,这一过程使得具有相同标签的像素具有某种共同的视觉特性。“图像语意分割”是一个像素级别的物体识别,即每个像素点都要判断它的类别。它和物体检测的本质区别是,物体检测是一个物体级别的,它只需要一个框去框住物体的位置;而分割通常比检测更复杂。

计算机视觉是通过创建人工模型来模拟本该由人类执行的视觉任务。其本质是模拟人类的感知与观察的过程。这个过程不仅是识别,而且还包含了一系列其他过程,并且最终是可以在人工系统中被理解和实现的。1.4 本章小结

本章主要介绍了人工智能的历史和发展及BAT等公司在AI领域的应用,让读者了解目前人工智能的应用大部分还是依靠数据,尤其是在图像处理领域。在写作本书的时候,Facebook研究人员使用了包含35亿张图像的数据集来训练计算机视觉系统,在ImageNet上达到了85.4%的准确率。

中国拥有极大的数据优势,各大社交平台、电商平台等都在All in AI,人工智能人才的缺口有500万。人工智能目前的应用技术包括图像处理和语音处理等领域。其中,图像处理是一个很重要的领域,图像处理技术的发展历史比AI更悠久,在新的时代,AI赋能图像处理技术带来了很多创新,精简了图像处理流程,也为图像处理应用提供了各种可能。第2章 武器和铠甲:开发环境配置

本章将配置代码编译环境,因为编译环境的配置是所有项目开发和代码设计的基础。

计算机技术的核心要素有以下几个:

·开发系统:Windows、MacOS、Unix、Linux。

·开发语言:Python、C语言、Java等,目前在人工智能领域主要的开发语言是Python,在移动端的开发和集成基于Java和C语言。本书的开发语言是Python,在使用过程中需要学会调用Python的各种库,如图2.1所示为AI开发常调用的Python库。

·编译环境:IDE。本书使用PyCharm集成编译环境,当然也可以直接在命令行运行代码。图2.1 AI开发常用的Python库2.1 来自传承的馈赠:OpenCV开源跨平台机器视觉库

OpenCV在图像处理领域中的应用非常广泛,计算机图像处理技术对这个起源于1999年的机器视觉库的依赖度很高。本节简要介绍OpenCV的历史发展轨迹、应用领域、编程语言和支持的系统。2.1.1 OpenCV的整体概念

根据百度百科中的介绍,OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量而且高效——由一系列C语言函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV拥有包括500多个C语言函数的跨平台中高层API。它不依赖于其他的外部库——尽管也可以使用某些外部库。

OpenCV发布的版本有:

·2013年12月31日,OpenCV 2.4.8版本发布;

·2014年4月25日,OpenCV 2.4.9版本发布;

·2014年8月21日,OpenCV 3.0 Alpha版本发布;

·2014年11月11日,OpenCV 3.0 Beta版本发布;

·2015年6月4日,OpenCV 3.0版本发布;

·2015年7月30日,OpenCV 2.4.12版本发布;

·2015年12月21日,OpenCV 3.1版本发布;

·2016年12月23日,OpenCV 3.2版本发布;

·2017年8月3日,OpenCV 3.3版本发布;

·2018年7月4日,OpenCV 3.4.2版本发布。2.1.2 OpenCV的应用领域

只要有图像处理就有OpenCV的应用。百度中列出来的OpenCV应用有人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析和汽车安全驾驶。人工智能技术加图像处理技术可以应用到各个领域,如金融中的人脸识别和农业中的病虫害检测等。2.1.3 OpenCV的编程语言

OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java、MATLAB和Octave(版本2.5)的接口,这些语言的API接口函数可以通过在线文档获得,如今也提供对C#、Ch、Ruby的支持。

本书中用OpenCV的Python版本进行代码编写。2.1.4 OpenCV支持的系统

OpenCV可以在Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux和Mac OS等平台上运行。使用者可以在SourceForge上获得官方版本,或者从SVN获得开发版本。

在Windows上编译OpenCV中与摄像输入有关的部分时,需要DirectShow SDK中的一些基类。

本书采用的是Mac OS系统。2.1.5 OpenCV的线上资源

OpenCV的更新可以在OpenCV library的网站中获得,网站链接是https://opencv.org,如图2.2所示。作为一个开源平台,每天都会有大量的代码贡献者上传自己的工程和代码,不断丰富着OpenCV的应用及OpenCV的SDK功能。国内的用户也可以进入OpenCV中文网站,链接是http://www.opencv.org.cn,里面有OpenCV的教程、入门文档及用户上传的各种项目和代码例子,是新学者的入门社区。此外,还有大量的用户在上面发布自己编译错误的程序或者其他问题,也会有各种解答。图2.2 OpenCV版本更新2.2 召唤萌宠:Python语言的“制霸”之路

到目前为止,GitHub上已有多达337种编程语言。对全球的开发者来说,GitHub代表着技术的发展趋势,它公布的一些数据与报告很有参考意义。2018年12月,GitHub年度盛会上公布了年度受欢迎编程语言排行,前3名依次是JavaScript、Java和Python。2.2.1 Python语言的发展

2018年5月,IEEE Spectrum杂志(美国电气电子工程师学会出版的旗舰杂志)发布了最新年度的计算机编程语言排行榜,这也是该杂志发布的最新编程语言Top榜。据介绍,IEEE Spectrum的排序是来自10个重要的线上数据源的综合,例如Google、Twitter和GitHub等平台,选出了排名前10的编程语言,如图2.3所示。图2.3 IEEE编程语言排名

自2017年以来,随着机器学习和深度学习的兴起,Python迅速在编程的江湖中占据了较前列的地位,Python高效易读的编程风格让传统的图像处理算法实现变得更加直白和简洁。图像处理技术是一门很古老的技术,网上的各种开源博客中的图像处理效果实现大都基于C++,而本书中的实现采用了Python语言,这些效果集成了各种Python图像处理算法的实现。2.2.2 Python 2.7.X版本和3.X版本的区别

Python目前比较经典的版本有2.7.X版本和3.X版本。两个版本有差别,在进行项目代码编写和代码移植的时候需要格外注意。先来介绍一下Python两个常见版本之间的主要区别。1.编码

Python 3.X源码文件默认使用UTF-8编码,这就使得以下代码是合法的:>>> 中国 = 'china'>>>print(中国)china2.语法(1)去除了<>,全部改用!=。(2)去除了``,全部改用repr()。(3)关键词加入了as、with、True、False和None。(4)整型除法返回浮点数,要得到整型结果,请使用//。(5)加入nonlocal语句,使用noclocal x可以直接指派外围(非全局)变量。(6)去除了print语句,加入print()函数实现相同的功能。同样的还有exec语句,已经改为exec()函数。

2.7.X版本和3.X版本的对应如下:2..7.X: print "The answer is", 2*23.X: print("The answer is", 2*2)2.7.X: print x, # 使用逗号结尾禁止换行3.X: print(x, end=" ") # 使用空格代替换行(7)改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError,而不是返回随机的bool值。(8)输入函数改变了,删除了raw_input,用input代替。2.7.X:guess = int(raw_input('Enter an integer : ')) # 读取键盘输入的方法3.X:guess = int(input('Enter an integer : '))3.数据类型(1)3.X中去除了long类型,现在只有整型——int,但它的行为就像2.7.X版本中的long。(2)新增了bytes类型,对应于2.7.X版本中的八位串。定义一个bytes字面量的方法如下:>>> b = b'china'>>> type(b)(3)dict的.keys()、.items和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有dict.has_key(),替代它的是in。4.面向对象(1)引入抽象基类(Abstraact Base Classes,ABCs)。(2)迭代器的next()方法改名为__next__(),并增加内置函数next(),用以调用迭代器的__next__()方法。(3)增加了@abstractmethod和@abstractproperty两个decorator,编写抽象方法(属性)更加方便。5.模块变动(1)移除了cPickle模块,可以使用pickle模块代替,最终将会获得一个透明高效的模块。(2)移除了imageop模块。(3)移除了audiodev、Bastion、bsddb185、exceptions、linuxaudiodev、md5、MimeWriter、mimify、popen2、rexec、sets、sha、stringold、strop、sunaudiodev、timing和xmllib模块。(4)移除了bsddb模块。(5)移除了new模块。(6)os.tmpnam()和os.tmpfile()函数被移动到了tmpfile模块下。(7)tokenize模块现在使用bytes工作,主要的入口点不再是generate_tokens,而是tokenize.tokenize()。2.2.3 本书采用的Python版本

Mac OS系统自带Python环境,一般都是Python 2.X版本,可以通过升级的方式来变换成其他版本。本书采用的代码基于Python 3.5.X,因此需要升级系统的Python版本。具体操作如下:(1)从官网链接https://www.python.org/downloads/release/python-350/下载最新版本的Python 3.5.X,如图2.4所示。图2.4 Python官网(2)进入Download,找到要下载的Python版本,下载3.5.4版本,如图2.5所示。图2.5 Python版本下载页面(3)安装Python 3.5.4。单击下载好的pkg文件进行安装。安装完成之后,Python 3.54的默认安装路径是/Library/Frameworks/Python.framework/Versions/3.5x。(4)修改profile文件。直接在.profile加一个alias。如果读者的Terminal运行的shell是bash(默认),可以修改~/.bash_profile,在其结尾处添加:alias python="/Library/Frameworks/Python.framework/Versions/3.5x/bin/python3.5x"(5)验证。在终端中直接输入python,显示版本号如图2.6所示。图2.6 Python安装验证2.3 铸剑:基于PyCharm的系统环境配置

上一节具体介绍了Mac OS下Python环境的安装步骤。本节将介绍编译软件PyCharm的安装和配置步骤。为了管理好不同的Python版本和接下来要安装的其他工具包,我们采用Anaconda来安装和管理开发环境,因此本节还会介绍Anaconda的安装和配置方法。2.3.1 PyCharm在Mac OS系统下的安装和配置

具体操作步骤如下:(1)下载最新版本的PyCharm软件,在保证Python已经安装完毕后进入PyCharm官网(https://www.jetbrains.com/pycharm/)。在官网首页找到最新版本的下载链接,单击DOWNLOAD NOW按钮,如图2.7所示。图2.7 PyCharm官网首页(2)JetBrains提供了3个版本的PyCharm,分别为Windows、Mac OS和Linux。在此选择Mac OS,然后单击DOWNLOAD按钮,如图2.8所示。图2.8 PyCharm下载页面(3)下载完成后打开安装包,拖动PyCharm图标到文件夹,如图2.9所示。(4)安装完成后会在桌面上出现PyCharm图标,如图2.10所示。(5)单击图标启动PyCharm,显示如图2.11所示,进入简单的配置界面进行软件配置。

如果之前安装过PyCharm并且保存过配置文件,那么再次安装时可以导入之前的配置文件;如果是首次安装,则选择Do not import settins单选按钮。图2.9 安装PyCharm图2.10 PyCharm安装完成(6)如图2.12所示,输入激活码,即可激活PyCharm。图2.11 PyCharm配置图2.12 PyCharm激活码输入

输入正确的激活码后,PyCharm将正常启动,如图2.13所示。图2.13 PyCharm启动成功(7)在首次启动PyCharm的时候,PyCharm会进行初始化配置,如图2.14所示。图2.14 PyCharm初始化配置

图2.14中展示了以下基本配置:

·标注1:键盘scheme。

·标注2:IDE主题。

·标注3:编辑器颜色及字体。

·标注4:存储脚本的路径。

PyCharm initial Configuration包含数个个性化设置选择,可以根据个人喜好进行选择。2.3.2 Mac OS系统下Anaconda的安装和配置

Anaconda指的是一个开源的Python发行版本,其包含了Conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,所以采用Anaconda可以建立各种编译环境来满足项目需求,比如在深度学习中,有TensorFlow和Caffe等各种框架,可以将其放到不同的环境下。不同环境下的Python版本可以有不同的设置,具体安装的操作步骤如下:(1)下载安装包,地址为https://www.anaconda.com/download/,如图2.15所示。选择Mac OS系统版本和对应的Python版本,每一个Anaconda安装包都对应一个Python版本,读者在下载的时候需要注意这一点。(2)按照安装PyCharm的步骤进行安装,安装结束后,运行命令行工具。运行conda命令使用Anaconda管理环境。图2.15 Anaconda下载页面(3)建立环境。在命令行里建立一个Python 3.5的环境AICV35,命令如下:conda create-n AICV35 python=3.5

结果如图2.16所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载