Object Detection

mAP

AP is averaged over all categories. Traditionally, this is called “mean average precision” (mAP). We make no distinction between AP and mAP (and likewise AR and mAR) and assume the difference is clear from context.

mAP (mean Average Precision) for Object Detection - Jonathan Hui - Medium


CornerNet

anchor-free

Motivation

  1. anchor box太多,只有少部分和GT重合
  2. anchor 选择需要人为设计(数量,尺寸,比例),不同尺度anchor设置不同

两个部分: 1) 检测角网络,左上+右下 2) 嵌入网络,用于匹配角点

Method

检测corner网络:提特征之后,经过corner pooling产生每个类别的左上角和右下角的heat map。为正负样本匹配,只惩罚GT一定范围外的预测点(通过IoU threshold限制radius)
计算嵌入embed网络:用于匹配同框的左上右下。损失函数:同框左上和右下接近(variance小),不同框的平均embed距离大。
Corner pooling :解决角点特征少,取一条线上的最大值pooling

Hourglass network:提特征

two stage得到预测框之后采用RoI pooling/align提取检测框内部的信息,只有内部信息(approx.)的特征再进行一次框定和分类(refine步骤);而一阶段的方法在提取到特征之后分成两支进行框定和分类,没有对近似的只包含框内物体的特征(局部特征)进行再一次提取,所以精度较差


CenterNet

anchor-free

Motivation

CornerNet只用到边缘的特征信息,没有用到内部的特征信息(造成不止对物体的边缘敏感,也对背景的边缘敏感)。内部信息对于决定两个keypoint是否是同一个框有帮助。
CenterNet预测三元组:左上,右下,中心

Method


二分支:产生corner点并match形成框;产生center点。如果center点在框的central region,计算框,否则删除
central region 确定判定的中心区域的大小:大框偏小,小框偏大,整体线性

latex_equ
N离散变化,过threshold后变系数n。小latex_equthresholdlatex_equ大,3latex_equ5

Enrich center&corner information

center pooling 用在预测中心点时,增加中心点的recognizable特征

例如找leftmost的(即把horizontal最大值传到最左边),每个点看自己到最右边的最大值,不断传,到最左可获得整条横线最大;找topmost(把vertical最大值传到最上面),每个点看自己到最下,不断传,到最上则可获得整条线最大

模块&示意图

输出map表示是否为center点,然后找横向和纵向最大值

cascade corner pooling 增加角点的特征,相比corner pooling增加内部,使其不对边缘敏感
沿着边缘找边缘最大值,再从边缘最大值的位置 向内找内部最大值 ,最后两个最大值相加
模块&示意图

Q: how to classification?
Need RoI align?


FCOS: Fully Convolutional One-Stage Object Detection

anchor-free 消除anchor,减少IoU的计算和GT框的匹配。可以代替二阶段的RPN

按照像素进行预测per-pixel prediction,预测每一个像素点的四个维度的框 (Left, Top, Right, Bottom)👇


CentripetalNet: Pursuing High-quality Keypoint Pairs for Object Detection

image-20200428214951683


SaccadeNet: A Fast and Accurate Object Detector

image-20200428220100664

同时预测中心Center Attentive Module和角点Attention Transitive Module,得到粗框,使用Aggregation Attentive Module双线性插值重新采样feature map,得到精细框,轻量级边框细化Corner Attentive Module辅助训练。

Center-AM距离惩罚训练,采用Gaussian heat map作为GT latex_equ

相比CornerNet增加了中心特征,相比FCOS增加了边缘特征,相比CenterNet加速

Mask RCNN

参考https://zhuanlan.zhihu.com/p/37998710

网络结构

RoI Align

👆loss计算时w*h*c的mask输出,只计算分类分支预测的类别对应channel的sigmod输出作为损失「语义mask预测与分类预测解耦


HBONet: Harmonious Bottleneck on Two Orthogonal Dimensions

light-weight

包含两个部分 spatial contraction-expansionchannel expansion-contraction ,独立作用在特征图的 orthogonal dimension。前者通过减少特征图大小减少计算量,后者通过提升informative feature提升性能

mobilenet通过分离成point-wisedepth-wise来分别不变尺寸变通道数和不变通道数变尺寸(up/down sampling) so called depthwise separable conv
shufflenet通过group conv减少通道上的计算量,channel-shuffle来增加不同通道之间的连接
👆previous work focus on channel transformation, introduce spatial feature dim(size)


SSD网络时间

  1. 网络运行时间:0.002-0.003s 在GPU运行
  2. detect(NMS为主)运行时间:0.013-0.016s 只在 CPU 上运行 瓶颈

尺度减少,aspect ratio减少
Shallow feature map only for small
Deep ONLY large
低秩简化
PointRend

特征融合
cascade


Cascade RPN

Single anchor per location + multi-stage refinement

一次回归不到(距离太远),多次回归

回归多次后anchor点处的特征和移动anchor所在位置特征不匹配latex_equdeformable conv

匹配的anchor位置不变(还是最初始点对应的anchor),但是提取特征的位置改变👇👇

图像

Motivation

