本次学习笔记主要记录学习CV时的各种记录,包括李飞飞团队的视频cs231n。作者能力有限,如有错误等,望联系修改,非常感谢!
第一版 2022-07-19 初稿
数据驱动方法
图像分类时可能收到一张猫图,确认了分类或标签的集合。
图像给出像素红、绿、蓝三个值。
语义鸿沟。相机移动到不同位置拍摄,它仍是同一只猫。
照片可能在光照或黑暗中。猫可能是变形的。遮挡问题。图片北京混乱(猫色和背景色相似)。还有类内差异,一群不同种类的猫。
可能要写一些python代码,接受一个图片作为参数。
计算出图像的边缘。
数据驱动的方法:
1.抓取大量猫的数据集
2.使用机器学习训练分类器
3.评估新图的分类效果
常用的数据集 CIFAR-10。最近邻算法计算。
L1距离,有时称为曼哈顿距离。只取一部分像素相减,最后将所有相加。
train():训练函数,运用于最近邻算法。
predict():测试时,输入图像并使用L1距离函数。将测试图像和训练图像进行比较,在训练集中找到最相似的实例。
N个实例,训练和预测速度?
Train O(1);predict O(N)
我们想要训练缓慢,训练优秀的分类器,而预测迅速。
最近邻分类器:
此分类器并非最好的选择,图像中间集中大量绿点,但中间却有一个黄点。
于是就有了K-NN分类器。不仅是只寻找最近的点,会根据距离度量,找到最近的K个点。
K-NN
L1有坐标依赖,若向量中的各个元素有着实际意义,L1会更好。建议两种尝试下比较。
超参数:
1.K值
2.距离度量
(1)在数据集上工作最好的超参数,但这样不好,因为K=1对于我们表现得很好了;
(2)应让训练器在其他未知数据集上测试,应在其上面表现良好,但实际上这也不好。
(3)最好的方法是分为三组:训练集、验证集、测试集,选择在验证集上表现最佳的分类器,在测试集上跑。
交叉验证集:
在小数据集更常用。
交叉验证后会得到如图所示,x轴表示K值,y表示分类器对于数据集的准确度。
K-NN在图像分类很少使用,因为测试时太慢;距离度量标准用在比较图像上不太合适。
K-NN另一问题是维度灾难。像素点应密集的分布。
线性分类
输入图片,生成一句描述语句。卷积网络关注图像,循环神经网络关注语言。
f(x,W)=Wx+b
把2x2图像拉伸为一个向量。
在CIFAR-10上训练的线性分类器的训练权重,如图下方。