废话不看篇
在图像检测领域人们使用到的技术主要分为两类:第一类是以特征检测工具和级联分类器相结合的传统图像检测方法;第二类是以卷积神经网络为基础的深度学习的方法。
第一类图像检测的传统方法依赖于对图像中的物体特征进行检测/提取的特征模板(例如以人脸检测为例,最常用的有Haar特征模板),在特征提取的基础上结合一种级联性质分类器(例如最常用的Adaboost级联分类器,或称Adaboost算法),基于提取到的众多特征级联式地不断判断图像是否属于某个分类(例如图像是否是人脸)。在这类方法中,需要对分类器的众多参数进行训练,通过机器学习的技术,将众多的训练样本,包括正负样本(正样本是指属于某个分类的样本,负样本是指不属于某个分类的样本,例如在人脸检测的训练样本中,即需要大量人脸图像,也需要大量非人脸图像,作为训练样本)或者说正确样本和错误样本输入分类算法中,以训练出最优的算法参数。这也是一种统计学的基本技术。
第二类深度学习方法主要是使用到了多层卷积网络,通过使用较小的卷积核对图像局部进行遍历式卷积的方法提取物体特征,最后再通过全连接层依据提取的特征进行分类的方法。这一类方法需要对整个网络中的各种参数进行训练。
写这篇文章的最初想法是想要分别介绍传统图像检测方法和深度学习技术在图像检测中的应用,也供有读者比较其中的差异。然而这个领域实在是太宽广了,整个机器视觉是一个多学科交叉的应用领域,应用到的知识纷繁众多,远非我一个典型的门外汉所能穷尽的。而我确实是一个真正的门外汉,即非科班出身,也不是领域内的从业者,即不是来自计算机科学的,也不是学统计学的,即不懂C++,Python,也不懂OpenCV,Pythorch,tensorflow, 没研究过傅立叶,贝叶斯,也没看过深度网络中流行的各种Net,纯度满满的小白,仅仅几周之内,走马观花式地在一个非常窄的范围内,作了非常粗浅了解,为免文不对题,我想还是以对某个特例的学习为名,力图对这个狭小的领域内所使用的算法,其背后的基本原理作一个(我希望是尽可能完整一些的)简单梳理,希望给阅读此文的人起一个窥斑见豹的作用。所以这算是一篇介绍原理的文章,不涉及到太过具体专业的算法。
同时算是作为我这段时间学习过程的一个记录。
如果你有任何问题可以在这里留言,欢迎交流。
内容提纲
第一部分 人脸检测的传统方法
01 人脸检测的传统方法及其原理的概述
02 Haar小波变换
03 积分图
04 AdaBoost算法
05 AdaBoost应用举例
第二部分 使用卷积神经网络进行图像检测
01 卷积神经网络及其基础组件介绍
02 卷积层
03 激活层
04 池化层
05 全连接层
07 归一化函数
08 一个典型卷积网络的例子
09 卷积网络的工作原理概述
10 特征的提取
11 特征的组合
12 全连接层
13 卷积网络的训练
14 计算图
15 梯度下降
16 链式求导