龙空技术网

识别外星人?确定火星降落点?Python还能这么玩

人民邮电出版社 160

前言:

眼前姐妹们对“python识别”大概比较注重,小伙伴们都需要学习一些“python识别”的相关知识。那么小编同时在网摘上搜集了一些关于“python识别””的相关内容,希望我们能喜欢,你们快快来学习一下吧!

小异和大家一样,知道Python有着非常成熟丰富的类库,可以用来实现许多有趣的功能。曾见别人用Python制作一些小游戏和朋友一起玩、写一个聊天机器人解闷之类比较常见的有趣小玩意。

但是,你知道怎么用Python检测遥远的系外行星吗?你知道如何用Python选择火星的着陆点吗?你了解如何用Python自动识别外星人吗?

这些听起来像天方夜谭的项目真的是能用Python实现的吗?

答案都写在这本《Python极客编程:用代码探索世界》中,并且都是肯定的。

独家好书,异步先读

No Starch的一系列作品受到了世界范围内广大程序员的喜爱,书籍质量极高。其Python系列、Linux 系列、Hacking系列都获得了大量读者的好评,看到这些带有各种新奇元素的黄色封面,就看到了质量的保证。

而《Python极客编程:用代码探索世界》同样受到国外读者的一致好评,美国亚马逊上它的评分达到了4.6分(满分5分)!

美亚读者评分

现在,让小异陪大家一起来看看这本给我们带来精彩内容的奇书吧!

01

这本书教你如何探索世界

一个翻开就无法移开目光的目录

相信大部分人和小异一样,在拿到一本书之后会先翻开目录,去浏览一下书的大致内容。在看到这本《Python极客编程:用代码探索世界》的目录时,小异立马被那些章节题目震惊到了!这看起来也过于高科技了!

营救失事船员?确定作者身份?总结演讲?这些看起来没有超过我们的理解范围,算是常规内容。用的贝叶斯法则计量文体学自然语言处理,都是中规中矩的Python技术。

但是,发现冥王星、模拟阿波罗8号的自由返回轨迹、选择火星着陆点、检测外行星这些高科技也是我们可以利用Python现在就能做到的事?甚至还能创建交互式僵尸逃离地图,帮助僵尸末日的幸存者生存下来?

这真的是我们认识的Python吗?原来Python还可以做这么多有意思的事情!

这本书的作者李·沃恩(Lee Vaughan)是有多大的脑洞才能把这些充满乐趣与挑战的内容编写成一本 Python 项目实战书的?

一个脑洞大开的科学家

李·沃恩早年在阿拉巴马大学获得地球科学、地质学理学硕士学位,后来进入埃克森美孚公司工作,在石油行业工作了30多年。作为美孚公司的地质建模高级技术专家,他参与了计算机模型的构建和审查、软件的开发、测试和商业化,以及地球科学家和工程师的培训。

本书作者李·沃恩

多年的工作过程中,因为项目需要他选择了Python作为自己的一种编程语言,积累了非常丰富的 Python实践经验。因为职业生涯中必须使用编程,作为非程序员的李·沃恩非常倡导大家使用编程来解决工作中的一些问题。

为了推广好用的Python, 为了给公司和其他Python新手提供一个实战训练手册,他出版了一本Impractical Python Projects:Playful Programming Activities to Make You Smarter(中文版《Python编程实战:妙趣横生的项目之旅》,由异步图书于2021年7月出版),用来帮助自学者磨炼Python语言技能。

再之后,这本神奇的书Real-World Python:A Hacker's Guide to Solving Problems with Code出版,也就是小异现在给大家看的这本《Python极客编程:用代码探索世界》,中文版也即将与大家见面!

作为一个地球科学家,李·沃恩的工作与生活接触到非常多有意思的信息,他很多时候将目光投向生活以外的地方。比如高山、大海、天空,甚至是外太空、无边际的宇宙。

本书融入了非常多的太空、外星、探索等元素,组成了一个个非常有趣的小故事,读者可以在故事中扮演一个个奇妙的角色,用Python解决那些重要的问题。

