【又一重磅】再获翻译授权,斯坦福CS231N深度学习与计算机视觉

简介:

斯坦福CS231N深度学习与计算机视觉

第一弹:基础介绍

◆ ◆ 

1.导 读


计算机视觉/computer vision是一个火了N年的topic。持续化升温的原因也非常简单:在搜索/影像内容理解/医学应用/地图识别等等领域应用太多,大家都有一个愿景『让计算机能够像人一样去"看"一张图片,甚至"读懂"一张图片』。


有几个比较重要的计算机视觉任务,比如图片的分类,物体识别,物体定位于检测等等。而近年来的神经网络/深度学习使得上述任务的准确度有了非常大的提升。加之最近做了几个不大不小的计算机视觉上的项目,爱凑热闹的博主自然不打算放过此领域,也边学边做点笔记总结,写点东西,写的不正确的地方,欢迎大家提出和指正。


◆ ◆ 

2.基础知识


python是一种长得像伪代码,具备高可读性的编程语言。


优点挺多:可读性相当好,写起来也简单,所想立马可以转为实现代码,且社区即为活跃,可用的package相当多;缺点:效率一般。


2.1.1 基本数据类型


最常用的有数值型(Numbers),布尔型(Booleans)和字符串(String)三种。


  • 数值型(Numbers)

可进行简单的运算,如下:

0?wx_fmt=png


PS:python中没有x++ 和 x-- 操作

  • 布尔型(Booleans)

包含True False和常见的与或非操作

0?wx_fmt=png


  • 字符串型(String)

字符串可以用单引号/双引号/三引号声明

0?wx_fmt=png


字符串对象有很有有用的函数:

0?wx_fmt=png


2.1.2 基本容器


  • 列表/List

和数组类似的一个东东,不过可以包含不同类型的元素,同时大小也是可以调整的。

0?wx_fmt=png


列表最常用的操作有:
切片/slicing
即取子序列/一部分元素,如下:

0?wx_fmt=png


循环/loops
即遍历整个list,做一些操作,如下:

0?wx_fmt=png


可以用enumerate取出元素的同时带出下标

0?wx_fmt=png


List comprehension
这个相当相当相当有用,在很长的list生成过程中,效率完胜for循环:

0?wx_fmt=png


你猜怎么着,list comprehension也是可以加多重条件的:

0?wx_fmt=png


  • 字典/Dict
    和Java中的Map一样的东东,用于存储key-value对:

0?wx_fmt=png


对应list的那些操作,你在dict里面也能找得到:

循环/loops

0?wx_fmt=png
0?wx_fmt=png


  • 元组/turple
    本质上说,还是一个list,只不过里面的每个元素都是一个两元组对。

 
 

0?wx_fmt=png


2.1.3 函数


用def可以定义一个函数:

0?wx_fmt=png
0?wx_fmt=png


  • 类/Class

python里面的类定义非常的直接和简洁:

0?wx_fmt=png


2.2.NumPy基础


NumPy是Python的科学计算的一个核心库。它提供了一个高性能的多维数组(矩阵)对象,可以完成在其之上的很多操作。很多机器学习中的计算问题,把数据vectorize之后可以进行非常高效的运算。


2.2.1  数组


一个NumPy数组是一些类型相同的元素组成的类矩阵数据。用list或者层叠的list可以初始化:

0?wx_fmt=png


生成一些特殊的Numpy数组(矩阵)时,我们有特定的函数可以调用:

0?wx_fmt=png


2.2.2 Numpy数组索引与取值


可以通过像list一样的分片/slicing操作取出需要的数值部分。

0?wx_fmt=png
0?wx_fmt=png


还可以这么着取:

0?wx_fmt=png


我们还可以通过条件得到bool型的Numpy数组结果,再通过这个数组取出符合条件的值,如下:

0?wx_fmt=png


Numpy数组的类型

0?wx_fmt=png


