2019-03-22 21:33:46 qweqwrqw 阅读数 151

前言:目前做深度学习也有一段时间了,系统的知识也学了很多,但是大多数都是自己在网上所获得的零散的知识,最近看了李飞飞的斯坦福网上公开课,觉得可以好好的巩固一下基础,对每个Lecture做一下笔记,DeepLearning,DeepLove!

Lecture 1: Introduction

众所周知,计算机视觉是一个多学科融合的领域,从计算机科学到数学,从生物学到心理学,计算机视觉都有很大的用武之地:
计算机视觉领域

视觉的由来与机器视觉的演变

地球诞生生命之初,谁都不知道地球是什么样子的——因为没有生物有眼睛,慢慢的,为了更好的捕食,5亿年前第一批生物进化出了最基础的视觉,又经过漫长的时间,等到人类已经可以制造出机器,最初的机器视觉物体产生了:照相机!在这里插入图片描述
在这里插入图片描述
而后,在20世纪,计算机视觉(机器视觉)的发展空前迅速,时间来到20世纪中叶这个重要的节点,两名哈弗的学生为了了解视觉神经的处理机制,做了一个实验:将金属探针接入猫的基础视觉皮质层中(primary visual cortex,处理大量和视觉相关的工作,但是位置在后脑勺处,并且大脑中有接近50%的神经元都参与着视觉处理的过程),并记录神经元的状态,发现猫在注视照片时并不会引起神经元的活动,但是当他们在切换照片的过程中,会激活部分神经元,这是开启深度学习的一个重大发现,他们得到的结论是:视觉处理流程的第一步,是对简单的形状结构处理,如边缘,排列等,并且凭借这一发现获得了1981年的诺贝尔医学奖。
Hubel与Wiesel的视觉神经机制实验
计算机视觉在这一发现之后有了突飞猛进的发展:
而现代计算机视觉领域的先驱是谁呢?是Lary Roberts在1963年的论文《Block world》,他的论文中提到边缘是决定物体形状的关键,并且解析出物体边缘的信息,属于行业内的开创性文章;
在这里插入图片描述
而后1966年,麻省理工成立人工智能研究室(MIT AI lab),使得计算机视觉成为人工智能中最为发展快速的领域;
在这里插入图片描述
接下来是David Marr,他在1970年的Vision一书中提出了另一个可以称之为深度学习基石的理论:视觉是分层的,并且我们可以建立一个分层的模型,将图像分为边缘结构->2.5D结构(因为物体之间是存在遮挡的,但是人类的大脑是可以分辨出来的,而且世界是三维的,但是我们的视觉成像是二维的)->3D结构,这是一个最基础但是也很抽象的视觉认知模型;
在这里插入图片描述
而后MIT与斯坦福分别对视觉模型进行研究,并且建立了简单的模型,MIT模型认为一切物体都是由简单的形状组成,例如圆柱体,只是观察角度不同;而斯坦福则认为物体是由简单形状构成,但是形状之间是由弹簧连接起来的(哈哈哈);
在这里插入图片描述
接下来进入90年代,计算机视觉进入彩色世界,Normalized Cut被提出用来进行图像分割,人类视觉对于图形的分类是很奇特的,而计算机却没有办法做到完美的分组,这也使得感知分组变成视觉领域最为重要的问题,即使到现在也没有得到很好的答案;
在这里插入图片描述
接下来计算机视觉跳入了一个新的领域:物体识别领域,1999年的物体识别与2001年的人脸检测是这一领域的两大标志性产物,这一领域也变成目前人工智能主攻的课题;
在这里插入图片描述
在这里插入图片描述

计算机视觉的崛起

接下来进入20世纪,很多的挑战比赛加速了深度学习的进程,2006-2012年的PASCAL Vsiual Object Challenge 是一个将图片进行20分类任务的挑战,比赛持续的几年分类错误率在持续下降;
在这里插入图片描述
到了2009年,IMAGENET挑战横空出世,包含1000种类别的140万张标注图像提供给参赛者进行认知分类,而IMAGENET比赛进行的第三年,也就是2012年,卷积神经网络一举夺魁拿下当年比赛的桂冠,这也就是深度学习理论的开端,并且以后每一年的IMAGENET冠军都是卷积神经网络显示出最好的成绩;
在这里插入图片描述
在这里插入图片描述
其实早在1998年,LeCun就使用了卷积神经网络来进行了手写字的识别,而2012年冠军的AlexNet几乎是照搬的LeCun的网络,除了激活函数由Sigmoid变成了ReLU,而能够让卷积神经网络能有如此之进化的效果很大一部分程度上要归功于硬件的革新;
在这里插入图片描述