作者拥有非常多的奇思妙想,他想用这些奇特的实战项目训练读者的Python技能,告诉读者Python其实可以用来做很多有意思的事情,它能够用来探索这个世界,以真正极客的方式去发现那些好玩的东西。

一本充满奇思妙想的Python实战书

作者将那些绝妙的想法和点子组成了 16 个精彩的实战项目,同时邀请了圣彼得堡国立大学的副教授埃里克·莫腾松(Eric T. Mortenson)来把控技术细节并进行数学审查。

不管是多么奇怪,多么庞大的项目,最终都会落在一个个实际的技术方法上。

比如创建交互式僵尸逃离地图,就是用大家熟悉的turtle模块模拟图像移动轨迹;选择火星着陆点,则是用Python Imaging LibraryOpenCVthinerNumpy; 为了检测遥远的系外行星,要使用OpenCVmatplotlob来模拟一颗系外行星在其太阳前经过的过程,记录它的光度曲线,用以探测并预估它的直径。

很显然,这本书并不适合一个完全不懂Python的初学者使用,它需要使用者有一定的Python基础。

当你已经不是一个Python新手,并且想要做一些有趣的实战项目时,这本书再合适不过了!

书中所有的代码都非常扎实,每一章都是为了解决一个问题,提供的那些库和方法则能够让读者学到很多东西。所有资源都可以在社区提供的地址中下载,帮助你开始一次次又酷又有趣的实战之旅。

02

魔术般的项目让业内人士赞叹

小异看到《Python极客编程:用代码探索世界》英文版在国外收到了大量好评,人们惊叹于书中那些实战项目的奇妙与有趣,称赞作者像魔术一样把它们展示出来了。

极客技术资料站发表文章认为:如果一个有一些经验的Python 程序员正在寻求与现实世界示例有关的有趣挑战,应该看(这本书)。

Python programmers with a little bit of experience, looking for a fun challenge that relates to real-world examples, should read [this book].

亚特兰大 Python 程序员组的Ian Mizer表示:如果不确定自己应该专注于什么样的机器学习工作,这是任何人都可以选择的最令人惊叹的书。

This is the most amazing book anyone could pick up if they are unsure about what machine learning job they should focus on.

网络世界(IDG)的Linux记者桑德拉·亨利·斯托克对这本书提供的实际帮助非常认可:读完这本书并且开始实战之后,你会发现自己正在构建解决现实世界问题的程序,并且准备好了应对工作中一切类似的挑战。

"Read this book and do the work. You will find yourself building programs that address real-world problems and readying yourself to attack similarly challenging problems in whatever field you are working."

—Sandra Henry-Stocker, Linux journalist, NetworkWorld (IDG)

做Python 教学播客的Kelly Paredes觉得这本书适合所有Python学习者:我向所有 Python 学习者推荐这本书!

"I recommend this book for all Python learners!"

—Kelly Paredes, Teaching Python podcast

而现在,国内的我们也马上能够读到这本神奇有趣的书的中文版了!在看到整本书之前,让我们先拿其中一个非常有趣的案例先睹为快吧!

03

一个能识别队友与外星怪物的哨兵炮

既然是外星怪物,那么它就和我们人类长得不一样,所以只要检测人脸是否存在,就可以分辨它是不是队友了。

人脸检测之所以能够实现,是因为人脸有相似的模式。比如眼睛比脸颊深,鼻梁比眼睛亮。

人脸中某一些明暗区域示例

一些特定哈尔特征(Haar feature)可以提取和表示人脸各部位的关系,比如上图中间的图使用“边缘特征”提取了暗眼睛和亮脸颊之间的关系;右边的图使用“线条特征”提取了暗眼睛和亮鼻子之间的关系。

使用大量已知的人脸和非人脸图像计算哈尔特征,我们可以确定哪种哈尔特征的组合对识别人脸最有效。OpenCV提供了一个基于这种技术的、训练好的人脸检测分类器,可以使用其返回的矩形角的坐标数据进行人脸的分析识别。

一些示例的哈尔特征模板

现在,作为Python 工程师的你和小队被派往外星,在研究一个神秘仪器时无意打开了一个空间门,靠近它的任何人都会变成怪物!