predefined anchor在GT和anchor对齐时限制性能/偏差,(#toread RoIPool RoIAlign)

  1. single anchor + incorporates criteria of anchor/anchor-free in defining positive boxes
  2. adaptive convolution to maintain the alignment between anchor boxes and features

Iterative RPN每次把anchor集合看作新的anchor进行refine,导致每次迭代后anchor位置和形状发生变化,anchor和表示anchor特征不匹配「 anchor中心点的特征(即表示anchor的特征)不发生变化,但是anchor的位置发生变化 ,mismatch」
👆使用deformable conv解决,but no constraint to enforce 🙅‍♂️

Adaptive Convolution

卷积采样的时候增加offset field
offset = center offset + shape offset中心的偏移和形状偏移(由anchor形状和kernel决定)

👆对比deformable conv:偏移量由anchor和kernel决定,非网络学习➡️anchor和feature对齐

Sample Discrimination Metrics

每个位置只有一个anchor,然后迭代refine

Determining whether a training sample is pos/neg as the use of anchor/anchor-free is adversarial 两种方法决定正负样本的方法不同

👆即anchor-free的决定方式宽松/数量多,anchor-based标准严格/数量少
Stage 1: anchor-free➡️更多正样本「解决正负样本不匹配」
Stage 2: amchor-based➡️严格,数量减少,IoU高
anchor-free指FCOS,中心点在物体内为pos anchor
anchor-based指Faster RCNN,IoU threshold

Cascade RPN

前一个阶段的输出bridge到后一个阶段
由anchor计算出offset o,再和feature x输入regressor计算新的anchor ( latex_equ就是anchor回归的目标 eg. latex_equ )


DetNet

为检测任务设计backbone

现有的ImageNet backbone: 1. 网络stage需要增加,且未在imagenet训过 2. down-sample和stride损失空间信息,大目标边界模糊 3. 小目标「空间分辨率低」


TridentNet

Scale variation latex_equ Different receptive fields

多分支网络,分支结构相同权重共享,每个分支不同的感受野对应检测不同尺度范围的物体
不同感受野使用dilated_conv实现👉参数相同
权重共享:减少参数量,inference时只选择一个主分支

Image Pyramid (Multi-scale training&testing): time-consuming
Feature Pyramid: use different params to predict different scale (not uniform)

trident block👇

Scale-aware Training Scheme:每个branch只对长宽在一定范围的proposal进行训练「一张图片使用不同branch(不同dilate rate)训练不同尺度的proposal」
其他参数相同(make sense?)

预测:计算每个分支的预测输出,filter out掉超过尺寸范围的box TridentNet Fast:预测只采用单分支latex_equ中间分支预测,得益于三分支权重共享,效果接近


SNIPER: Efficient Multi-Scale Training

解决多尺度问题, 不构建feature pyramid, 多尺度训练策略, 尺寸适应网络

Scale Invariant: RCNN将proposal缩放到同一个尺度,检测网络只需要学习一种尺度的检测。而为了适应不同尺度,多尺度训练的Faster RCNN对整个图片进行放缩,proposal也放大缩小,检测网络学习适应多种尺度。 通过网络capacity记忆不同scale的物体 ,浪费capacity

Process context regions around GT instances(chips) at appropriate scale
截取固定尺寸的chip(eg 3x3, 5x5, 7x7)对应不同尺度,然后resize到相同大小(low-res)去训练
小目标zoom-in,大目标zoom-out

Pos chips


👆chip从最小的cover某个GT box开始,直到最多的box被这个chip cover到
「chip尺寸不变,围绕cover这个GTbox转,直到最大化cover的box数量」

  1. 每个box至少被一个chip cover
  2. 一个物体可能被多个chip cover
  3. 一个物体在不同尺度chip中可能valid or not
  4. 截断的物体保留

Neg chips

👆只有pos chips会导致网络只对GT附近小范围的图片训练 iconic,缺乏 背景 。增加难样本作为neg chips
Metrics:

  1. 如果区域没有proposal,认为是easy background,忽略
  2. 去掉被pos chip cover的proposal「proposal和GT接近,易于区分」
  3. 贪心选择至少cover M个剩余proposal的作为neg chips

训练时可控制neg chip数量,类似OHEM
分辨率和准确率关系可能不大,过多context可能不必要
Ref: 目标检测-SNIPER-Efficient Multi-Scale Training-论文笔记 | arleyzhang


Stitcher: Feedback-driven Data Provider for Object Detection

小目标,粘贴构造训练样本

小目标数据集中分布不均匀(41.4%的小目标只出现在52.3%的图片中),小目标在训练过程中贡献的loss低,学不好

把图片缩小,拼接在一起(和SNIPER切割相反)

image-20200620175602128

把大物体和中物体都变成小物体,增加小尺度的分布

小目标:检测时放大❌,训练时缩小✅

loss作为反馈信号,小目标产生loss不足(latex_equ)则下个iter采用stitch,缺啥补啥

image-20200620175826519

image-20200620175926012


HRNet: Deep High-Resolution Representation Learning for Visual Recognition

处理过程中保持高分辨率「position-sensitive task」
maintain high-res representation through the whole process
不同于skip connection:高分辨分支平行conv,通过fusion而不是add融合高低分支,多分辨率输出
不同于特征金字塔:高低分辨率平行计算(low-res增加分辨率下conv计算,不是通过high-res一次卷积downsample得到,逐步平行计算增加)

先前网络:encode high latex_equ low,recover low latex_equ high
提出网络:运算时保持高分辨率分支,平行的加入低分辨率分支;multi-res fusion

Parallel multi-res conv

👆每个stage 逐步加入一个低分辨率(eg 1/2) 分支,且保持原有分辨率分支
类似 group conv ,通道分别 latex_equ 分辨率分别

Repeated multi-res fusion

每个stage(4个unit/block)交换不同分辨率的信息
👆high latex_equ low: stride conv; low latex_equ high: bilinear upsampling + 1x1 conv
an extra output for lower res output👆融合类似FC

Multi-res representation head/不同任务不同输出模式

(a) 关键点检测 (b) segmentation (c) object detection


Region Proposal by Guided Anchoring

更好的anchor,改进产生anchor的过程「非密铺」
anchor与feature: alignment + consistency

两个分支分别对anchor的中心点和长宽进行预测,防止offset偏移过大,anchor和点的feature不对应
采用deformable conv使feature的范围和anchor的形状对应,每个位置anchor形状不同而capture不同的特征「加offset以适应anchor形状」

Guided Anchoring

latex_equ
分两步产生anchor「减小同时预测xywh时出现的偏移不对应」

  1. location:预测objectness,之后采用mask_conv 减少区域计算
    只对物体的中心(及附近)为pos训练,预测物体中心「边缘不容易回归框」
  2. shape:预测每个位置上的best shape,位置不变只变长宽,不会misalign
    预测latex_equ,预测dw,而不是w,范围更大👇
    latex_equ

选择高于thresh的location中,概率最高的shape,产生anchor

Feature adaptation

consistency: 每点对应的anchor长宽不同,所以学习到特征对应区域的长宽也应该不同
latex_equ
基于对应anchor的长宽,改变特征(xy不变,位置branch只预测objectness score)
👆使用deformable convolution实现

Anchor shape target

训练时anchor和gt box的匹配,训练目标。wh为变量,无法计算IoU

latex_equ

方法:Sample常见的wh组合,计算和GT的IoU,得到vIoU👆,作为anchor和gt IoU的估计,之后采用常见anchor分配方法确定训练目标

High quality proposal

由于生成的anchor更好,pos样本数量更多。训练样本分布符合proposal分布
设置 更高正负样本比例 ,同时 更少样本 数量,即 更高IoU threshold


Soft NMS

解决密集 _相邻_ 物体的检测框重叠IoU大,可能在NMS过程中 误删
密集物体检测有提升

NMS

按照置信度排序,选择最大的box i保留。其余box中,与I的IoU>threshold的删除(置信度置为0)。再从剩下box选择最大保留,重复

Soft NMS

重叠IoU越大,置信度下降越多
置信度置为0变为更新IoU>threshold框的置信度



Ref: NMS与soft NMS - 知乎


Adaptive NMS Refining Pedestrian Detection in a Crowd

密集场景下NMS误删

通过预测crowd程度动态选择threshold

密集位置提高IoU阈值保留临近框,稀疏位置降低IoU阈值删除冗余框

对于每个物体定义object density latex_equ

阈值计算过程 latex_equ

NMS过程 latex_equ

测试时density通过网络density subnet预测,objectness map + bbox预测concat作为输入,5x5卷积(临近物体的信息)

image-20200428211808639

image-20200428211838035

citypersoncrowdhuman密集数据集效果好

Ref: https://www.starlg.cn/2019/05/20/Adaptive-NMS/


Fast NMS

image-20200510104231573

按照conf顺序构建IoU矩阵,转为上三角。对latex_equ,如果latex_equ,则去掉latex_equ,速度快

问题:没有去掉latex_equ时把之后的latex_equ失效,「横向传播」,可能多删除框。latex_equ被删除后,之后的框和latex_equ的IoU仍被考虑计算

Cluster NMS

Enhancing Geometric Factors in Model Learning and Inference for Object Detection and Instance Segmentation

Cluster-NMS

改进Fast NMS,增加remove row latex_equ的操作

image-20200510121557382

latex_equ表示latex_equ iter的NMS indicator,t次iter时对latex_equ进行NMS

latex_equ表示根据上次NMS结果(indicator),对已经被supressed的框去掉(i行置0,不考虑 latex_equ ,和i框的IoU不计算)

latex_equFast NMSlatex_equNMS

没有重合的box可以分成多个cluster并行处理

Score penalty reweigh + Cluster NMS

类似Soft NMS中不是直接去除box 「hard」,变成对score进行reweight「soft」,构成Cluster-NMS_S

latex_equ

j和其他box的IoU越大,score降低越多

不同于Soft NMS,只会被 和更高conf的box有大IoU 而受到惩罚,由于是上三角,只计算和更靠前box的IoU

Normalized central point distance + Cluster NMS

增加同DIoU类似的中心点距离latex_equ,构成Cluster-NMS_S+D

latex_equ

Weighted NMS + Cluster NMS

Weighted NMS根据IoU和conf加权merge重叠框,输出全新的框「速度慢」

latex_equ

latex_equ是加权融合后的全新的框,latex_equ为重叠框,权重latex_equweighted combination

conf从高到低,找到IoU>threshold的框,根据IoU进行加权求和,得到融合框;再对其他IoU<threshold的框计算 (https://github.com/sanch7/Weighted-NMS/blob/master/weighted_nms.py)

Cluster-NMS_W:

latex_equ

latex_equ

image-20200510164152776

Feature NMS: NMS by Learning Feature Embeddings

密集重叠场景下,只通过IoU不能判断是否是对同一个物体的预测。增加feature vec 距离判断是否是同一个物体的预测,距离小删除

image-20200520113710926

当IoU无法判断时使用embedding判断是否是同一个物体

训练使用Margin Loss: latex_equ

其中,pairwise loss: latex_equ


Matrix Nets: A New Deep Architecture for Object Detection (xNets)

FPN处理不同大小的物体(特征金字塔)
👇本文增加不同长宽比物体的处理 (大小金字塔+aspect ratio金字塔)


高度,宽度减半。左下右上剪枝(物体不常见)
性能提升不明显,相比CenterNet参数量减少
Ref: 参数少一半、速度快3倍:最新目标检测核心架构来了


IoU-Net

Add localization confidence in NMS

可以看作一种精细化的前背景分类(soft)

NMS

  1. 选择最大classification confidence的框latex_equ,加入集合latex_equ
  2. 其他所有不再集合中的框,如果和latex_equ的IoU大于threshold,则删去,简化重复框。
  3. 重复知道没有框,latex_equ为结果。

使用分类置信度作为最开始选择框的依据,IoU用于计算分类置信度最大的框和其他框之间的重合度,删去框。

而IoU-Net使用预测的框和GT的重合IoU,即定位置信度,选择最大作为依据。在inference阶段发挥作用。

预测IoU

15689424793639
通过网络预测IoU:使用FPN作为骨干网络,提特征。使用PrRoI pooling替代RoI pooling

IoU Guided NMS

15689426602716
Rank all detection bbox on localization confidence.

选择IoU最大的框,其他框重叠大于thres的框只使用他的最大conf score作为IoU最大框的conf「根据IoU选择,最大score修正conf」

Consider bounding box refinement as optimization

15689722991024
通过预测IoU并产生梯度,更新bounding box,并通过判断分数的提升和差值来更新边界框
// ToRead

Precise RoI pooling

使用双线性插值来连续化特征图,任意连续坐标(x,y)处都是连续的
latex_equ
latex_equ是插值系数,xy连续,ij为坐标像素点。RoI的一个bin表示为左上角和右下角的坐标对。通过二重积分进行池化(加权求和)
latex_equ

15689719523883

使用ResNet-FPN作为骨干网络,RoI pooling换成PrRoI pooling。同时IoU预测分支可以和R-CNN的分类和边界框回归分支并行工作.


FreeAnchor: Learning to Match Anchors for Visual Object Detection

Related 对于anchor生成/分配/选择的改进:Guided Anchoring, IoU-Net, MetaAnchor MetaAnchor - 简书

对于anchor和object的匹配方式的改进,Learn to match

之前采用IoU最大的anchor进行分配:细长物体,最representative的特征不在物体中心,IoU最大latex_equ最representative

Assign策略需要满足:

  1. Recall: 每个物体都能分配一个anchor

  2. Precision: 区分background anchor

  3. Compatible NMS: 高分类分数的anchor有好的localization

matching过程看作MLE过程,每个物体从bag of anchor中选likelihood probability最大的

Maximum Likelihood Estimation分析现有detector

训练损失函数,latex_equ表示j anchor和i 物体匹配「assign using IoU criterion」latex_equ

把训练损失函数看作似然概率

latex_equ

映射非常巧妙,使latex_equ的损失映射到latex_equ,而且损失越小,latex_equ越大

因此,最小化损失的目标转换为最大化似然概率

改进detection似然函数

目标 recall,precision,compatible

Recall:每个obj构建bag of anchor,最大化其中anchor的cls和loc似然。每个obj一定存在一个anchor对应

latex_equ

Precision:即对anchor区分前背景,把背景anchor分出

latex_equ

其中latex_equ 表示anchor j不match任何物体。即anchor不match任何obj概率越高,anchor不属于背景的概率越低(1-),才可以最大latex_equ

Compatible: latex_equ表示j anchor匹配i obj概率,NMS按照cls分数选。所以改成loc分数「i j 的IoU」越大,匹配概率越高,P为关于IoU的saturated linear函数。步骤存在于latex_equ

横坐标为IoU

似然函数: Jointly maximize

latex_equ

改进似然函数推出Matching Mechanism

训练损失latex_equ,使用FocalLoss

其中有max操作,但随机初始化的网络,所有anchor得分都低,max没有意义

改用Mean-max函数:latex_equ

训练不充分时接近mean,使用bag中所有anchor训练

训练充分时接近max,选择最好的anchor训练

可视化,anchor assign confident (laptop)

相比baseline有提升3%. 使用ResNeXt-64x4d-101,**为multi-scale

Ref: https://www.aminer.cn/research_report/5dedbde4af66005a4482453f?download=false


密集小目标

Paper: Benchmark for Generic Product Detection: A strong baseline for Dense Object Detection

Scale Match for Tiny Person Detection [method+dataset]


Aligndet: Revisiting Feature Alignment for One-stage Object Detection


FPN & Variants

所有FPN都使用backbone的多层特征图(经过1x1卷积)👇latex_equ

Top-down FPN

经典FPN,从最高层特征(semantic,low-res)经过upsample,和各同一级的特征图相加

给底层特征引入高层语义信息,益于小目标检测(低层特征图)

公式latex_equ

Bottom-up FPN

从最底层(high-res)向上逐次产生FPN层,向高层特征图传播低层的空间细节信息(spatial)

从低到高,融合「本层特征,高一层特征,上一层FPN」

公式latex_equ

latex_equ downsample, latex_equ upsample

Fusing-splitting FPN

上述两个FPN顺序逐次产生,先产生的层会对之后层影响(unfair)

首先分组fuse高层和低层的临近两组特征

latex_equ

然后merge高层和低层的特征

latex_equ

latex_equ

split产生不同层的特征

latex_equ

latex_equ

Ref: MFPN: A NOVEL MIXTURE FEATURE PYRAMID NETWORK OF MULTIPLE
ARCHITECTURES FOR OBJECT DETECTION


Learning Data Augmentation Strategies for Object Detection

数据增强,通过搜索来combine transformations

数据增强角度:1. Learn a generator to create data 2. Learn a set of transformations applied to existing data(本文)

常用transformer:image mirror,multi-scale training,crop-and-erase (occlude),cut-and-paste

自动学习数据集对应的数据增强方式:AutoAugment

Policy search问题:K=5个sub-policies,每个包含N=2个操作。训练时随机选择sub-policy,顺序执行N。

操作两个参数「执行操作的概率,操作大小程度」👇

image-20200228183031352

image-20200228192437277

Transform

  1. Color operations: 改变颜色通道,obj位置不变 equalize, contrast brightness
  2. Geometric ops: 改变obj位置和大小 rotate, ShearX, TranslationY
  3. Bounding box ops.: 只改变bbox内的图像 BBox_Only_Equalize, BBox_Only_Rotate, BBox_Only_FlipLR

Results

Rotate 旋转图片和bbox(best

Equalize 直方图均衡化(Histogram equalization),平衡不同灰度像素出现概率,增大对比度👇A histogram which is zero apart from a central area containing strong peaks is transformed by stretching the peaked area to fill the entire x-axis.

BBox_Only_TranslateY bbox内垂直变换,上下翻转

image-20200228190923807


YOLO

分格子(grids),每个格子只预测规定数量bbox,只有当gt box的中心点落入grid内时,此grid负责预测这个gt。(潜在问题:密集物体,多个中心点落入同一个grid,漏检)

img

网络输出(x,y,w,h), box_confidence_score,表示normalized长宽和中心点offset,以及置信度「表示objectness和位置准确性」

img

分gridlatex_equ每个grid产生k个预测latex_equ保留高box_conf_score预测

其中latex_equlatex_equ

class confidence score: latex_equ

表示分类和回归的准确率

img

网络结构👆:下采样+全连接回归预测

Loss function:包括分类损失,位置损失,objectness (latex_equgrids, latex_equ bbox each grids )

  1. Classification loss:类别,cond_cls_prob

    latex_equ

  2. Localization loss:只计算匹配了gt的grid

    latex_equ

    where latex_equ表示grid i的第j个box负责预测物体,预测根号来使大小物体误差值对loss函数贡献不同「见平方根函数,x小增长快,x大增长慢。小值误差增长快,大值误差增长慢」

  3. Confidence loss:objectness,区分前背景,使用latex_equlatex_equ计算

    latex_equlatex_equ

采用NMS去掉重复框

没有RPN可以让网络获得更多context,利于分类(fewer false pos.)

YOLOv2

BN高分辨率 (224x224上pretrain backbone,448x448上finetune)

anchor box,对grid内B个box增加先验知识,规定初始scale和shape,focus on a specific shape,训练更稳定 👇从左到右

Anchor机制通过预定义scale和shape来引入先验知识,bbox has strong patterns

image-20200302192028409

去掉FC层,使用1x1 conv改变通道为7x7x((4+1+20)x5),grid内5个anchor

img

特征图奇数分辨率:大物体处于图片中心,奇数更好分which grid

去掉pooling

anchor聚类确定predefined scale&shape(👇数据点之间距离表示IoU大小,位置无意义)每类anchor配置看作一个cluster

img

预测offset [tx, ty, tw, th]减少网络预测取值范围,增大可表示的数值范围👇

img

增加passthrough,类似skip-connection。和浅层特征图concat预测小目标

Multi-Scale Training采用多个尺度训练适应尺度变化 320x320, 352x352,..., 608x608 10个batch的不同尺度图片训练

使用DarkNet作为backbone👇

img

YOLO9000

使用hierarichical classification训练yolo,使用WordTree将分类和检测数据集混合训练,分9418类

YOLOv3

Multi-label classification:输出一个label id而不是cat维向量,直接输出exclusive output,使用binary cross-entropy loss训练

每个目标只匹配一个anchor,没有匹配的anchor不计算cls和loc损失,只计算objectness

FPN在3个尺度的特征图上预测,每个grid预测3个anchor,一共9种anchor配置

Residual+DarkNet53:卷积增加skip-connection

img

FPN

img

Ref: https://medium.com/@jonathan_hui/real-time-object-detection-with-yolo-yolov2-28b1b93e2088

https://blog.csdn.net/leviopku/article/details/82660381


IoU

评价预测和gt的距离,回归目标。具有尺度不变形

latex_equ

训练latex_equ

问题:

  1. 没有重叠时 IoU=0,没有梯度无法用IoU loss训练

  2. 无法很好反映方向不一致时重叠

    image-20200303220421986

GIoU (Generalized)

latex_equ

其中latex_equ为包含A和B的最小凸多边形(enclosing convex),多为矩形

A和B不重合时也可以优化,范围latex_equ,不重合时为负数(provide moving direction)

关注形状之间缝隙减小,如👆2,3中缝隙导致GIoU更小

img

👆<font color="#00dd00">不重叠样本</font>,IoU=0,而GIoU为负值,有梯度

👆<font color="#666600">重叠样本</font>,不断优化过程中GIoUlatex_equIoU

使用IoU Loss latex_equlatex_equ训练,相比Sommoth-L1和MSE能带来性能提升

DIoU (Distance)

好的bounding box regres. 标准需要考虑三个因素:Overlap, Center Distance, Aspect Ratio

直接优化两个框中心点的距离

latex_equ

其中latex_equ (or 图中latex_equ)表示中心点的欧式距离(L1可以吗?),latex_equ表示包含两个框的最小闭包区域的对角线距离👇

image-20200303230451277

相比GIoU:GIoU更强调对齐,只要对齐之后没有梯度,如👇,预测蓝色框和GT绿色对齐,没有缝隙,GIoU term=0「一框包括另一的情况」

image-20200303230816475

而DIoU直接优化框中心的重合,距离近👇

image-20200303230931086

image-20200303232843528

👆IoU不重叠loss高,GIoU正垂直水平方向loss高(如👆👆👆图),DIoU较低

DIoU也可用于NMS中DIoU-NMS

CIoU (Complete)

latex_equ

latex_equ

latex_equ

使用各种IoU loss训练👇

image-20200303233112636


HAMBox: Delving into Online High-quality Anchors Mining for Detecting Outer Faces

在线匹配,先回归出框,再anchor-target匹配计算loss

实验/Motivation

image-20200316221449869

👆anchor大,每个人脸匹配到的数量变多,但是匹配到人脸占所有人脸中占比下降,人脸recall下降

👆anchor小,每个人脸匹配到的anchor数量下降,但是大多数人脸都有匹配anchor,人脸recall上升

image-20200316221821820

👆0.35为anchor和target match的threshold,所以89%的anchor都没有被match

image-20200316221942813

==关键== 纵坐标代表face数量

match 1个anchor的face有2492张,anchor能产生的正确预测框(IoU>0.5,Correctly Predicted Bounding Box)对应的人脸有1968张 latex_equ 大多数人脸都能通过anchor产生一个IoU高的预测框

预测框经过NMS之后能保留下来的人脸只有343张 latex_equ 大多数人脸经过anchor产生的预测框都被NMS过滤掉,而导致这些face漏检

但是NMS只删除一个位置重复的框(IoU过大),对于漏检的人脸,只要有框cover,就一定会保留,NMS后同一个位置至少保留一个score最大的框 latex_equ NMS后导致漏检的1625张face,产生了CPBB(IoU>0.5),但是NMS被删掉 latex_equ IoU足够大,但是得分太低(低于cls_threshold),NMS时过低score的忽略掉(不会考虑IoU) latex_equ 是由于训练的时候此anchor没有match,分类分支训练目标为BG,分类网络降低了score「本质为IoU和score的mismatch」

👆结论:低IoU而没有被match的anchor也能产生很好的预测框(CPBB),需要被match为物体,提高其分类score。这些anchor负责的face多为outer face(难样例),上述也为outer face漏检的原因(低IoU框被unmatch,无法训练,分类网络不能分类为高分)

HAMBox (Online High-quality Anchor Mining)

选择大anchor,通过OHAM来进行弥补没有anchor match的face

传统match策略:一个face/target首先match所有和它IoU大于threshold的anchor。此后,对于没有anchor和它IoU高于阈值的face,选择和它IoU最大的anchor匹配进行补充(only one)

OHAM:1) match所有anchor IoU大于threshold的face,对于没有anchor匹配的face,不进行compensate. 2) 对所有框回归计算bbox. 3) 对所有没有匹配anchor的face,计算预测框和face的IoU,对其进行弥补,latex_equ 「没有匹配或匹配数量不足 (K anchor bag)」

