目标检测之一(传统算法和深度学习的源码学习)
本系列写一写关于目标检测的东西,包括传统算法和深度学习的方法都会涉及到,注重实验而不着重理论,理论相关的看论文去哈,主要依赖opencv。
一、目标检测有哪些算法,历史简介
最近在做一些目标检测相关的东西,目标检测是计算机视觉里面最重要的课题之一了,很多场合检测和识别都是很重要的,比如现在很火的无人驾驶,就非常依赖目标检测和识别,需要非常高的检测精度和定位精度。
目标检测从很早就开始有了。
传统算法的典型代表有:
Haar特征+Adaboost算法
Hog特征+Svm算法
DPM算法
深度学习的目标检测典型代表有:
RCNN系列,RCNN,spp-net,fast-rcnn,faster-rcnn
YOLO系列,YOLO和YOLO9000
SSD
后来有了深度残差网络ResNet之后,又出现了RFCN,还有最近的mask-rcnn等等,检测效果越来越好,精度越来越高。
二、Haar特征+Adaboost特征检测
作为本系列的第一篇,先来点简单的,我们从Haar特征+Adaboost算法开始。原理很简单。网络上教程一大堆,我这里就不废话了,稍微提下下。
Haar特征有以下几种:
Adaboost算法是机器学习里面的一种集成学习的算法,说的通俗点,就是用弱分类器(分类能力较差,但是也要大于0.5)级联加权组合成强分类器(分类能力较强),在训练过程中会着重训练前面分类错误的样本,及具体做法是增加样本对应的权重。
本次实验检测目标为车辆
使用Haar+Adaboost算法目标检测分为三个步骤:
1、 样本的创建和标记
2、 训练分类器
3、 利用训练好的分类器进行目标检测。
1. 样本的创建和标记
自己做样本是一个非常痛苦和麻烦的事,最好还是自己去网上找些公开的数据集,毕竟像ImageNet比赛或者无人驾驶这么火,公开的数据集很多的。