<commit_before>layout: post
#标题配置
title:  深度学习与图像物体检测
#时间配置
date:   2017-09-15 16:04:00 +0800
#大类配置
categories: deeplearning
#小类配置
tag: 教程
---

* content
{:toc}
Classification: what

Detection: what and where

Part1: 经典物体检测算法
===============

Viola-Jones face detector(Robust Real-Time Face Detection.IJCV 2004)

自然图像中的挑战： view point variation, illumination, occlusion, scale, deformation, background clutter

经典物体检测算法框架
----------

* 在图像中通过滑动窗口（多尺度）生成候选
* 对每一个人候选，用分类器判别是否待检测物体：人工特征提取，分类器学习
* 对候选对象根据分类器score进行筛选

Step 1:两类分类器训练

 Given the representation, train a binary classifer

Step 2:滑窗生成候选

Scans the detector at multiple locations and scales

Viola-Jones detection approach
------------------------------

Implemented in OpenCV

### Components

* Features: Haar-features, Integral image
* Learning: Boosting algorithm
* Cascade method

**1.Features**

**Haar-features**

The difference between pixels’ sum of the white and black areas

 ![page16image3136](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/8A47E772A3AE69B83E3B6F6CEC083E6B.png)

Too many features, but not all of them are useful !

so we have speed-up strategy: integral image, to fast calculation of haar-features

**integral image**

sum of pixel values in the blue area

![abcd.tiff](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/A2D79F879B77EA79373A45B92640960F.jpg)

上图中，计算四个颜色的图像的像素值之和，若使用integral image的方法，则只需要计算d-c-b+a的值即可。如不使用integral，则需要将四个颜色区域的所有像素值相加（很可能是成千上万的规模），计算量极大。

![page16image3136](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/8A47E772A3AE69B83E3B6F6CEC083E6B.png)

类似的，对于A和B只需要计算六个点，六次加减法运算；对于C只需要计算八个点；对于D只需要计算九个点。

但是，对于选出来的Haar特征，只有很小的一部分可以用于分类，Viola-Jones detection approach 选择使用Adaboost方法来进行特征的选择。

**2\. Adaboost**

combining several weak classifiers to generate a strong classifer.

Each training sample may have different importance !

Focuses more on previous misclassified samples:

* Misclassified-\>increase weights
* Correctly classified -\>decrease their weights

 ![page37image504](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/F590B93444D045DF5FAEAFAD6FD4C2EA.png)

**3\. Cascade method**

each image has a lot of possible windows to search.so we use cascade method

 ![page40image3432](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/DEC313047C8299DB5D7D9ED9DD80E64B.png) 

most windows contain no face, rejects negative windows in an early stage.

经典物体检测算法

• 逐像素滑动窗口

• 多尺度滑动窗口

• 对每一个窗口输入分类器判断是否包含待检物体 

• 期待在某一个尺度下，某一个窗口包含物体

• 人工特征设计，简单高效计算

• Adaboost特征选择，分类器学习

Part 2:卷积神经网络
-------------

* 特征学习
* 滑动窗口
* 多尺度

1. Traditional pattern recognition : feature extractoe-\>trainable classifier
2. Mainstream modern pattern recogniton : feature extractor-\>mid-level features-\>trainable classifier
3. Deep learning : low-level features-\>mid-level features-\>high-level features-\>trainable classifier

 ![page46image1376](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/AD8195F5162A390319DC4B2276C99F34.png)

convolution，pooling已经总结过....

卷积神经网络：

* 最佳图像建模工具
* 基本原理
* 卷积操作
* 降采样pooling
* 构建基本单元

**1.最佳图像建模工具**

针对图像处理设计的网络结构

传统神经网络将图像拉成一个向量，参数太多，计算效率低，忽略了图像的二维结构，忽略了空间上下文，不够鲁棒
**2.基本原理**

利用图像局部结构进行卷积操作
**3.卷积操作**