计算Loss学习时,使用回归后的bbox和target匹配,来弥补用原始anchor和target匹配的数量不足问题

Regression-aware Focal Loss

latex_equ

其中latex_equ表示弥补的anchor,latex_equ为数量,p预测label,g=gt

latex_equ为matched anchor和unmatched low-quality (IoU<0.5) anchor「即unmatched hq anchor不进行训练,应该hq仍未被match表示简单样例上多余(>K)的anchor」,latex_equ为数量,latex_equ表示IoU,latex_equ表示第一次match的label

latex_equ

image-20200316225903344


[RFB-Net] Receptive Field Block Net for Accurate and Fast Object Detection

不同感受野,对应不同扩张(dilation)

不是多尺度的特征图,而是不同感受野大小的特征图

image-20200321165433401

之前只变感受野(receptive field/kernel size),或者只变扩张尺度(ASPP)

RFB提出感受野和扩张尺度应该同时变化「相互影响」

👇圈只表示感受野大小,大的kernel对应大的dilate,使感受野更大

image-20200321165623460

实现上

image-20200321165853355

使用两个3x3代替5x5注意padding,所有都为same size(k=3, p=1),每个分支产生的特征图大小相同

self.branch0 = nn.Sequential(
                Conv(in_planes, 2*inter_planes, kernel_size=1, stride=stride),
                Conv(2*inter_planes, 2*inter_planes, kernel_size=3, stride=1, padding=visual, dilation=visual, relu=False)
                )
        self.branch1 = nn.Sequential(
                Conv(in_planes, inter_planes, kernel_size=1, stride=1),
                Conv(inter_planes, 2*inter_planes, kernel_size=(3,3), stride=stride, padding=(1,1)),
                Conv(2*inter_planes, 2*inter_planes, kernel_size=3, stride=1, padding=visual+1, dilation=visual+1, relu=False)
                )
        self.branch2 = nn.Sequential(
                Conv(in_planes, inter_planes, kernel_size=1, stride=1),
                Conv(inter_planes, (inter_planes//2)*3, kernel_size=3, stride=1, padding=1),
                Conv((inter_planes//2)*3, 2*inter_planes, kernel_size=3, stride=stride, padding=1),
                Conv(2*inter_planes, 2*inter_planes, kernel_size=3, stride=1, padding=2*visual+1, dilation=2*visual+1, relu=False)
                )

[ASFF] Learning Spatial Fusion for Single Shot Object Detection

多尺度特征图融合

image-20200321192646888

特征首先经过resize,再融合。resize可使用deconv/conv, 插值/pooling

latex_equ

Where latex_equ, etc

and latex_equ, latex_equ, latex_equ computed (1x1 conv) from latex_equ, latex_equ, latex_equ respectively

可以看作产生一个框feature pyramid多个特征图都用到,之前只用一个特征图产生一个框

训练tricks:mixup algorithm, cos lr, sync bn, bag of freebies


Accelerating Object Detection by Erasing Background Activation

Objectness-aware object detection, 产生FG/BG的mask,只对mask区域计算

图片只有小部分有物体,背景区域不需要特征提取计算,只对前景mask区域计算特征,分类&回归(次要)出bbox

image-20200324230634744

OMG网络为Fast-SCNN👇

img

使用element-wise mul来zero-out背景的feature map

OMG中有argmax操作,为了end2end training,可以1) 使用soft-argmax代替argmax训练 2) 使用surrogate gradient,FP使用argmax,BP时使用soft-argmax代替获得近似梯度

latex_equ

实验: 对比MAC,使用不同mask监督


Libra R-CNN: Towards Balanced Learning for Object Detection

训练方式,不平衡问题:hard example IoU分布不平衡,multi-level/res feature融合不平衡,不同loss样本产生的梯度不平衡

有梯度反推loss函数设计

目标检测器训练目标

  1. Selected region samples are representative
  2. Extracted visual feature are fully utilized
  3. Designed objective function is optimal

常见训练有三层次的imbalance

  1. Sample-level: hard example需要多训练,但OHEM对噪声敏感
  2. Feature-level: pyramid不同level/res的特征处理深度不同,高层处理多,浅/底层特征处理少
  3. Objective-level: cls/reg两个任务损失函数协调

IoU-balanced Sampling

根据样本和GT的IoU,分成多个bin,每个bin均匀采样

第k bin中每个样本采样概率latex_equ

样本各IoU均匀分布

Balanced Feature Pyramid

使用同样深的网络来处理不同层的特征

resize不同层feature,取平均;使用Gaussian non-local attention增强融合的特征。在resize会原先的尺度增强multi-scale特征👇

image-20200325222120052

Balanced L1 Loss

==从梯度的角度考虑== promoting the crucial gradient: 精确的样本(inlier)的梯度更重要,增强loss小的样本的梯度(正确的梯度,数量少要增强),减弱loss大样本的梯度(难训练,大梯度导致训练不稳定)👇

image-20200325232936319

latex_equ

👆增强小loss的梯度,大loss的梯度clip。大小loss样本产生的梯度平衡

latex_equ通过分析梯度,反推回loss设计

积分可得👇

latex_equ

其中latex_equ为GT和pred的bbox坐标差距,latex_equ为clip界 (大于latex_equ,梯度恒定为1),latex_equ控制对小loss的梯度增强,latex_equ为平衡项,求出每个位置loss后mean或sum,即latex_equ👇

image-20200325234316019

Pipeline

image-20200325234511396


RepPoints: Point Set Representation for Object Detection

Bbox特征不对齐问题,提供更好的object表示方法(不是中心点领域卷积)

Deformable conv升级版,Representative Points

相比deformable,直接使用变形后的结果作为预测的bbox位置(or anchor的偏移),而不是explicit回归xywh。中心点 + implicit-offsets + wh

采样点同时用来提取语义对齐的特征,又用来表示物体的几何形态

img

大部分为背景,需要选择更representative的点求特征

image-20200326202246723

👆训练:分类网络采用deformable conv即可,回归网络先把reppoints表示转为bbox表示(pseudo box),然后计算和GT的offset(point loss)

转换方式:1) RepPoint set坐标最值 2) subset坐标最值 3) 使用mean和deviation估计,latex_equ估计中心点,latex_equ估计尺度(wh)

