AISS3 图像检测

人脸检测算法主要在一幅图片或视频序列中检测出人脸的位置,并给出人脸的具体坐标。是人脸关键点、属性、编辑、风格化和识别等模块的基础。

  • 数据集:widerface
  • 挑战:scale, pose, occlusion, makeup

概念与定义

  • 图像分类:识别图像中物品的类别并给出置信度。
  • 图像分类:对于一个或多个目标的图片,识别出目标的位置,并对目标进行分类

数据标注

(x1,y1,x2,y2,class)

  • 左上角坐标为x1,y1,右下角坐标为x2,y2的矩形框
  • class类别

输入输出

  • 输入:一张图象
  • 输出:一组 (x1,y1,x2,y2,class,score)的检测结果

数据集与评价指标

数据集

  • PASCAL VOC
  • MS COCO

评价指标

精度评价

RECALL

根据标签值(真实值)预测值之间的关系,对分类器情况作以下分类(混淆矩阵):

真实值/预测值正样本负样本
正样本TP, True PositiveFN, False Negative 漏报
负样本FP, False Positive 假阳误报TN, True Negative

精度/查准率 Precision

P=TPTP+FPP = \frac{TP}{TP + FP}

召回率/查全率 Recall

R=TPTP+FNR = \frac{TP}{TP + FN}

目标检测中,

Precision=检测正确框所有检测框Recall=检测正确框所有标注框Precision = \frac{检测正确框}{所有检测框}\\ Recall = \frac{检测正确框}{所有标注框}

PR曲线

PPRR 是一对相互矛盾的指标。在不同的置信度阈值下,P和R的值不同。取置信度阈值为0-1,将PR的变化绘制成曲线即PR曲线。

AP, Average Precision & mAP, mean AP
  • AP: 针对单个类别的PR曲线和坐标轴围成区域的面积。
  • mAP:多个类别时所有类别的平均AP

PR曲线与坐标轴围成的面积越大,模型的性能越好。

速度评估

FLOPS(运算量),FPS,模型大小……

代表方法

基础方法

IoU, intersection over union

表示两个矩形框B1,B2B_1,B_2的重叠程度。

IOUB1B2=AoverlapAunion=B1B2B1B2IOU_{B_1}^{B_2} = \frac{A_{overlap}}{A_{union}} = \frac{B_1\cap B_2}{B_1\cup B_2}

NMS, Non-Maximum Suppression

  • 设定IoUIoU 阈值
  • 逐类别进行分数排序
  • 计算IoUIoU,根据阈值进行抑制

此举主要是为了处理可能出现的冗余结果。

CNN 模型的目标检测

二阶段的目标检测 - Faster RCNN

二阶段的目标检测是Region-base的。

传统方法 Faster CNN
方法 滑动窗口从原图裁剪图片,对裁剪后的图片进行分类并通过滑窗定位。 1. CNN - 整图特征提取
2. RPN - 候选框提取
3.检测头微调 - 得到最终类别和分数
不足 重复提取出特征而导致效率低下
且精度较低,在尺寸、光照变化下不健壮。
速度还未到达实时(30FPS)
优势 end-to-end,依靠训练进行网络优化;
效率较高,精度较高,对尺度比较健壮

一阶段的目标检测 - YOLO

一阶段的目标检测是Region-free的。YOLO只要求这个目标物体的中心落在划分出的框框之中。 YOLO 较快。

这意味着,我们不用设计非常非常的框,因为我们只需要让物体的中心在这个框中就可以了,而不是必须要让整个物体都在这个框中。

过程
  1. CNN 一次特征提取

  2. 划分 S×SS \times S的表格

  3. 表格的每个框都预测出 BBbounding box,每个bounding box有 5 个量:

    • 物体的中心位置(x,y)
    • 物体的高(h)宽(w)
    • 这次预测的置信度(confidence)
  4. 每个框还要预测框中的物体的类别,并使用one-hot码表示。

    注意,识别物体是对应于框的,而非对应于bounding boxes的。

  5. bounding box进行极大值抑制NMS

  6. 将最终的bounding box的 confidence 和这个bounding box所属的grid 的类别概率相乘,进行输出。

不足
  • 一个grid只能识别出一种物体。
  • 精度略有欠缺 ,尤其是小物品。

Transformer 模型的目标检测 - DETR, DEtection TRansformer

操作简单,是目标检测新范式。DTER

  • 将目标检测当作一个集合预测问题; (核心思想)
  • encoder-decoder based on transformer; (核心架构)
  • a set-based loss (实现预测结果与真值间一对一匹配的核心)
架构

  • CNN backbone :
    提取输入图像特征,生成特征图 [c,h,w]。典型值:c = 2048, h = h0/32, w = w0/32

  • 基于 self-attention 的 transformer:

    先用 1 × 1 卷积核把 [c,h,w] 变成 [d,h,w],再打平为 [d, hw] 以便 encoder 输入。

    • Encoder:multi-head self-atttention 模块的多重叠加。
    • Decoder:multi-head self-atttention 模块的多重叠加。在每个解码器层都并行解码N个对象。
    • Spatial positional encoding: 由于转换器的体系结构是置换不变的,DETR 用固定的位置编码对其进行补充。在 Encoder 每个关注层的输入中都加入该编码。详参 Transformer | DETR目标检测中的位置编码
    • Object queries: 是*可学习的位置编码*,添加到每个关注层的输入中,并被 decoder 作为嵌入的输出。
  • 简单 Feed Forward Net:
    具有 ReLU 激活功能且具有隐藏层的 3 层感知器和线性层(softmax)计算,最终检测为 (class,bounding box)no obj

损失函数

loss 部分由以下 2 个方面组成:

  • class loss: 类别是否正确
  • box loss: 框的大小和位置是否合适

LHungarian(y,y^)=i=1N[logp^σ^(i)(ci)+1{ci}Lbox(bi,b^σ^(i))]L_{Hungarian}(y,\hat y) = \sum_{i = 1}^N [-\log \hat p_{\hat \sigma(i)}(c_i) + \mathbb{1}_{\left\{ c_i \not= \empty \right\}}L_{box}(b_i,\hat b_{\hat \sigma(i)})]

其中

Lbox(bi,b^σ^(i))=λIoULIoU(bi,b^σ^(i))+λ1bib^σ^(i)1L_{box}(b_i,\hat b_{\hat \sigma(i)}) = \lambda_{IoU}L_{IoU}(b_i,\hat b_{\hat \sigma(i)}) + \lambda_1||b_i -\hat b_{\hat \sigma(i)}||_1

Note
  • 用了一个基于集合的损失函数,可以端到端的进行训练,

  • 对所有对象进行同时预测。

  • 删除了transformer 中的 spatial anchor、nms等部分,对 pipeline 结构做了一定的简化;

  • backbone 部分可以用不同的网络架构替换,方便扩展。

  • 训练时间长

  • 精度略有欠缺 ,尤其是小物品。

目标检测的未来发展方向

  • 通用方向: SAM,Grounded - SAM
  • 细化方向: 长尾问题,零样本和少样本,增量问题

实践

挑战

  • 模型结构的选择
  • 开发样例数量限制

AISS3 图像检测
http://example.com/2023/09/04/AISS-3/
Author
Tekhne Chen
Posted on
September 4, 2023
Licensed under