CS231n 学习笔记(1) Image CLassification

图像分类是计算机视觉中的一项核心任务,那么什么是图像分类?

例如,给你一个标签集,其中包括(猫、狗、鸟、卡车、飞机...等) 然后给你一张图片,那么这张图片属于哪个类别呢?这就是一个分类问题

跟人有区别的是计算机“看到”的图是一堆数字组成的矩阵,彩色图通常为RGB三通道组成的,灰度则为0~255数字组成的单通道图片。

对于计算机来说识别物体面临着许多的困难,如从不同的角度拍摄的物体,不同光照下的物体,发生形变的物体,被遮挡的物体,跟背景相似的物体以及同种类物体间的变化都会对识别造成困难。

下面看看什么是图片分类器,一个简单的图片分类器应该如下,输入一副图像,返回一个对应的标签。

分类器通常是数据驱动型的方法,其步骤一般是 : 1 收集带标签的图像, 2 用机器学习方法在数据集上训练模型, 3 在测试集上评估验证模型

下面介绍一种简单的分类器 nearest neighbor,也就是最邻近模型,当比较前k个最邻近时便是KNN。

lecture中介绍的数据集是cifar10,包括10类图片,50000张训练,10000张测试

在NN中为了找出与输入图像最相近的图像我们需要一种比较机制,这里引入了L1 distance。

上式中I1,I2分别为我们输入的需要分类的测试图像和训练集图像,拿一个简单4*4的图像做例子如下,对于位置像素做差后求和得到两幅图像间的距离。

所以NN的train step 是记录所有训练图像的数值, predict step 则是找出与测试图片最近的图片。 这里我们发现一个问题就是没预测一副图像我们都需要计算所有训练集图片与测试图片的距离,也就是测试

时间复杂度为O(N),而训练的时间复杂度反而为O(1)。通常我们可以接受较长训练的时间,而希望测试的时间能够短些,而knn恰恰相反。另外NN算法还存在如何确定k值,如何确定合适的计算距离以及

计算时面临维度爆炸等一系列的问题,而这些参数通常是依据你的问题而定的,往往需要我们在问题中寻找答案。

lecture中介绍了cross validation也就是交叉验证,用来确定k的最佳值。 其将训练集分为5个fold,每次分别用其中一个做验证集,最后取平均得到结果。

后面有提到距离机制对于像素的信息是很难提取的,最后给KNN的结论就是,不适合用在图像分类领域。。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

线性分类器

通过一张图片来理解什么是线性分类。给定一张图片作为输入,通过对输入特征(这里中用的是像素值)的线性组合得到各类的分数来确定类别。

一个更加简单直观的例子,假设有一副4个像素的图片,和3个类别。

所以这里我们通过定义了一个线性的score fun f(x,W) = Wx + b (这里b是bias )来计算每类对应的得分,右面我们得到三类的分数。

这里有个问题是我们如何评估W是否合适,后面将引进loss function也就是损失函数来评估W的好坏。同时也将介绍optimization 优化方法,从随机的W开始最终得到一个最优的能够使loss fun最小化的W。以及后面的convnet卷积网络

时间: 2024-10-18 18:20:21

CS231n 学习笔记(1) Image CLassification的相关文章

cs231n学习笔记-CNN-目标检测

1. 基本概念 1)CNN:Convolutional Neural Networks 2)FC:Fully Connected 3)IoU:Intersection over Union (IoU的值定义:Region Proposal与Ground Truth的窗口的交集比并集的比值,如果IoU低于0.5,那么相当于目标还是没有检测到) 4)ICCV:International Conference on Computer Vision 5)R-CNN:Region-based Convol

【CS231n学习笔记】2. python numpy 之numpy

Numpy 数组的创建 import numpy as np a = np.full((3, 3), 1) print(a) a = np.random.random((3, 3)) print(a) a = np.eye(3) print(a) a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) print(a) print(a.shape) 输出: [[1 1 1] [1 1 1] [1

深度学习笔记(一)卷积神经网络(Convolutional Neural Networks)

一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张"薄饼",其中包括了图片的高度.宽度和深度(即颜色,用RGB表示). 在不改变权重的情况下,把这个上方具有k个输出的小神经网络对应的小块滑遍整个图像,可以得到一个宽度.高度不同,而且深度也不同的新图像. 卷积时有很多种填充图像的方法,以下主要介绍两种,一种是相同填充,一种是有效填充. 如图中

[转] 贺完结!CS231n官方笔记授权翻译总集篇发布

哈哈哈!我们也是不谦虚,几个"业余水平"的网友,怎么就"零星"地把这件事给搞完了呢!总之就是非常开心,废话不多说,进入正题吧! CS231n简介 CS231n的全称是CS231n: Convolutional Neural Networks for Visual Recognition,即面向视觉识别的卷积神经网络.该课程是斯坦福大学计算机视觉实验室推出的课程.需要注意的是,目前大家说CS231n,大都指的是2016年冬季学期(一月到三月)的最新版本. 课程描述:请

Halcon学习笔记之支持向量机(二)

例程:classify_halogen_bulbs.hdev 在Halcon中模式匹配最成熟最常用的方式该署支持向量机了,在本例程中展示了使用支持向量机对卤素灯的质量检测方法.通过这个案例,相信大家可以对支持向量机的使用有一个更加清晰的了解.在相当多的检测和识别的应用中,都可以使用相同的方法来解决分类问题. 图1. 卤素灯图像 大致原理: 一.准备阶段:描述样本 1. 准备好两组卤素灯图像样本,好坏的各若干张图像: 2. 对样本图像进行分割,获取卤素灯关键部位区域: 3. 选择合适的对图像的描述

Caffe学习笔记

Caffe学习笔记 Caffe Caffe is a deep learning framework made with expression, speed, and modularity in mind. It is developed by the Berkeley Vision and Learning Center (BVLC) and by community contributors.Yangqing Jia created the project during his PhD at

[学习笔记1]机器学习的动机与应用

本系列博文记录斯坦福大学公开课-机器学习课程的学习笔记. Machine Learning definition Arthur Samuel(1959): Field of study that gives computers the ability to learn without being explicitly programmed. Tom Mitchell(1998): A computer program is said to learn from experience E with

DL学习笔记-反向传播算法的理解

作者:杜客链接:https://zhuanlan.zhihu.com/p/21407711来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Backprop Note,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和巩子嘉进行校对修改.译文含公式和代码,建议PC端阅读. 原文如下: 内容列表: 简介 简单表达式和理解梯度 复合表达式,链式法则,反向传播 直观理解反向传播 模块:Si

学习笔记:Caffe上配置和运行MNIST

学习笔记:Caffe上配置和运行MNIST MNIST,一个经典的手写数字库,包含60000个训练样本和10000个测试样本,图片大小28*28,在Caffe上配置的第一个案例 1首先,获取minist的数据包. 这个版本是四个数据包cd $CAFFE_ROOT./data/mnist/get_mnist.sh [html] view plaincopy #!/usr/bin/env sh # This scripts downloads the mnist data and unzips it