摄像头捕捉到的信息

研究发现,这些怪物凶猛异常,它们将一些物体与自身融合,变成了无眼人,但这并没有影响它们观察和感知。

为了保证小队安全,需要在一门威力巨大的自动哨兵炮中编写一个可以识别自己人与怪物的程序。作为Python工程师的你义不容辞地接下了这个任务,去开发一个能检测人脸的装置。

首先,你收集了自己人的脸部图像,安装了OpenCV,加载了训练好的哈尔级联分类器。当哨兵炮的摄像头捕捉到远处图像之后,先发出警告让来者停下,然后调用级联分类器,搜索人脸。

因为收集的图像大小不一,在缩放过程中会计算出很多哈尔特征,从而产生很多假阳性。可以使用参数minNeighbors(最小领域)来减少或消除假阳性。

在minNeighbors=0的情况下,到处都是人脸矩形

在minNeighbors=1的情况下,检测到的人脸矩形

在minNeighbors=5的情况下,检测到的人脸矩形

当然,这种情况下也可能会误判,比如将怪物的脚趾区域识别为人脸,因为它符合那些模式。所以需要加上其他的条件,比如检测眼睛。

算法把这也当成人脸了

因为怪物是没有眼睛的,所以当OpenCV内置的眼睛级联分类器在检测到人脸矩形列表中搜索眼睛,当发现一只眼睛的时候,就可以认为对面是友方人类而不开火。

脸部矩形和眼睛圆圈,识别为人类

当检测到图像中不是人类队友时,哨兵炮便会标记并开火攻击它。

检测到非人类,开火

至此,你控制哨兵炮自动开火的程序已经做好,哨兵炮可以保护你和队友了!

不过,这依然存在一些问题。如果一个怪物与队友人类差不多同时进入哨兵炮防御区域,它并不会开火,因为保护人类的优先级被你设定为最高了。

此时哨兵炮检测到人类,不会开火

另外一种情况,队友人类刚好没有回头被检测到人脸,但是哨兵炮识别到了怪物,直接开火。

这时候只能祈祷队友躲得快点

很明显,你的程序可以识别队友与怪物,但是它似乎还不够智能。可能需要添加在视频流中检测人脸,进行人脸追踪的功能。

所以你决定先用着哨兵炮,同时查看这本《Python极客编程:用代码探索世界》后面的内容,寻找提升哨兵炮安全性的方法。

04

快人一步,抢先阅读

《Python极客编程:用代码探索世界》在将要到来的6月上线,而现在,有一次能够在它出版之前就能立马读到原创稿件的机会!并且一经出版可以立马拿到纸质书!

那就是选择抢读版电子书

选择抢读版可以先人一步抢先阅读里面的内容,快人一步!不用再苦等一个多月。在纸书出版后,会优先安排发货,比别人更快地拿到手!

同时,选择抢读版可以加入抢读社群,进行沉浸式阅读,与其他读者共同讨论阅读体验,交换阅读心得。

当然,抢读版因为比较特殊,所以大家应该妥善保管。同时在出版过程中会不断对内容进行修订与优化,最终纸书内容可能与电子书内容不一致,请以最终内容为准。

极客编程,探索世界

05

用Python去解决问题

几年前的同事用 Python 爬取了几十万张高清桌面壁纸,当时小异就感叹 Python 之好用,看起来并不多的代码竟然能做这么难的事情——当时小异可是一张张右键另存为去找桌面壁纸。

如今 Python 发展越来越迅猛,可以做到的事情越来越多,像这本《Python极客编程:用代码探索世界》中那些奇奇怪怪的问题最终都能用 Python 来解决。

很多时候,并不是只有程序员才能去学编程。如果编程可以帮助我们解决生活和工作中的问题,那么去学、去用是一件超值的事情。以较低的成本去解决难度较高的问题,是我们应该提倡的。

希望 Python 能够帮助更多的人去探索这个世界。

文章编辑:沙鱼 审校:桐希、刘雅思

参考来源:

[1] 李·沃恩.Python极客编程:用代码探索世界.[M].王海鹏.北京,2022.

[2] Real-World Python | No Starch Press..

标签: #python识别