初学者经常问这样的问题,然而这些其实是错误的问题。
对于初学者而言,你最应该优先考虑的是,哪些东西构成了程序的基础?
最经典的一句话: 程序 = 数据结构 + 算法 。
如果说编程语言是程序的血肉,那么算法就是程序的灵魂。
人不能没有血肉之躯,但是没有灵魂的人依然只是一个死人。
不能单纯依靠算法衡量一个程序员的好坏,但是面试的时候考算法绝对是简单高效的筛选手段。近些年大厂的面试几乎必考算法也是这个原因。每一个算法学的不扎实的程序员,在面试的时候都很慌。
下面这些书籍应该是算法方面最常见的经典书籍。我有幸都读过,有些读完了,有些半途而废,不过基本上也都算是熟悉。顺序上由易到难,从薄到厚,每本书下面我会简单的介绍一番,希望能对你的学习有所帮助。
首先是两本算法入门书籍,也可以当做算法读物:
《啊哈!算法》
用他的自我介绍的来讲:“这不过是一本有趣的算法书而已,和别的算法书比较,如果硬要说它有什么特点的话,那就是你能看懂它。”
图文并茂,而且画风有趣,适合新手入门,但是代码是C的,看着比较累,文字也略显冗长。
图是非常棒的,启蒙用,非教科书
《算法图解》
和《啊哈》类似,他的介绍是:“像小说一样有趣的算法入门书。”
书里面讲的很好,python代码也很容易读懂,比之《啊哈!算法》,书中的例子没有那么有趣,但是图很清晰,文字和代码不冗杂。
缺点同样是非教科书,非常浅显,三四个小时就看完了。有一种刚刚热身的感觉。
接下来这几本都是最常见的书了:
《数据结构与算法分析C语言描述》
这本书的作者几乎不浪费笔墨在一些简单的地方。书很薄,但是覆盖面很广很深,作者实在是非常厉害。
不过反过来说,就是有些地方讲的语焉不详……
这本书还有java语言版本的,但是相比之下C的更好一些。
挺好的一本书。
还有一点是翻译不是很给力,好多人都没坚持看完。
《数据结构与算法Python语言实现》
英文版评分非常高,中文版评分非常低……
据说是也翻译的不好。另外就是本书自身错误也不少……几版过后依然很多没有改过来。
书中数学证明和介绍比较简单。因为采用Python语言的原因,比较易读。
浅显易懂,内容上循序渐进,环环相扣。相比于上一本,我会更推荐一些。厚度也不算厚。
《数据结构与算法 Python语言描述》
北大教授裘宗燕的书,这本书前面写的挺好的,尤其是在面向对象还有ADT等思想的阐述,都很不错。
但是读到后来给我一种虎头蛇尾的感觉,前面气势如虹绪论就写了很长,最后三章感觉有点草草收尾的意思。就像编辑在催稿,而作者很忙的样子……
另外就是这本书的编排顺序我个人也不是特别喜欢。
接下来是两本大部头,都是非常厚的书。
他们最大的特点就是:出现率远大于看完率
《算法导论》
算法书中的权威,MIT的6.046J就是按照这个来讲的。
公认最好的算法书,组织结构合理,内容详尽。引导读者从思维方式上对算法进行领悟。
书中对算法的数学结构进行了详尽的阐述。有非常多的数学证明。
这本书我说不出什么缺点,只能说有些内容是因为我还没到大牛的境界,暂时还无法体会理解。
我个人的观点是:不要纠结于详细的伪代码,不用纠结于连篇累牍的讲解。体会其中算法的精髓就好。
《算法》第四版
如果说,《算法导论》是学术上最好书,那这本应该是实际应用最好的书。
它对数学的要求比《算法导论》低很多,摒弃了算法的证明。
书中具体给出了每位程序员应知应会的50个算法,深入浅出,大量图解。非常棒。
java基础的话你能撸出来Hello World基本上就可以开始看这本书了,这本书最大的不友好之处在于它的第一章非常长,没看过的人又不知道哪里可以跳过。
这本书后面的翻译感觉不如前边了,不知道是换人了还是DDL了……
翻开书就会看到很多的图,配套作者在coursera上面的课程学的话事半功倍!
接下来的几本我看的比较少,简单介绍一下,希望大家自己去发现和了解,不要漏下这些好书:
《编程珠玑》
很薄一本啊,但是我放在那还没看完……
这本书被称为: 历史 上最伟大的计算机科学着作之一
融深邃思想、实战技术与趣味轶事于一炉的奇书。
内容不深,但是不是一个知识点一个知识点的给你讲解算法原理的。
这本书的核心思想是让你了解如何正确选择和高效地实现算法。书中还有一些趣闻轶事,看着倒是很有意思~
有兴趣的同学可以看看~
《算法竞赛入门经典》系列
算法竞赛入门经典书,ACM必备书籍吧算是。书中题目对于竞赛来说比较简单,但是对于一般我们平时工程来说偏难。语言用的是C/C++,请好好做例题好好做作业,读书的时候好好思考和复习~
反正我是没读过,捂脸……
《剑指Offer》
这个书很有意思,对于在校生来说我个人觉得是必看的书。没有任何工作经验的同学在面试的时候真的会被问懵的。这本书可以让你了解如何应付考官日常问题,在解答面试问题的时候,书中很多方法和思路会让考官觉得你思考的很全面,给你加不少分。
我面试的时候也曾快速扫过一遍这本书,让我在回答问题的时候条理更清晰。书中代码是C的,emmm,于是代码部分我就没太看……
《用Python解决数据结构与算法问题》
最后给大家推荐一本在线的 免费 的算法书。
https://facert.gitbooks.io/python-data-structure-cn/
不是大部头,也不是读物,新手入门足够用,书中介绍了大多数日常需要的算法,并且讲的比较浅显~转行的新手基本可以通过这本书来快速掌握常用基本算法了~
反正免费,是否适合自己看两页也就get了~
如果需要pdf版,可以在“程序员必修课”公众号后台回复:“Python算法书”获取。
㈡ 算法图解 PDF 高清版
像小说集一样趣味的算法新手入门书。
算法是解决困难的一步步步骤,都是电子信息科学行业的关键主题。现如今程序员*常见的算法早已历经了古人的探索、检测及证实。假如你要搞明白这种算法,又不愿困在在繁杂的证实中,这书更是你的不二选择。这部图例丰富多彩、扣人心弦的好用手册将给你轻轻松松懂得怎样在自身的程序流程中高效率应用关键的算法。
这书范例丰富多彩,图片配文字,以令人非常容易了解的方法诠释了算法,致力于协助程序员在平时新项目中充分发挥算法的动能。书中的前三章将协助你奠定基础,陪你学习培训二分查找、大O表示法、二种基础的数据结构及其递归等。剩下的篇数将关键详细介绍运用普遍的算法,主要内容包含:应对实际难题时的处理方法,例如,什么时候选用贪欲算法或动态规划;散列表的运用;图算法;Kzui近邻算法。
目录
前言
致谢
关于本书
第1章 算法简介1
1.1引言1
1.1.1性能方面1
1.1.2问题解决技巧2
1.2二分查找2
1.2.1更佳的查找方式4
1.2.2运行时间8
1.3大O 表示法8
1.3.1算法的运行时间以不同的速度增加9
1.3.2理解不同的大O运行时间10
1.3.3大O 表示法指出了最糟情况下的运行时间12
1.3.4一些常见的大O运行时间12
1.3.5旅行商13
1.4小结15
第2章 选择排序16
2.1内存的工作原理16
2.2数组和链表18
2.2.1链表19
2.2.2数组20
2.2.3术语21
2.2.4在中间插入22
2.2.5删除23
2.3选择排序25
2.4小结28
第3章 递归29
3.1递归29
3.2基线条件和递归条件32
3.3栈33
3.3.1调用栈34
3.3.2递归调用栈36
3.4小结40
第4章 快速排序41
4.1分而治之41
4.2快速排序47
4.3再谈大O表示法52
4.3.1比较合并排序和快速排序53
4.3.2平均情况和最糟情况54
4.4小结57
第5章 散列表58
5.1散列函数60
5.2应用案例63
5.2.1将散列表用于查找63
5.2.2防止重复64
5.2.3将散列表用作缓存66
5.2.4小结68
5.3冲突69
5.4性能71
5.4.1填装因子72
5.4.2良好的散列函数74
5.5小结75
第6章 广度优先搜索76
6.1图简介77
6.2图是什么79
6.3广度优先搜索79
6.3.1查找最短路径82
6.3.2队列83
6.4实现图84
6.5实现算法86
6.6小结93
第7章 狄克斯特拉算法94
7.1使用狄克斯特拉算法95
7.2术语98
7.3换钢琴100
7.4负权边105
7.5实现108
7.6小结116
第8章 贪婪算法117
8.1教室调度问题117
8.2背包问题119
8.3集合覆盖问题121
8.4NP 完全问题127
8.4.1旅行商问题详解127
8.4.2如何识别NP 完全问题131
8.5小结133
第9章 动态规划134
9.1背包问题134
9.1.1简单算法135
9.1.2动态规划136
9.2背包问题FAQ143
9.2.1再增加一件商品将如何呢143
9.2.2行的排列顺序发生变化时结果将如何145
9.2.3可以逐列而不是逐行填充网格吗146
9.2.4增加一件更小的商品将如何呢146
9.2.5可以偷商品的一部分吗146
9.2.6旅游行程最优化147
9.2.7处理相互依赖的情况148
9.2.8计算最终的解时会涉及两个以上的子背包吗148
9.2.9最优解可能导致背包没装满吗149
9.3最长公共子串149
9.3.1绘制网格150
9.3.2填充网格151
9.3.3揭晓答案152
9.3.4最长公共子序列153
9.3.5最长公共子序列之解决方案154
9.4小结155
第10章 K 最近邻算法156
10.1橙子还是柚子156
10.2创建推荐系统158
10.2.1特征抽取159
10.2.2回归162
10.2.3挑选合适的特征164
10.3机器学习简介165
10.3.1OCR165
10.3.2创建垃圾邮件过滤器166
10.3.3预测股票市场167
10.4小结167
第11章 接下来如何做168
11.1树168
11.2反向索引171
11.3傅里叶变换171
11.4并行算法172
11.5MapRece173
11.5.1分布式算法为何很有用173
11.5.2映射函数173
11.5.3归并函数174
11.6布隆过滤器和HyperLogLog174
11.6.1布隆过滤器175
11.6.2HyperLogLog176
11.7SHA 算法176
11.7.1比较文件177
11.7.2检查密码178
11.8局部敏感的散列算法178
11.9Diffie-Hellman 密钥交换179
11.10线性规划180
11.11结语180
练习答案181
自取: https://url80.ctfile.com/f/32319880-518802548-9892a0
(访问密码:3284)
㈢ 推荐一些关于算法的书籍
1、数据结构与算法分析:C语言描述(适合入门)
这本书相对于算法导论要简单一些,更适合入门。算法导论其实有比较强的理论性,看起来比较吃力。
《数据结构与算法分析:C语言描述》内容简介:书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能、效率以及对运行时间分析的基础上考查了一些高级数据结构,从历史的角度和近年的进展对数据结构的活跃领域进行了简要的概括。由于《数据结构与算法分析:C语言描述(原书第2版)》选材新颖,方法实用,题例丰富,取舍得当。《数据结构与算法分析:C语言描述》的目的是培养学生良好的程序设计技巧和熟练的算法分析能力,使得他们能够开发出高效率的程序。从服务于实践又锻炼学生实际能力出发,书中提供了大部算法的C程序和伪码例程。
2、算法设计与分析基础(适合入门)
作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法都能进行准确分类,从而使本书的读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。
3.0、算法引论:一种创造性方法(适合入门)
和普通的算法书不同,这本书从创造性的角度出发——如果说算法导论讲的是有哪些算法,那么算法引论讲的就是如何创造算法。结合前面的算法设计与分析基础,这本书把能解决的算法问题数量扩大了一个数量级。
3.1 算法竞赛 | 信息学奥赛一本通(算竞入门)
AlphaWA同学推荐的入门书籍,网上没有PDF版本,自己去淘宝买喽。
3.2 算法竞赛 | 算法竞赛进阶指南(算竞进阶)
㈣ 关于java学习,有什么书籍或者教程推荐不啦
你好,如果想学习java,推荐自学。如果觉得自己没有自制力,可以去报个培育班,那里有人教,会更好点。至于书的话,有很多的,比如说java编程思想等等,要结合自己的实际需要来选择,然后就是努力了。祝你学有所成!
㈤ 马前课12指算法图解
马前课12指算法图解如下:
动左手拇指,依次顺时针点击其余3指上所布大安、留连、速喜、赤口、小吉、空亡6神位。例五月初四,午时占。
小六壬天气秘法:
大安阴晴日,清风送爽杨柳枝。
留连雨绵绵,旱苗喜雨在禾田。
速喜霓虹现,艳阳高照在人间。
赤口冷如刀,雷雨霜雪兼冰雹。
小吉星月稀,阴阳天里阴阳期。
空亡雾茫茫,不见日月海天长。
㈥ 《算法图解》pdf
本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;Kzui近邻算法。
目录
前言
致谢
关于本书
第1章 算法简介1
1.1引言1
1.1.1性能方面1
1.1.2问题解决技巧2
1.2二分查找2
1.2.1更佳的查找方式4
1.2.2运行时间8
1.3大O 表示法8
1.3.1算法的运行时间以不同的速度增加9
1.3.2理解不同的大O运行时间10
1.3.3大O 表示法指出了最糟情况下的运行时间12
1.3.4一些常见的大O运行时间12
1.3.5旅行商13
1.4小结15
第2章 选择排序16
2.1内存的工作原理16
2.2数组和链表18
2.2.1链表19
2.2.2数组20
2.2.3术语21
2.2.4在中间插入22
2.2.5删除23
2.3选择排序25
2.4小结28
第3章 递归29
3.1递归29
3.2基线条件和递归条件32
3.3栈33
3.3.1调用栈34
3.3.2递归调用栈36
3.4小结40
第4章 快速排序41
4.1分而治之41
4.2快速排序47
4.3再谈大O表示法52
4.3.1比较合并排序和快速排序53
4.3.2平均情况和最糟情况54
4.4小结57
第5章 散列表58
5.1散列函数60
5.2应用案例63
5.2.1将散列表用于查找63
5.2.2防止重复64
5.2.3将散列表用作缓存66
5.2.4小结68
5.3冲突69
5.4性能71
5.4.1填装因子72
5.4.2良好的散列函数74
5.5小结75
第6章 广度优先搜索76
6.1图简介77
6.2图是什么79
6.3广度优先搜索79
6.3.1查找最短路径82
6.3.2队列83
6.4实现图84
6.5实现算法86
6.6小结93
第7章 狄克斯特拉算法94
7.1使用狄克斯特拉算法95
7.2术语98
7.3换钢琴100
7.4负权边105
7.5实现108
7.6小结116
第8章 贪婪算法117
8.1教室调度问题117
8.2背包问题119
8.3集合覆盖问题121
8.4NP 完全问题127
8.4.1旅行商问题详解127
8.4.2如何识别NP 完全问题131
8.5小结133
第9章 动态规划134
9.1背包问题134
9.1.1简单算法135
9.1.2动态规划136
9.2背包问题FAQ143
9.2.1再增加一件商品将如何呢143
9.2.2行的排列顺序发生变化时结果将如何145
9.2.3可以逐列而不是逐行填充网格吗146
9.2.4增加一件更小的商品将如何呢146
9.2.5可以偷商品的一部分吗146
9.2.6旅游行程最优化147
9.2.7处理相互依赖的情况148
9.2.8计算最终的解时会涉及两个以上的子背包吗148
9.2.9最优解可能导致背包没装满吗149
9.3最长公共子串149
9.3.1绘制网格150
9.3.2填充网格151
9.3.3揭晓答案152
9.3.4最长公共子序列153
9.3.5最长公共子序列之解决方案154
9.4小结155
第10章 K 最近邻算法156
10.1橙子还是柚子156
10.2创建推荐系统158
10.2.1特征抽取159
10.2.2回归162
10.2.3挑选合适的特征164
10.3机器学习简介165
10.3.1OCR165
10.3.2创建垃圾邮件过滤器166
10.3.3预测股票市场167
10.4小结167
第11章 接下来如何做168
11.1树168
11.2反向索引171
11.3傅里叶变换171
11.4并行算法172
11.5MapRece173
11.5.1分布式算法为何很有用173
11.5.2映射函数173
11.5.3归并函数174
11.6布隆过滤器和HyperLogLog174
11.6.1布隆过滤器175
11.6.2HyperLogLog176
11.7SHA 算法176
11.7.1比较文件177
11.7.2检查密码178
11.8局部敏感的散列算法178
11.9Diffie-Hellman 密钥交换179
11.10线性规划180
11.11结语180
练习答案181
最后,这里为大家准备了几百本的互联网电子书,有需要的过来取吧。 点击获取
㈦ 目标检测算法图解:一文看懂RCNN系列算法
姓名:王咫毅
学号:19021211150
【嵌牛导读】CNN如此风靡,其衍生算法也是层出不穷,各种衍生算法也可以应用于各种应用场景,各类场合。本文则是了解每个衍生算法的各个使用场景、原理及方法。
【嵌牛鼻子】RCNN 目标检测
【嵌牛提问】RCNN系列算法有何区别和联系?
【嵌牛正文】
在生活中,经常会遇到这样的一种情况,上班要出门的时候,突然找不到一件东西了,比如钥匙、手机或者手表等。这个时候一般在房间翻一遍各个角落来寻找不见的物品,最后突然一拍大脑,想到在某一个地方,在整个过程中有时候是很着急的,并且越着急越找不到,真是令人沮丧。但是,如果一个简单的计算机算法可以在几毫秒内就找到你要找的物品,你的感受如何?是不是很惊奇!这就是对象检测算法(object detection)的力量。虽然上述举的生活例子只是一个很简单的例子,但对象检测的应用范围很广,跨越多个不同的行业,从全天候监控到智能城市的实时车辆检qian测等。简而言之,物体检测是强大的深度学习算法中的一个分支。
在本文中,我们将深入探讨可以用于对象检测的各种算法。首先从属于RCNN系列算法开始,即RCNN、 Fast RCNN和 Faster RCNN。在之后的文章中,将介绍更多高级算法,如YOLO、SSD等。
1.解决对象检测任务的简单方法(使用深度学习)
下图说明了对象检测算法是如何工作。图像中的每个对象,从人到风筝都以一定的精度进行了定位和识别。
下面从最简单的深度学习方法开始,一种广泛用于检测图像中的方法——卷积神经网络(CNN)。如果读者对CNN算法有点生疏,建议 阅读此文 。
这里仅简要总结一下CNN的内部运作方式:
首先将图像作为输入传递到网络,然后通过各种卷积和池化层处理,最后以对象类别的形式获得输出。
对于每个输入图像,会得到一个相应的类别作为输出。因此可以使用这种技术来检测图像中的各种对象。
1.首先,将图像作为输入;
2.然后,将图像分成不同的区域;
3.然后,将每个区域视为单独的图像;
4.将所有这些区域传递给CNN并将它们分类为各种类别;
5.一旦将每个区域划分为相应的类后,就可以组合所有这些区域来获取具有检测到的对象的原始图像:
使用这种方法会面临的问题在于,图像中的对象可以具有不同的宽高比和空间位置。例如,在某些情况下,对象可能覆盖了大部分图像,而在其他情况下,对象可能只覆盖图像的一小部分,并且对象的形状也可能不同。
基于此,需要划分大量的区域,这会花费大量的计算时间。因此,为了解决这个问题并减少区域数量,可以使用基于区域的CNN,它使用提议方法选择区域。
2.基于区域的卷积神经网络
2.1 RCNN的思想
RCNN算法不是在大量区域上工作,而是在图像中提出了一堆方框,并检查这些方框中是否包含任何对象。RCNN 使用选择性搜索从图像中提取这些框。
下面介绍选择性搜索以及它如何识别不同的区域。基本上四个区域形成一个对象:不同的比例、颜色、纹理和形状。选择性搜索在图像中识别这些模式,并基于此提出各种区域。以下是选择性搜索如何工作的简要概述:
首先, 将图像作为输入:
然后,它生成初始子分段,以便获得多个区域:
之后,该技术组合相似区域以形成更大的区域(基于颜色相似性、纹理相似性、尺寸相似性和形状兼容性):
最后,这些区域产生最终的对象位置(感兴趣的区域);
下面是RCNN检测对象所遵循的步骤的简要总结:
1.首先采用预先训练的卷积神经网络;
2.重新训练该模型模型——根据需要检测的类别数量来训练网络的最后一层(迁移学习);
3.第三步是获取每个图像的感兴趣区域。然后,对这些区域调整尺寸,以便其可以匹配CNN输入大小;
4.获取区域后,使用SVM算法对对象和背景进行分类。对于每个类,都训练一个二分类SVM;
最后,训练线性回归模型,为图像中每个识别出的对象生成更严格的边界框;
[对上述步骤进行图解分析]( http://www.robots.ox.ac.uk/~tvg/publications/talks/Fast-rcnn-slides.pdf ):
首先,将图像作为输入:
然后,使用一些提议方法获得感兴趣区域(ROI)(例如,选择性搜索):
之后,对所有这些区域调整尺寸,并将每个区域传递给卷积神经网络:
然后,CNN为每个区域提取特征,SVM用于将这些区域划分为不同的类别:
最后,边界框回归(Bbox reg)用于预测每个已识别区域的边界框:
以上就是RCNN检测物体的全部流程。
2.2 RCNN的问题
从上节内容可以了解到RCNN是如何进行对象检测的,但这种技术有其自身的局限性。以下原因使得训练RCNN模型既昂贵又缓慢:
基于选择性搜索算法为每个图像提取2,000个候选区域;
使用CNN为每个图像区域提取特征;
RCNN整个物体检测过程用到三种模型:
CNN模型用于特征提取;
线性svm分类器用于识别对象的的类别;
回归模型用于收紧边界框;
这些过程相结合使得RCNN非常慢,对每个新图像进行预测需要大约40-50秒,这实际上使得模型在面对巨大的数据集时变得复杂且几乎不可能应用。
好消息是存在另一种物体检测技术,它解决了RCNN中大部分问题。
3.了解Fast RCNN
3.1Fast RCNN的思想
RCNN的提出者Ross Girshick提出了这样的想法,即每个图像只运行一次CNN,然后找到一种在2,000个区域内共享该计算的方法。在Fast RCNN中,将输入图像馈送到CNN,CNN生成卷积特征映射。使用这些特征图提取候选区域。然后,使用RoI池化层将所有建议的区域重新整形为固定大小,以便将其馈送到全连接网络中。
下面将其分解为简化概念的步骤:
1.首先将图像作为输入;
2.将图像传递给卷积神经网络,生成感兴趣的区域;
3.在所有的感兴趣的区域上应用RoI池化层,并调整区域的尺寸。然后,每个区域被传递到全连接层的网络中;
4.softmax层用于全连接网以输出类别。与softmax层一起,也并行使用线性回归层,以输出预测类的边界框坐标。
因此,Fast RCNN算法中没有使用三个不同的模型,而使用单个模型从区域中提取特征,将它们分成不同的类,并同时返回所标识类的边界框。
对上述过程进行可视化讲解:
将图像作为输入:
将图像传递给卷积神经网络t,后者相应地返回感兴趣的区域:
然后,在提取的感兴趣区域上应用RoI池层,以确保所有区域具有相同的大小:
最后,这些区域被传递到一个全连接网络,对其进行分类,并同时使用softmax和线性回归层返回边界框:
上述过程说明了Fast RCNN是如何解决RCNN的两个主要问题,即将每个图像中的1个而不是2,000个区域传递给卷积神经网络,并使用一个模型来实现提取特征、分类和生成边界框。
3.2Fast RCNN的问题
Fast RCNN也存在一定的问题,它仍然使用选择性搜索作为查找感兴趣区域的提议方法,这是一个缓慢且耗时的过程,每个图像检测对象大约需要2秒钟。
因此,又开发了另一种物体检测算法——Faster RCNN。
4.了解Faster RCNN
4.1. Faster RCNN的思想
Faster RCNN是Fast RCNN的修改版本,二者之间的主要区别在于,Fast RCNN使用选择性搜索来生成感兴趣区域,而Faster RCNN使用“区域提议网络”,即RPN。RPN将图像特征映射作为输入,并生成一组提议对象,每个对象提议都以对象分数作为输出。
以下步骤通常采用Faster RCNN方法:
1.将图像作为输入并将其传递给卷积神经网络,后者返回该图像的特征图;
2.在这些特征图上应用RPN,返回提议对象及其分数;
3.在这些提议对象上应用RoI池层,以将所有提案降低到相同的大小;
4.最后,将提议传递到全连接层,该层在其顶部具有softmax层和线性回归层,以对对象的边界框进行分类和输出;
这里简要解释一下RPN是如何运作的:
首先,Faster RCNN从CNN获取特征图并将它们传递到区域提议网络。RPN在这些特征图上使用滑动窗口,每个窗口生成不同形状和大小的k个方框( Anchor boxe):
方框是固定尺寸的边界箱,具有不同的形状和尺寸。对于每个方框,RPN预测两件事:
预测锚是对象的概率;
用于边界框回归器调整锚点以更好地适合物体的形状;
在有了不同形状和大小的边界框后,将其传递到RoI池层。对每个提案并对其进行裁剪,以便每个提案都包含一个对象。这就是RoI池层所做的事情,它为每个方框提取固定大小的特征图:
然后将这些特征图传递到全连接层,该层具有softmax和线性回归层,最终对对象进行分类并预测已识别对象的边界框。
4.2Faster RCNN的问题
上述讨论过的所有对象检测算法都使用区域来识别对象,且网络不会一次查看完整图像,而是按顺序关注图像的某些部分,这样会带来两个复杂性的问题:
该算法需要多次通过单个图像来提取到所有对象;
由于不是端到端的算法,不同的系统一个接一个地工作,整体系统的性能进一步取决于先前系统的表现效果。
链接: https://www.jianshu.com/p/51fc039ae7a4
㈧ 《我的第一本算法书》pdf下载在线阅读,求百度网盘云资源
《我的第一本算法书》([日]石田保辉)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1fPHXHU0qGGAG0DVFWnq3Ig
书名:我的第一本算法书
作者:[日]石田保辉
译者:张贝
豆瓣评分:7.6
出版社:人民邮电出版社
出版年份:2018-11
页数:204
内容简介:
本书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。
作者简介:
石田保辉
自由职业工程师,现居日本东京。2011年毕业于日本京都大学研究生院。辗转于几个创新型企业后独立,成为自由职业者。2016年,个人制作的面向工程师的学习型App“算法动画图解”上架,不到1年时间全球下载量即达到50万次,并入选了“App Store日本区2016年度最佳应用”榜单。
宫崎修一
日本京都大学学术信息媒体中心副教授。1998年从日本九州大学博士生院工学专业毕业后,开始担任日本京都大学研究生院信息学研究科助手,2002年起担任现职。主要研究算法和计算复杂性理论。近期的重点研究对象为相似算法和在线算法。主要着作有《图论入门:基本知识和算法》(日本森北出版社,2015年)。
㈨ 有没有 《 算法图解 (图灵程序设计丛书)》电子版书籍百度云下载
042.算法图解(图灵程序设计丛书).epub
链接:https://pan..com/s/1OhPzyAatS3-ha2omFFR8pw
㈩ 《程序员的算法趣题》pdf下载在线阅读全文,求百度网盘云资源
《程序员的算法趣题》([ 日] 增井敏克)电子书网盘下载免费在线阅读
链接:
书名:程序员的算法趣题
作者:[ 日] 增井敏克
译者:绝云
豆瓣评分:7.6
出版社:人民邮电出版社
出版年份:2017-7
页数:312
内容简介:
本书是一本解谜式的趣味算法书,从实际应用出发,通过趣味谜题的解谜过程,引导读者在愉悦中提升思维能力、掌握算法精髓。此外,本书作者在谜题解答上,通过算法的关键原理讲解,从思维细节入手,发掘启发性算法新解,并辅以Ruby、JavaScript等不同语言编写的源代码示例,使读者在算法思维与编程实践的分合之间,切实提高编程能力。 本书适合已经学习过排序、搜索等知名算法,并想要学习更多有趣算法以提升编程技巧、拓展程序设计思路的程序员,以及对挑战算法问题感兴趣、爱好解谜的程序员阅读。
作者简介:
增井敏克
1979年生于奈良,毕业于大阪府立大学研究生院。增井IT工程师事务所代表、注册工程师(信息工程学方向)。从事旨在“将商务、数学和IT结合以正确、高效使用计算机”的技能提升指导、软件开发以及信息安全咨询等工作。掌握C/C++、C#、Java、PHP和Ruby等20多种编程语言。着作有《在家就能学会的安全基础》等。目前在面向IT工程师提供业务技能评估服务的平台CodeIQ上负责人气栏目“每周算法”的出题和评审工作。
绝云
毕业于清华软院。曾在日本创意公司KAYAC从事即时通信软件和手游的开发工作,现供职于蚂蚁金服,专攻数据可视化方向。译作有《图解简单算法》《自制编译器》等,曾参与《像外行一样思考,像专家一样实践(修订版)》的审校。