权值共享，局部视野感受

逐像素滑动

对图像进行滤波处理

若原始图像为200\*200，用5\*5的滤波器进行卷积操作，得到的滤波图像为196\*196的图像。

若采用全连接，权重数为:200\*200\*196\*196(将原图像的200\*200个像素映射到滤波图像的一个像素上，每次映射所使用的参数都不同，这个过程要196\*196次)，若采用局部连接，权重数为：25\*196\*196（用5\*5的滤波器，每25个像素映射到滤波图像的一个像素上，每个滤波器的参数都不同，共要196\*196次），采用局部连接+权值共享：一共25个权重（使用一个滤波器，滑动经过整个原始图像）。
**4.降采样pooling**

增强网络的鲁棒性，抗变性，位移干扰
**5.构建基本单元**

卷积层和降采样层交替进行，构建深度网络

基本构建单元：卷积+降采样

 ![page54image1232](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/87C310F3FCE25A8B10F3914AAA8A4A8A.png)

Part 3:基于CNN的物体检测（RCNN,Fast RCNN,Faster RCNN）
---------------------------------------------

INTRODUCTION TO IMAGENET:

1000 classes, each image has 1 class, at least one bounding box, 800 training images per class, algorithm produces 5(class, box) guesses, example is correct if at least one guess is correct class AND bounding box at least 0.5 interdection over union(LOU)

### Idea 1: localization as regression

Step 1: Train (or download) a classification model (AlexNet, VGG, GoogLeNet) 

![step 1.tiff](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/FDAEFF28891B35C0324BD0B2352673D9.jpg)

Step 2: Attach new fully-connected “regression head” to the network 

![step 2.tiff](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/62A050CFC234FDF5394E888E7B40CA8D.jpg)<commit_msg>fix some thing<commit_after>layout: post
#标题配置
title:  深度学习与图像物体检测
#时间配置
date:   2017-09-15 16:04:00 +0800
#大类配置
categories: deeplearning
#小类配置
tag: 教程
---

* content
{:toc}
Classification: what

Detection: what and where

Part1: 经典物体检测算法
===============

Viola-Jones face detector(Robust Real-Time Face Detection.IJCV 2004)

自然图像中的挑战： view point variation, illumination, occlusion, scale, deformation, background clutter

经典物体检测算法框架
----------

* 在图像中通过滑动窗口（多尺度）生成候选
* 对每一个人候选，用分类器判别是否待检测物体：人工特征提取，分类器学习
* 对候选对象根据分类器score进行筛选

Step 1:两类分类器训练

 Given the representation, train a binary classifer

Step 2:滑窗生成候选

Scans the detector at multiple locations and scales

Viola-Jones detection approach
------------------------------

Implemented in OpenCV

### Components

* Features: Haar-features, Integral image
* Learning: Boosting algorithm
* Cascade method

**1.Features**

**Haar-features**

The difference between pixels’ sum of the white and black areas

 ![page16image3136](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/8A47E772A3AE69B83E3B6F6CEC083E6B.png)

Too many features, but not all of them are useful !

so we have speed-up strategy: integral image, to fast calculation of haar-features

**integral image**

sum of pixel values in the blue area

![abcd.tiff](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/A2D79F879B77EA79373A45B92640960F.jpg)

上图中，计算四个颜色的图像的像素值之和，若使用integral image的方法，则只需要计算d-c-b+a的值即可。如不使用integral，则需要将四个颜色区域的所有像素值相加（很可能是成千上万的规模），计算量极大。

![page16image3136](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/8A47E772A3AE69B83E3B6F6CEC083E6B.png)

类似的，对于A和B只需要计算六个点，六次加减法运算；对于C只需要计算八个点；对于D只需要计算九个点。

但是，对于选出来的Haar特征，只有很小的一部分可以用于分类，Viola-Jones detection approach 选择使用Adaboost方法来进行特征的选择。

