图像分类

参考:http://cs231n.github.io/classification/

图像分类(Image Classification),是给输入图像赋予一个已知类别标签。图像分类是计算机视觉(Computer Vision)问题中一个基本问题,也是很要的一个问题。诸如物体检测、图像分割等可以利用图像分类来解决。

图像分类问题的主要难点在以下几个方面:

  • 视角差异(viewpoint variation):拍摄角度
  • 比例差异(Scale variation):缩放比例
  • 形变(Deformation):主要为非刚性形变(non-rigid deformation)
  • 遮挡(Occlusion):局部遮挡
  • 光照差异(Illumination condition):光线情况不同
  • 背景噪声(Background clutter):背景与前景接近
  • 类内差异(intra-class variance):类内差异大于类间差异


(ref: http://cs231n.github.io/assets/challenges.jpeg)

数据驱动的方法(data-driven approach):
从机器学习角度讲,训练数据(training data)为学习过程提供先验知识。

解决图像分类流程(pipeline):

  • 输入(input):包括图像和类别标签;
  • 学习(learning):学习分类器(classifier)或是模型(model)进而预测输入图像标签;
  • 评价(evaluation):比较预测标签和实际标签,评价分类器(模型)的性能。

最邻近分类(Nearest Neighbor Classifier):
(只是为了能够直观了解图像分类问题)
根据已有数据及标签(training data),预测输入图像(input image)为其最邻近图像的标签。进一步扩展可为K邻近方法,K邻接相对更加常用。相对而言,kNN在特征维度较低的时候,能力比较强的。

对于kNN而言有两个问题不好确定:
第一个就是k值的选择。K值较小时,对噪声敏感;k值较大,会削弱对decision boundary附近样本的判别能力。最简单的方法就是交叉验证,在验证集尝试不同取值;还有一些参考文件中使用\sqrt(N),其中N是每一类中样本的平均数(很明显对数据量很大的情况不适用)。
第二个就是对距离量度(distance metric)的选择。比较常用的是L1和L2距离。但是对一些问题,需要进行距离量度学习(distance metric learning)。比较常用的学习方法有LMNN(Large Margin Nearest Neighbor),ITML(Information-Theoretic Metric Learning)

关于使用kNN的一个小节:

  • 对特征做正规化(normalization),即零均值、单位方差;
  • 特征维数很高时降维,如PCA等;
  • 在训练集上划分验证集;
  • 交叉验证不同的k值及距离量度;
  • 时间开销过大时考虑Approximate Nearest Neighbor (FLANN)代替(以降低准确率为代价)。

延伸阅读:
A Few Useful Things to Know about Machine Learning,英文

机器学习那些事,中文

Recognizing and Learning Object Categories, ICCV2005的一个short course。

CNN for Visual Recognition (02)的更多相关文章

  1. CNN for Visual Recognition (01)

    CS231n: Convolutional Neural Networks for Visual Recognitionhttp://vision.stanford.edu/teaching/cs23 ...

  2. CNN for Visual Recognition (assignment1_Q1)

    参考:http://cs231n.github.io/assignment1/ Q1: k-Nearest Neighbor classifier (30 points) import numpy a ...

  3. 论文笔记之: Bilinear CNN Models for Fine-grained Visual Recognition

    Bilinear CNN Models for Fine-grained Visual Recognition CVPR 2015 本文提出了一种双线性模型( bilinear models),一种识 ...

  4. 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015

    Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...

  5. 【论文阅读】Deep Mixture of Diverse Experts for Large-Scale Visual Recognition

    导读: 本文为论文<Deep Mixture of Diverse Experts for Large-Scale Visual Recognition>的阅读总结.目的是做大规模图像分类 ...

  6. 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)

    Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...

  7. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zh ...

  8. Convolutional Neural Networks for Visual Recognition 1

    Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...

  9. 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition

    论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...

随机推荐

  1. hdu2203 KMP水的问题

    两种方法     首先是纯KMP #include<stdio.h> #include<string.h> #include<iostream> using nam ...

  2. MySQL 升级方法指南大全

    原文:MySQL 升级方法指南大全 通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本.例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MyS ...

  3. 使用微软 URL Rewrite Module 开启IIS伪静态

    原文 使用微软 URL Rewrite Module 开启IIS伪静态 在IIS5和IIS6时代,我们使用URL REWRITING可实现URL重写,使得WEB程序实现伪静态,但默认情况下只能实现.A ...

  4. IIS7 URL Rewrite 用法实例

    原文:IIS7 URL Rewrite 用法实例 很友好的URL地址,使访问的人很容易记住.要求你的用户记住" http://www.contoso.com/article.aspx?id= ...

  5. springmvc继承activemq(原创)

    1.加入jar包 我项目是用maven构建的,所以这里就给大家贴一下配置了,具体jar大家可以参看下Activemq分类中的文章 <project xmlns="http://mave ...

  6. Backbone入门

    Backbone入门讲解 Backbone是一个实现了web前端mvc模式的js框架. 一种解决问题的通用方法,我们叫做模式. 设计模式:工厂模式,适配器模式,观察者模式等,推荐js设计模式这本书.设 ...

  7. Python什么是值或引用函数参数

    这篇文章是Python前往遇到有疑问的功能. 下面一段是原有的基础教程Python函数. 按值传递參数和按引用传递參数 全部參数(自变量)在Python里都是按引用传递.假设你在函数里改动了參数,那么 ...

  8. FluentMigrator

    开源DataBase组件:FluentMigrator 2012-05-27 19:09 by 破狼, 2211 阅读, 4 评论, 收藏, 编辑 今天将介绍一款开源组件FluentMigrator, ...

  9. Linux内核头文件与内核与库的关系

    看上一篇文章中对buildroot的介绍,里面的文档第 3.1.1.1 Internal toolchain backend 节内容 C库会去访问Linux kernel headers(*.h)文件 ...

  10. KNN算法的理解

    一.算法 1.kNN算法又称为k近邻分类(k-nearest neighbor classification)算法. 最简单平庸的分类器或许是那种死记硬背式的分类器,记住全部的训练数据.对于新的数据则 ...