CS231N 课程描述和资源
CS231n 的全称是 CS231n: Convolutional Neural Networks for Visual Recognition,即面向视觉识别的卷积神经网络。该课程是斯坦福大学计算机视觉实验室推出的课程。
课程官网:http://cs231n.stanford.edu/
官方笔记:http://cs231n.github.io/
B 站视频:https://www.bilibili.com/video/av58778425
课程作业:https://github.com/Burton2000/CS231n-2017
Lecture 1:引言
主要是计算机视觉概述和背景。
- 从 1960 年代末到 2017 年的计算机视觉简史。
- 计算机视觉问题包括图像分类,目标定位,目标检测和场景理解。
- Imagenet 是目前可用的图像分类中最大的数据集之一。
- 从 2012 年在 Imagenet 竞赛中开始,CNN(卷积神经网络)一直是赢家。
- CNN 实际上是由 Yann Lecun 于 1997 年发明的。
- 近年来深度学习的成功主要来源于数据和算力的增长
Lecture 2:图像分类
数据驱动
数据驱动的分类方法是指:
- 收集具有标注的图片数据集 (CIFAR10).
- 使用机器学习来训练分类器.
- 使用模型来预测新的图片.
KNN
KNN 用于图片分类:将两张图片先转化为两个向量(向量的维度为像素数量)$I_1$ 和 $I_2$,再计算两者的距离 $L_1$ 或者 $L_2$(距离的选择是一个超参数),找距离最近的 k 个图片的标签,让他们针对测试图片进行投票,把票数最高的标签作为对测试图片的预测。
距离函数
距离函数是 K 近邻算法的关键。常用的有 L1 距离,L2 距离等。通过不同的距离函数还可以将 K 近邻算法泛化到任何类型的数据上.
K 值
K 指的是邻居的个数,可以使用交叉验证调优。
超参数选择
K 近邻算法中的 K 值和距离函数就是典型的超参数:需要人为设置,而不能由算法学习得到。选择超参数的常见作法就是将数据集分为训练集,验证集,测试集。使用验证集来选择超参数,并在测试集得到结果。如果数据集较小,还可以采用交叉验证的方法进行选择.
划分数据集
交叉验证
交叉验证选择 K 值
缺点
- 测试要花费大量时间计算,因为每个测试图像需要和所有存储的训练图像进行比较(Train , Test )
- 图像的分类是基于背景的,而不是图片的语义主体。