**2\. Adaboost**

combining several weak classifiers to generate a strong classifer.

Each training sample may have different importance !

Focuses more on previous misclassified samples:

* Misclassified-\>increase weights
* Correctly classified -\>decrease their weights

 ![page37image504](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/F590B93444D045DF5FAEAFAD6FD4C2EA.png)

**3\. Cascade method**

each image has a lot of possible windows to search.so we use cascade method

 ![page40image3432](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/DEC313047C8299DB5D7D9ED9DD80E64B.png) 

most windows contain no face, rejects negative windows in an early stage.

经典物体检测算法

• 逐像素滑动窗口

• 多尺度滑动窗口

• 对每一个窗口输入分类器判断是否包含待检物体 

• 期待在某一个尺度下，某一个窗口包含物体

• 人工特征设计，简单高效计算

• Adaboost特征选择，分类器学习

Part 2:卷积神经网络
===============

* 特征学习
* 滑动窗口
* 多尺度

1. Traditional pattern recognition : feature extractoe-\>trainable classifier
2. Mainstream modern pattern recogniton : feature extractor-\>mid-level features-\>trainable classifier
3. Deep learning : low-level features-\>mid-level features-\>high-level features-\>trainable classifier

 ![page46image1376](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/AD8195F5162A390319DC4B2276C99F34.png)

convolution，pooling已经总结过....

卷积神经网络：

* 最佳图像建模工具
* 基本原理
* 卷积操作
* 降采样pooling
* 构建基本单元

**1.最佳图像建模工具**

针对图像处理设计的网络结构

传统神经网络将图像拉成一个向量，参数太多，计算效率低，忽略了图像的二维结构，忽略了空间上下文，不够鲁棒
**2.基本原理**

利用图像局部结构进行卷积操作
**3.卷积操作**

权值共享，局部视野感受

逐像素滑动

对图像进行滤波处理

若原始图像为200\*200，用5\*5的滤波器进行卷积操作，得到的滤波图像为196\*196的图像。

若采用全连接，权重数为:200\*200\*196\*196(将原图像的200\*200个像素映射到滤波图像的一个像素上，每次映射所使用的参数都不同，这个过程要196\*196次)，若采用局部连接，权重数为：25\*196\*196（用5\*5的滤波器，每25个像素映射到滤波图像的一个像素上，每个滤波器的参数都不同，共要196\*196次），采用局部连接+权值共享：一共25个权重（使用一个滤波器，滑动经过整个原始图像）。
**4.降采样pooling**

增强网络的鲁棒性，抗变性，位移干扰
**5.构建基本单元**

卷积层和降采样层交替进行，构建深度网络

基本构建单元：卷积+降采样

 ![page54image1232](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/87C310F3FCE25A8B10F3914AAA8A4A8A.png)

Part 3:基于CNN的物体检测（RCNN,Fast RCNN,Faster RCNN）
============================================================

INTRODUCTION TO IMAGENET:

1000 classes, each image has 1 class, at least one bounding box, 800 training images per class, algorithm produces 5(class, box) guesses, example is correct if at least one guess is correct class AND bounding box at least 0.5 interdection over union(LOU)

### Idea 1: localization as regression

Step 1: Train (or download) a classification model (AlexNet, VGG, GoogLeNet) 

![step 1.tiff](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/FDAEFF28891B35C0324BD0B2352673D9.jpg)

Step 2: Attach new fully-connected “regression head” to the network 

![step 2.tiff](https://github.com/Colorfu1/Colorful.io/raw/master/_posts/resources/62A050CFC234FDF5394E888E7B40CA8D.jpg)
{'fraction_non_alphanumeric': 0.1268754076973255, 'fraction_numerical': 0.07131985214176995, 'mean_word_length': 5.464511595221364, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 19, 'https://': 18, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5624462', 'n_tokens_mistral': 4695, 'n_tokens_neox': 4726, 'n_words': 691}