2.2.3 Numpy数组的运算


矩阵的加减开方和(元素对元素)乘除如下:

0?wx_fmt=png


矩阵的内积是通过下列方法计算的:

0?wx_fmt=png


特别特别有用的一个操作是,sum/求和(对某个维度):

0?wx_fmt=png


还有一个经常会用到操作是矩阵的转置,在Numpy数组里用.T实现:

0?wx_fmt=png


2.2.4 Broadcasting


Numpy还有一个非常牛逼的机制,你想想,如果你现在有一大一小俩矩阵,你想使用小矩阵在大矩阵上做多次操作。额,举个例子好了,假如你想将一个1*n的矩阵,加到m*n的矩阵的每一行上:

0?wx_fmt=png
0?wx_fmt=png
0?wx_fmt=png
       

更多Broadcasting的例子请看下面:

0?wx_fmt=png


2.3 SciPy


Numpy提供了一个非常方便操作和计算的高维向量对象,并提供基本的操作方法,而Scipy是在Numpy的基础上,提供很多很多的函数和方法去直接完成你需要的矩阵操作。有兴趣可以浏览Scipy方法索引查看具体的方法,函数略多,要都记下来有点困难,随用随查吧。


向量距离计算需要特别拎出来说一下的是,向量之间的距离计算,这个Scipy提供了很好的接口scipy.spatial.distance.pdist

0?wx_fmt=png


2.4 Matplotlib


这是python中的一个作图工具包。如果你熟悉matlab的语法的话,应该会用得挺顺手。可以通过matplotlib.pyplot.plot了解更多绘图相关的设置和参数。

0?wx_fmt=png


结果如下:

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png


2.5 简单图片读写


可以使用imshow来显示图片。

0?wx_fmt=png

0?wx_fmt=jpeg

原文发布时间为:2016-07-25

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号


相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
98 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
55 1
|
3月前
|
机器学习/深度学习 人工智能 监控
探索深度学习在计算机视觉领域的应用
计算机视觉是人工智能领域的重要分支之一,而深度学习技术在这个领域中的应用已经成为了一个热门话题。深度学习的出现,不仅使得计算机视觉的准确性得到了极大的提升,还为我们提供了更多的可能性。本文将探讨深度学习技术在计算机视觉领域中的应用,并讨论其未来的发展前景。
31 0
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习引领计算机视觉革命
随着深度学习技术的快速发展,计算机视觉领域迎来了一场革命。本文将探讨深度学习在计算机视觉中的应用,包括图像分类、目标检测、图像生成等方面。通过深度学习的强大能力,计算机视觉正在实现更高精度、更广泛的应用,为人们的生活带来了巨大的影响。
|
3月前
|
机器学习/深度学习 算法 TensorFlow
面向计算机视觉的深度学习:6~10
面向计算机视觉的深度学习:6~10
123 0
|
3月前
|
机器学习/深度学习 算法 TensorFlow
面向计算机视觉的深度学习:1~5(4)
面向计算机视觉的深度学习:1~5(4
61 0
|
3月前
|
机器学习/深度学习 数据可视化 算法
面向计算机视觉的深度学习:1~5(3)
面向计算机视觉的深度学习:1~5(3
65 0
|
3月前
|
机器学习/深度学习 数据可视化 API
面向计算机视觉的深度学习:1~5(2)
面向计算机视觉的深度学习:1~5(2
94 0
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
面向计算机视觉的深度学习:1~5(1)
面向计算机视觉的深度学习:1~5(1
130 0
|
3月前
|
机器学习/深度学习 编解码 监控
深度学习掀起计算机视觉革命
计算机视觉是一门涵盖了图像处理、模式识别、机器学习等多个领域的交叉学科。近年来,随着深度学习技术的发展,计算机视觉得到了飞速的发展,取得了令人瞩目的成果。本文将探讨深度学习在计算机视觉中的应用,以及它所带来的变革。