计算机视觉接下来的挑战

计算机视觉所要专注的问题其实远远不止物体识别,对图片进行密集标记,动作识别,识别与3D整合,这些都是深度学习面临的挑战;计算机视觉针对图像,若是可以让计算机进行“看图说话”,或者让计算机理解图片中的深层语义,这些都是计算机视觉可以达到且应该达到的目标;
在这里插入图片描述
在这里插入图片描述
深度学习有着很好的发展前景,即使目前正是深度学习的“瓶颈期”,可它在图像领域仍然走在各种方法的前列,学好深度学习,走向美好人生,我们的梦想是星辰与大海!

资料来源:

  1. 斯坦福CS231n李飞飞计算机视觉视频课程:https://study.163.com/course/courseMain.htm?courseId=1003223001
  2. CS231n官方笔记授权翻译总集篇:https://zhuanlan.zhihu.com/p/21930884
  3. CS231n官方PPT:http://vision.stanford.edu/teaching/cs231n/syllabus.html
2018-05-03 00:00:00 heyc861221 阅读数 1243

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&retryload=1


【AI 科技大本营按】斯坦福的 CS231n 是深度学习和计算机视觉领域的经典课程之一。今年 4 月,由李飞飞主讲的 CS231n Spring 2018 又如约而至,截至目前,2018 年的课程视频仅对斯坦福的学生开放,今天,营长将为大家推荐两门适合不同学生类型的课程资源。


CS231n Spring 2018


课程简介


本课程对深度学习架构进行了详细介绍,主要集中在端到端的模型,特别是图像分类任务上。在 10 周的课程中,学生将学习执行、训练和调试自己的神经网络,并详细了解计算机视觉的前沿领域。最终,学生将完成包含数百万个参数的卷积神经网络的训练任务,并将其应用于最大的图像分类数据集(ImageNet)。我们将重点介绍如何建立图像识别问题、相应的学习算法(例如反向传播)、训练网络的技巧,并引导学生进行实际操作,通过最终的课程项目。本课程的背景和材料的大部分内容来自 ImageNet 挑战赛。



640?wx_fmt=png

先决条件


  • 熟练掌握Python、C / C ++

  • 大学微积分、线性代数

  • 基本的概率和统计论

  • 最好学习过 CS229 (机器学习课程)


课程大纲


课程大纲:http://cs231n.stanford.edu/syllabus.html(部分课程的 Slides 已经可以下载)


课堂讲义:https://cs231n.github.io/


640?wx_fmt=jpeg


总体上来说,今年的课程和去年的课程基本没有变化,除了 Lecture 8 以及特邀讲师。


今年的第 8 课除了去年的深度学习软件内容之外,还与时俱进地新增了 CPU、GPU 和 TPU 等硬件内容。



640?wx_fmt=png


此外,去年该课程邀请了斯坦福博士 Song Han 以及“GANs之父” Ian Goodfellow 作为演讲嘉宾,今年的特邀嘉宾则是李飞飞高徒 Andrej Karpathy 以及加州大学伯克利分校教授 Jitendra Malik。


目前 CS231n Spring 2018 的视频还只对斯坦福学生开放,感兴趣的读者可以观看 CS231n Spring 2017 的课程视频:


  • YouTube 地址:

    https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv

  • Bilibili 视频地址:

    http://www.bilibili.com/video/av13260183/#page=1(由微博博主@爱可可老师上传)


参考链接:http://cs231n.stanford.edu/index.html(课程官网)


作为 AI 垂直媒体的运营者,营长经常收到大家的来信,很喜欢营长推荐的课程资源,但是由于大部分是英文资源,或者由于“你懂的”网络原因,导致在实际操作过程中,一些读者并不能如愿参加课程的学习。


为了满足这部分读者的诉求,营长推荐一下自家出品的人工智能课程,本课程不但包含了系统的计算机视觉方向的概念,还有生动的案例教学,主讲人为智亮老师和卿来云老师。


640?wx_fmt=jpeg

640?wx_fmt=jpeg


其中智亮老师是著名的识花应用花伴侣的作者,花伴侣是一款精准而专业的拍照识花工具,当你在看到不认识的花时,用花伴侣手机 APP 拍一张照片,就能快速识别出花的名字、品种以及它的花语、药用价值等。目前,花伴侣能识别中国野生及栽培植物 3000 属,近 5000 种,几乎涵盖身边所有常见花草树木。


