前言:我所写的“操作步骤”均是代码级的,把我的字翻译成代码,就能写出来项目框架

本文原创,转载请说明

  在深度学习火起来之前,传统的目标检测往往都是通过人来设计算法提取特征并喂入机器学习的SVM算法中,进行目标的定位和实例划分。为了避免知识嘈杂,大家晕头转向,我没有把一些过程名词解释出来,便于大家理清脉络

  所谓目标定位:就是在一张图片上框出某一目标的最小外界矩形

  传统目标检测主要结构原理讲解(去除了冗余的知识)

 

   所谓实例划分:下图左图定位,右图实例分割

传统目标检测主要结构原理讲解(去除了冗余的知识)

 

传统目标检测 的操作步骤:

  1.输入图片

  2.做高斯平滑(模糊化,目的是去噪音)

  3.人为制造滑动窗口(大小可以一样可以不一样),可以遵照大物体用大窗口,小物体用小窗口的准则。在图片上滑动,并得到一个个的候选区域,并给与其正负例的标签(训练时

  4.若上一步大小不一样,那么得到的候选区域也就不一样,无法喂入分类器,所以resize成同样大小。

  5.提取候选区域的特征(用hog算法)

  6.对提取出来的特征做归一化

  7.喂入SVM支持向量机进行分类

  8.此时可能存在一个目标很多框框着它,此时用非极大值抑制

  9.得到是正例还是负例后还原回去

结束。

优化:

  滑动窗口那一步,相当于对图片所有区域进行了遍历,十分笨重。于是传统目标检测对这一步进行了优化,将上面第三步替换成了select search(选择搜索),其步骤是:

  1.用felswzalb算法对像素进行聚类(根据每个像素颜色的相近关系聚类)

  2.对第一步的结果加工:相邻的块两两成对,计算其相似度(颜色,纹理,大小,距离),将四种相似度合并得到该“对”的最终的相似度,

  3.将最终相似度从大到小排序,将最大的那一“对”拿出来,作为新集合R1

  4.计算R1与原来的所有对(少了拿出来的这一对)的相似度,继续第3步,将最大的那一对拿出来作为R2.

  5.直到原来的所有“对”被这样拿干净为止。