image-20200326201955046

👆使用网络计算偏移量(offsets over the center points),得到reppoint的点/物体特征表示latex_equ,n个点特征表示sample points/object的特征。学习latex_equ

👆维护两个RepPoint set,二次refine

Learned via weak localization supervision from rectangular ground-truth boxes and implicit recognition feedback

使用基于中心点xy而不是xywh预测bbox,减少hypothesis space,一次只需要预测2D vec,更好训练

RPDet

image-20200326203026414

👆backbone FPN (多尺度即可解决基于点预测的重合物体问题,同FCOS)

👆两个分支:locate分支两次计算offset refine,class分支用offset变型卷积(dconv=deformable conv)

Ref: https://www.zhihu.com/question/322372759/answer/798327725


Learning Rich Features at High-Speed for Single-Shot Object Detection (LSN)

分类任务预训练和检测任务gap,feature pyramid融合

Light-weight Scratch Network产生准确底层特征输入FPN

底层特征高层特征双向传播

image-20200424161122580

LSN

输入为downsample后的原始图片,低分辨率浅层网络 train from scratch

image-20200424161326166

Bi-directional Network

Bottom-up Scheme👆👆(b):latex_equ

latex_equ为LSN的特征输出,latex_equ为SSD (baseline)的输出,latex_equ为上一层特征,cascade依次计算