卿来云老师是中国科学院大学计算机与控制学院副教授 ,讲授研究生课程机器学习十余年,研究方向为机器学习在计算机视觉领域的应用,作为项目负责人承担国家 863 项目和国家自然科学基金项目多项,发表学术论文 70 余篇。


人工智能工程师课程简介


本课程主要针对本科毕业人群或研究生毕业人群,课程分为三个阶段,共 4 个月。


第一个阶段为:机器学习原理及商品推荐系统实现;

第二个阶段为:深度学习原理及实战项目强化训练;

第三个阶段为:四个工业级实战项目及成果展示,从机器学习到深度学习,再到项目实战,真正做到层层深入。


640?wx_fmt=jpeg


课程大纲

640?wx_fmt=jpeg640?wx_fmt=jpeg640?wx_fmt=jpeg


本课程的优势在于拥有系统教学,讲师将针对每个人的基础和学习情况,制定个人专属学习计划,保证每位同学的学习成果。课程还将提供工业级真实数据集与完善的 GPU 云实验平台供学员真枪实战,更有有助教在线答疑,辅导课后作业,不定期分享学习资料。


课程结束后,讲师会对学生进行专业的就业指导,部分优秀学员可获得直推企业的资格。人工智能工程师课程因其针对性强,属于速成班课程,学费稍高于大学一年的学费。


大家可根据自身的特点来选择自己适合的课程,最后营长预祝大家学业有成,年薪百万!扫码添加 CSDN 小姐姐的微信,报营长粉丝,即可获得 2000 元课程优惠券。


640?wx_fmt=png


点击 |阅读原文| 查看课程详情

2019-12-02 17:40:32 qq_36758914 阅读数 16

1. 图像分类数据和label分别是什么 图像分类存在的问题与挑战

图像分类的数据是一张图片上的像素点。灰度图像只有一个通道,而彩色图像有RGB三个通道。
对于计算机来说,它不能辨别出这张照片上的物体。所以,我们需要向这个图片赋予标签以让计算机识别。
问题与挑战:
a. 即使是同一个物体,拍摄的角度不同,照片背后蕴含的数据也是不同的。
b. 不同的光线、背景以及被遮挡等问题也会阻碍计算机正确识别物体。

2. 使用python加载一张彩色图片,观察像素值

from PIL import Image
########获取图片指定像素点的像素
def getPngPix(pngPath = "aa.png",pixelX = 1,pixelY = 1):
    img_src = Image.open(pngPath)
    img_src = img_src.convert('RGBA')
    str_strlist = img_src.load()
    data = str_strlist[pixelX,pixelY]
    img_src.close()
    return data
print(getPngPix())

3. L1范数,L2范数数学表达式 这两种度量分别适用于什么情况在这里插入图片描述

L1范数是指向量中各个元素绝对值之和。
L2范数是指向量各元素的平方和然后求平方根。
L1 是倾向于产生稀疏解,而 L2 倾向于减小参数,尽管都能简化模型,但是一般来说 L2 模型的抗过拟合的能力更好一点。并且进一步说,L1 是假定参数符合拉普拉斯分布,L2 是假定参数符合高斯分布。

4. 描述近邻算法KNN算法的复杂度 为什么很少使用在图像中以及它存在的问题

复杂度分析:
训练复杂度:KNNKNN算法只是将训练数据及标签预先保存,并不涉及某些计算,复杂度为o(1)o(1)
测试复杂度:对于某个样本xx,需要与标签数据逐一进行对比,计算量与数据大小有关,复杂度为o(N)o(N)
存在的问题:
a. 计算量大;
b. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);
c. 需要大量的内存。

5. 了解cifar10数据集

是由50000个训练样本和10000个测试样本组成的含有十个类别的数据集。

6. 超参数怎么选择合适(即数据集如何划分)

实际数据采集后,为了验证模型的准确性,我们要人为拆分数据集和测试集。
实际使用中,当算法在训练集表现得很完美时,应用到测试集后,往往就会发现表现得不尽如人意。因此,我们还要划分出验证集,通过训练集的训练,以及验证集验证模型的优良程度,最后在测试集作预测是比较好的选择。
这里又要导入一个交叉验证的概念,因为作为验证集后,我们就有部分数据损失没有用上,不免的有点浪费。交叉验证就不再是固定划分一块验证集了。不过训练量对比起之前的做法提高了数倍,因此交叉验证比较适用于小数据集使用。