Top-down Scheme👆👆(c):latex_equ

latex_equ1x1conv降通道,latex_equ1x1 conv融合特征,dense融合所有上层特征(low-res)latex_equupsample

先经过bottom-up再top-down,用top-down输出预测

Experiment

image-20200424162957980

image-20200424163032355


Detection in Crowded Scenes: One Proposal, Multiple Predictions

一个anchor/候选框负责预测多个物体。anchor-GT 一对多

密集行人检测。密集,重叠/遮挡

image-20200501145202227

之前:一个anchor负责预测一个物体;提出:一个anchor预测一组

对于一个anchor/prior/proposal latex_equ,预测的GT:latex_equ

预测为set:latex_equlatex_equ表示第latex_equ个anchor预测的第latex_equ个框的类别和置信度,latex_equ为位置

匹配时latex_equ个物体,但预测时仍可能部分预测结果为背景「至多预测latex_equ个结果是否可以扩展为预测更多?

训练看作最小化预测集和GT集之间的推土机距离 latex_equ,和集合中位置无关,与分布有关

latex_equ

预测的背景box计算latex_equ不计算latex_equ

推土机距离 (Earth Mover's Distance, Wasserstein)

两个分布间距离:从一个分布变化到另一个分布所需要的最小做功

img

Screen Shot 2018-03-03 at 6.11.00 PM.png

Ref: https://jeremykun.com/2018/03/05/earthmover-distance/, https://zxth93.github.io/2017/09/27/KL散度JS散度Wasserstein距离, https://zhuanlan.zhihu.com/p/74075915

Set NMS

一个anchor预测的多个物体是unique的,重复预测只可能出现在不同anchor预测集之间

NMS时增加:如果两个pred-box出自同一个anchor,则不进行抑制

网络架构

image-20200501151947284

FPN,增加RoIAlign

更多预测,可能出现更多False positive,可增加Refinement Module进行二次预测refine

image-20200501152246868

Cityperson, CrowdHuman效果好


AugFPN: Improving Multi-scale Feature Learning for Object Detection

FPN改进,特征融合

image-20200512164653675

Consistent Supervision

不同尺度的特征图有semantic gap,增加一个监督信号来限制学习到的特征的差异

增加多个共享权重预测头(detect head)对不同尺度特征图(latex_equ)上的proposal进行预测,加监督信号「multi-head prediction

latex_equ
其中latex_equ表示中间层的预测,latex_equ表示最终层的预测,latex_equ表示GT的label和box

Residual Feature Augmentation

最高层特征没有上层特征与其融合。采用不同尺度的latex_equ特征进行组合得到latex_equ,并融合到latex_equ中,来增强最高层特征

image-20200512165827388

Ratio-invariant Adaptive Pooling为把latex_equ pooling到不同尺度latex_equ

其中Adaptive Spatial Fusion

image-20200512165942891

Soft RoI Selection

two RoIs with similar sizes may be assigned to different levels

使用ASF对多层特征进行加权融合,作为RoI的特征

融合为了使anchor-feature的匹配不只是一对一,临近尺度的特征图也参与预测,一个样本学习信号也传到多个尺度特征图


Learning to Separate: Detecting Heavily-Occluded Objects in Urban Scenes (SGE/Serial R-FCN)

密集检测,embeding+NMS (类似feature NMS),cascade

密集检测中不同类物体的区分和同一类不同物体的区分

Semantics-Geometry Embedding & SG-NMS

增加将检测框映射到隐空间中 latex_equ,其中latex_equ即为检测框latex_equlatex_equ为语义嵌入向量。可以看作将位置信息以语义信息作为权重进行线性变换得到embed

box和GT匹配时,对每个proposal latex_equ,选择最大IoU的物体latex_equ,如果i和j的IoU大于阈值,则认为i proposal匹配到j物体。Select max then thresholding

损失函数增加 1. Group:proposal的embed和匹配的物体的embed距离尽可能小 2. Sep:proposal的embed和与其第二大IoU的物体的embed距离增大(第一大的obj: 距离减小,第二大的obj: 距离增大

NMS时,IoU小于阈值latex_equ的保留(Greedy),大于阈值的计算embed的距离(SG),embed距离大于latex_equ的保留,latex_equIoU大的两个物体需要有更大的embed距离

image-20200608203857935

由于FPN作为backbone有多层,在FPN的每一层进行Greedy+SG NMS。在不同层之间只进行Greedy-NMS,且一个box只会被FPN其他层的box抑制

Serial R-FCN

image-20200608205053055

分类分支和SG计算分支在回归分支之后cascade进行。直接使用refined-box而不是RoI/proposal进行特征提取,可以使用更高的IoU阈值来训练分类分支

分类分支辨别回归分支回归的refined-box属于类别/BG。随着回归分支能力增强,BG类别样本数量减少,需要hard negative mining。在refined-box上增加随机噪声输入分类分支,作为接近且低于IoU阈值的难负样本

image-20200608205026817

所有分支都采用Position Sensitive RoI-Pooling👇,并增加self-attention👆

img

proposal/RoI区域内的每个位置有一个特征图,在对应特征图上RoI区域内pooling得到结果对应位置的响应值

Ref: https://zhuanlan.zhihu.com/p/30867916


VoVNet

相比densenet,只进行一次特征融合操作

image-20200620214131006

轻量级网络平DenseNet性能(不明显 latex_equ

VoVNetV2 增加残差连接和SE-block


DRConv: Dynamic Region-Aware Convolution

动态选择卷积核,不是receptive field。类似空域和通道上的attention

空间的动态卷积核,卷积核区域间不同,区域内共享

传统卷积核:通道间不同,区域间完全相同(共享卷积核)latex_equ

局部卷积:不同位置pixel卷积核不同latex_equ

latex_equ

DRConv:不同区域卷积核不同,同一个区域内共享latex_equ

latex_equ

首先学习划分区域mask,之后在每个区域内进行动态卷积

Learnable guided mask

学习分区,学习卷积核在特征图上的分布

使用普通卷积计算特征图(kernel空域上相同,通道维不同),在特征图通道维选择最大的对应的卷积核作为该位置上使用的卷积核

image-20200620223935673

latex_equ,m个channel

选择通道维最大的kernel作为区域的kernel (同样大小不同参数)

由于argmax没有梯度(mask latex_equ是one-hot向量),所以反向传播时使用softmax取代latex_equ

latex_equ

Dynamic Filter

根据输入特征动态产生每个区域的卷积核

类似通道+空域的attention机制(每个区域选择最大通道对应的卷积核)

性能提升1-2点 Mask-RCNN


Object Detection Tricks

Bag of Freebies for Training Object Detection Neural Networks

Visually Coherent Image Mixup Training

按照beta分布融合两张图片训练,位置信息不变(geometry preserved)求loss时按照融合占比加权

image-20200701100926363

Beta distribution

image-20200701101103962

效果:解决 unprecedented scenes (如屋中大象) 和 very crowded object group,但可能会使置信度降低

Label Smoothing

分类头上使用,增加CE-Loss中错误label的梯度,防止模型too-confident & over-fitting

latex_equ

Data Augmentation

二阶段有proposal的剪裁不需要geometry transformation

Training Schedule

采用cosine学习率,防止step scheduler剧烈变化不稳定

warm-up防止训练初期梯度爆炸

image-20200701102240277

Sync BN

Batch-size 对性能影响大

model = apex.parallel.convert_syncbn_model(model)

Multi-scale


Multi-scale training latex_equ Image level pyramid

Multi-level/stage feature latex_equ Feature pyramid

相比image pyramid,特征金字塔只提取一次图像特征,不同stage输出(多尺度),速度更快

Multi-scale training + Feature pyramid latex_equ all in