2019-02-02 23:27:44 wangchy29 阅读数 36

神经网络训练细节part2上

参数更新机制

  1. SGD
  2. Momentum update
  3. Nesterov Momentum update
  4. AdaGrad update
  5. RMSProp update
  6. Adam update

SGD

随机梯度下降:

x += - learning_rate * dx

特点:如果在水平方向上梯度较小,而在垂直方向上梯度较大,会造成在水平方向更新较慢,而在垂直方向上造成上下抖动。收敛速度慢。

Momentum update

动量更新

v = mu*v - learning_rate * dx
x += v

借用物理学动量的思想,给参数更新加上一个动量。其中mu是超参数,通常设置在0.5到0.9之间,v的初始值为0。

特点:(1)收敛速度比SGD快。(2)从实现可以看出动量更新会逐渐放慢速度,最终停下来。

Nesteriov Momentum update

不同于动量更新,动量更新是当前的梯度加上当前的动量值,得到实际更新的方向,而Nestreriov Momentum update是用当前的动量加上预测的梯度得到更新的方向。

左边:

v_t=\mu v_{t-1}-learning\; rate\bigtriangledown f(\Theta _{t-1})\\ \theta_{t}=\theta _{t-1}+v_t

右边:

v_t=\mu v_{t-1}-learning\: rate\bigtriangledown f(\Theta _{t-1}+\mu v_{t-1})\\ \theta_{t}=\theta _{t-1}+v_t

特点:比前面两种更新速度更快地向最优解靠近。

AdaGrad update

cache += dx**2
x += learning_rate * dx / (np.sqrt(cache) + 1e-7 )

在更新时,考虑到了数据每一维的规模。其中1e-7是为了防止分母为0的情况出现。

特点:(1)补偿措施。比如垂直方向上梯度较大,水平方向上梯度较大,在用AdaGrad进行更新参数时,就会用垂直方向上的梯度除以对应的cache会使更新的梯度值较小,而同理会使水平方向上的梯度值较大,这在一定程度上是一种补偿措施。因为网络很多情况下需要在梯度大的方向上得到梯度叫较小的更新。(2)网络最终会停止。因为cache会不断变大,会使更新步长越来越小,最终会使网络停止更新,而网络需要不断更新。

RMSProp update

cache = dacay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / (np.sqrt(cache) + 1e-7)

该方法对AdaGrad的最终停止更新做出了改善,decay_rate是一个超参数,名为衰减率,一般设置为0.99。

特点:具备AdaGrad的全部优点,并且不会过早停止。

Adam update

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
x += - learning_rate * m / (np.sqrt(v) + 1e-7)

是动量和RMSProp的一种结合。

实际上实现的时候会有偏置矫正,一开始的时候数据可能不正确,在最初几次更新中,使m和v较大,不会过小。

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
m /= 1-beta1**t
v /= 1-beta2**t
x += - learning_rate * m / (np.sqrt(v) + 1e-7)

学习率:最初使用较高的学习率,然后逐渐减小学习率。

 

2019-11-29 16:35:18 qq_36758914 阅读数 24

李飞飞计算机视觉课CS231n第一天

数据集

Pascal Visual Object Challenge: 20 catagories
ImageNet: 22000 catagories and 14 millions images

一些特征提取算法

SIFT feature:

是一种基于特征的目标识别。
用一个’STOP’标识去匹配另一个’STOP’标识非常困难,因为有很多变化的因素,比如相机的角度、遮挡、视角、光线以及目标自身的内在变化。
通过观察目标的某些对旋转、尺度缩放、亮度变化等保持不变性特征(SIFT特征),然后把这些特征与相似的目标进行匹配,这会比匹配整个目标更容易。

空间金字塔匹配:

a. 图片里面有各种特征来告诉我们这是哪种场景。
b. 这个算法从图片的各部分、各像素抽取特征,并把他们放在一起作为一个特征描述符。
c. 在特征描述符上做一个支持向量机。

Hog (histogram of gradients) feature:

是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。
HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
提出的目的是为了更好的解决行人检测的问题。
研究如何在实际图片中比较合理地设计人体姿态和辨认人体姿态。

促使计算机视觉发展的因素

数据集增多
图片质量优化
计算机硬件数据集升级。

计算机视觉的任务

图像分割、图像分类、姿态检测、目标检测等等

没有更多推荐了,返回首页