当前位置: 首页 > news >正文

网站的三大标签建设银行假网站首页

网站的三大标签,建设银行假网站首页,p2p网站建设框架,深圳网站制作公司兴田德润信任高在目标检测任务中#xff0c;样本的划分对于模型的性能具有至关重要的影响。其中#xff0c;正样本指的是包含目标物体的图像或区域#xff0c;而负样本则是不包含目标物体的图像或区域。然而#xff0c;在负样本中#xff0c;有一部分样本由于其与正样本在特征上的相似性… 在目标检测任务中样本的划分对于模型的性能具有至关重要的影响。其中正样本指的是包含目标物体的图像或区域而负样本则是不包含目标物体的图像或区域。然而在负样本中有一部分样本由于其与正样本在特征上的相似性、复杂的背景环境、遮挡或形变等因素导致模型难以准确区分这些样本被称为难负样本。难负样本的存在对目标检测模型的性能具有显著影响。由于难负样本与正样本之间的特征差异较小模型在训练过程中容易将这些样本误判为负样本从而导致漏检或误检的情况发生。此外难负样本还可能影响模型的收敛速度和稳定性使得模型在训练过程中难以达到理想的性能。 正样本Positive Samples正样本是指那些属于目标类别的样本它们是我们希望模型能够正确识别并分类的实例。以图像分类任务为例如果我们正在训练一个识别猫的模型那么所有包含猫的图像便构成了正样本集。负样本Negative Samples负样本则是指不属于目标类别的样本即模型在训练过程中应将其与正样本区分开来的实例。在上述猫的图像分类任务中所有不包含猫的图像即构成负样本集。难分正样本Hard Positives难分正样本指的是那些在训练过程中被错误地划分为负样本的正样本或者是在训练过程中产生较高损失的正样本。这些样本对于模型来说较难识别因此需要更多的关注和优化。难分负样本Hard Negatives难分负样本是指那些被错误地划分为正样本的负样本或者在训练过程中产生较高损失的负样本。这些样本的存在可能导致模型出现误判因此也是训练过程中需要重点关注的对象。易分正样本Easy Positives易分正样本是指那些容易被模型正确分类的正样本这些样本在训练过程中通常产生较低的损失。它们对于模型的训练来说较为简单但仍然是构成正样本集的重要部分。易分负样本Easy Negatives易分负样本则是指那些容易被模型正确分类的负样本这些样本在训练过程中同样产生较低的损失。虽然它们对于模型来说较为简单但在构建完整的训练数据集时这些样本同样不可忽视。 为了处理难负样本问题研究者们提出了多种方法和技术。首先难负样本挖掘策略是一种有效的方法。在训练过程中通过重点关注那些被模型误判的负样本并增加它们的权重可以提高模型对这些样本的识别能力。其次改进损失函数、优化模型结构或使用更强大的特征提取器也是增强模型对难负样本处理能力的重要途径。在选择难负样本时需要遵循一定的原则。首先难负样本应与正样本具有不同的标签以确保模型能够正确区分它们。其次难负样本应与正样本尽可能相似以充分挑战模型的识别能力。这两个原则在实际操作中需要找到平衡点既要保证样本的多样性又要保证样本的困难度。 然而在利用难负样本进行模型训练时也需要注意一些实践中的细节。首先过度依赖难负样本可能导致模型过拟合因此需要谨慎选择样本并控制其比例。其次在训练过程中应逐步增加难负样本的比例以便让模型逐步适应更具挑战性的样本。最后还需要考虑到计算复杂性和训练效率的问题避免引入过多的难负样本导致训练过程变得复杂和耗时。为了让模型正常训练我们必须要通过某种方法抑制大量的简单负例挖掘所有难例的信息这就是难例挖掘的初衷。即在训练时尽量多挖掘些难负例hard negative)加入负样本集参与模型的训练这样会比easy negative组成的负样本集效果更好。 Fast R-CNN 采用 Selective Search 方法生成约 2k 个候选区域proposal作为潜在的物体位置。在训练过程中这些 proposal 会根据其与真实标注框ground truth, gt的交并比IoU进行标签分配。具体来说当 proposal 与 gt 的 IoU 大于等于 0.5 时该 proposal 被视为正样本当 IoU 落在 [0.1, 0.5) 区间时虽然与真实物体有一定的重叠但不足以被认定为正样本因此被标记为负样本而当 IoU 小于 0.1 时proposal 与真实物体几乎无重叠这类样本同样被标记为负样本但它们对于难例挖掘尤为关键。难例挖掘Hard Negative Mining是一种专门处理负样本中难以区分样本的技术。在目标检测任务中由于负样本数量通常远超过正样本直接训练可能会导致分类器偏向于将样本预测为负类从而忽视了一些与正样本相似但实际为负的困难样本。这些困难样本对模型的性能提升至关重要因为它们有助于增强模型对复杂背景、遮挡或形变等因素的识别能力。难例挖掘的核心思想是在保证正负样本比例均衡的前提下从负样本中筛选出那些最有可能被误判为正样本的困难样本并将其加入负样本集进行训练。具体操作如下 首先计算所有负样本在模型训练过程中的损失值。损失值反映了模型对样本的预测准确度损失值越大说明模型对该样本的预测越不准确即该样本越难区分。然后根据损失值对负样本进行排序从大到小选择损失值较高的前 K 个样本作为困难负样本。这里K 通常设置为正样本数量的几倍以确保正负样本之间的平衡。最后将这些筛选出的困难负样本与正样本一起用于模型的训练。通过这种方式模型能够更加关注那些难以区分的样本从而提高其整体性能。 Faster R-CNN 包含两个核心组件RPNRegion Proposal Networkhead 和 R-CNN head。RPN head 负责生成候选区域proposals而 R-CNN head 则对这些候选区域进行进一步的分类和回归以产生更精确的边界框bounding boxes。RPN head 的输出包含两部分分类和回归。分类部分执行二分类任务旨在区分前景即潜在的物体和背景。回归部分则仅针对前景样本正样本进行基于 anchor 的变换回归以调整 anchor 的位置和大小使其更接近真实的物体边界。R-CNN head 的输出同样包含分类和回归两部分。分类部分的输出是类别数加1其中1代表背景类用于预测物体的具体类别。回归部分则仅针对前景样本进行基于 ROI 的变换回归以产生更精确的边界框。R-CNN head 的目标是对 RPN 提取的 ROI 特征进行精细调整输出更加准确的边界框。在 Faster R-CNN 中正负样本的定义是基于 MaxIoUAssigner 的但 RPN 和 R-CNN 对于正负样本的阈值设置有所不同。正负样本的准确定义对于模型的训练至关重要。MaxIoUAssigner 的操作步骤如下 初始化阶段将每个 anchor 的 mask 设置为 -1表示所有 anchor 初始时均被视为忽略区域。计算每个 anchor 与所有真实标注框ground truth boxes的最大 IoU 值。如果某个 anchor 的最大 IoU 值小于负样本阈值neg_iou_thr则将其 mask 设置为 0标记为负样本背景样本。对于每个 anchor找到与其 IoU 值最大的 ground truth box。如果该最大 IoU 值大于或等于正样本阈值pos_iou_thr则将该 anchor 的 mask 设置为 1表示该 anchor 负责预测对应的 ground truth box是一个高质量的 anchor。由于可能存在某些 ground truth box 没有分配到对应的 anchor因为 IoU 值低于 pos_iou_thr因此需要进一步处理。对于每个 ground truth box找到与其 IoU 值最大的 anchor。如果该 IoU 值大于最小正样本 IoU 值min_pos_iou则将该 anchor 的 mask 设置为 1表示该 anchor 负责预测对应的 ground truth box。这一步确保了每个 ground truth box 都有至少一个 anchor 负责预测。如果仍然无法满足 min_pos_iou 的条件则将该 ground truth box 视为忽略样本。注意在步骤 3 和步骤 4 中某些 anchor 可能会被重复分配。例如当某个 anchor 的最大 IoU 值大于 pos_iou_thr 时它肯定也会大于 min_pos_iou。此时这两个步骤都会将该 anchor 标记为正样本。最终每个 ground truth box 可能与多个 anchor 匹配但每个 anchor 只能与一个 ground truth box 匹配。未被分配为正样本或负样本的 anchor 将被视为忽略区域不参与梯度的计算。这种最大分配策略确保了每个 ground truth box 都有合适的高质量 anchor 负责预测。由于 R-CNN head 的输入是 RPN head 输出的 ROI这些 ROI 与 ground truth box 的 IoU 值通常较高因此 R-CNN head 面临的是更高质量的样本。因此在 R-CNN head 中最小正样本 IoU 值min_pos_iou的阈值通常设置得较高。此外由于 pos_iou_thr 和 neg_iou_thr 在 R-CNN head 中通常也设置为较高的值如 0.5因此在实际操作中忽略区域的情况在 R-CNN head 中较为少见。在 Faster R-CNN 中存在大量的正负样本不平衡问题。为了解决这个问题可以采用正负样本采样或调整损失函数等方法。Faster R-CNN 默认采用正负样本采样策略进行平衡。RPN head 和 R-CNN head 的采样器都相对简单主要基于随机采样但阈值设置有所不同。此外为了稳定 R-CNN head 的训练过程特别是在网络训练的早期阶段通常会向 R-CNN head 添加一些 ground truth box 作为额外的正样本。在采样过程中如果正样本或负样本的数量不足可以全部保留这些样本。需要注意的是原始的 Faster R-CNN 使用的损失函数是交叉熵损失CE和 SmoothL1 损失这些损失函数本身并不直接解决正负样本不平衡的问题。因此在实际应用中可能需要结合其他策略如调整损失函数的权重来进一步平衡正负样本的影响。 熵是什么熵存在的意义是啥为什么叫熵这是3个非常现实的问题。答案非常明确在机器学习中熵是表征随机变量分布的混乱程度分布越混乱则熵越大在物理学上表征物质状态的参量之一也是体系混乱程度的度量熵存在的意义是度量信息量的多少人们常常说信息很多或者信息较少但却很难说清楚信息到底有多少这时熵的意义就体现出来了 自信息是熵的基础理解它对后续理解各种熵非常有用。自信息表示某一事件发生时所带来的信息量的多少当事件发生的概率越大则自信息越小或者可以这样理解某一事件发生的概率非常小但是实际上却发生了(观察结果)则此时的自信息非常大某一事件发生的概率非常大并且实际上也发生了则此时的自信息较小。现在要寻找一个函数它要满足的条件是事件发生的概率越大则自信息越小自信息不能是负值最小是0自信息应该满足可加性并且两个独立事件的自信息应该等于两个事件单独的自信息。下面给出自信息的具体公式 I ( p i ) − l o g ( p i ) I(p_i)-log(p_i) I(pi​)−log(pi​) 其中 p i p_i pi​ 表示随机变量的第 i 个事件发生的概率自信息单位是bit,表征描述该信息需要多少位。可以看出自信息的计算和随机变量本身数值没有关系只和其概率有关同时可以很容易发现上述定义满足自信息的3个条件。 信息熵通常用来描述整个随机分布所带来的信息量平均值更具统计特性。信息熵也叫香农熵在机器学习中由于熵的计算是依据样本数据而来故也叫经验熵。其公式定义如下 H ( x ) − ∑ i 1 n ( p ( x i ) l o g p ( x i ) ) − ∫ x p ( x ) l o g p ( x ) d x H(x)-\sum_{i1}^n(p(x_i)logp(x_i))-\int_x p(x)logp(x)dx H(x)−i1∑n​(p(xi​)logp(xi​))−∫x​p(x)logp(x)dx 从公式可以看出信息熵H(X)是各项自信息的累加值由于每一项都是整正数故而随机变量取值个数越多状态数也就越多累加次数就越多信息熵就越大混乱程度就越大纯度越小。越宽广的分布熵就越大在同样的定义域内由于分布宽广性中脉冲分布高斯分布均匀分布故而熵的关系为脉冲分布信息熵高斯分布信息熵均匀分布信息熵。熵代表了随机分布的混乱程度这一特性是所有基于熵的机器学习算法的核心思想。推广到多维随机变量的联合分布其联合信息熵为 H ( X , Y ) − ∑ i 1 n ∑ j 1 m p ( x i , y j ) l o g ( x i , y j ) H(X,Y)-\sum_{i1}^n\sum_{j1}^mp(x_i,y_j)log(x_i,y_j) H(X,Y)−i1∑n​j1∑m​p(xi​,yj​)log(xi​,yj​) 熵只依赖于随机变量的分布,与随机变量取值无关定义0log00(因为可能出现某个取值概率为0的情况)熵越大,随机变量的不确定性就越大,分布越混乱随机变量状态数越多。 条件熵的定义为在X给定条件下Y的条件概率分布的熵对X的数学期望。 H ( Y ∣ X ) H ( X , Y ) − H ( X ) ∑ i 1 n p ( x ) H ( Y ∣ X x ) H(Y|X)H(X,Y)-H(X)\sum_{i1}^np(x)H(Y|Xx) H(Y∣X)H(X,Y)−H(X)i1∑n​p(x)H(Y∣Xx) 交叉熵广泛用在逻辑回归的Sigmoid和softmax函数中作为损失函数使用softmax只是对sigmoid在多分类上面的推广。其主要用于度量两个概率分布间的差异性信息由于其和相对熵非常相似。p对q的交叉熵表示q分布的自信息对p分布的期望公式定义为 H ( p , q ) − ∑ i 1 n p ( x ) l o g q ( x ) H(p,q)-\sum_{i1}^np(x)logq(x) H(p,q)−i1∑n​p(x)logq(x) 其中。p是真实样本分布q是预测得到样本分布。在信息论中其计算的数值表示如果用错误的编码方式q去编码真实分布p的事件需要多少bit数是一种非常有用的衡量概率分布相似性的数学工具。 相对熵的作用和交叉熵差不多。相对熵经常也叫做KL散度在贝叶斯推理中 D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL​(p∣∣q) 衡量当你修改了从先验分布 q 到后验分布 p 的之后带来的信息增益*。*首先给出其公式 D K L ( p ∣ ∣ q ) − ∑ i 1 n p ( x ) q ( x ) p ( x ) H ( p , q ) − H ( p ) D_{KL}(p||q)-\sum_{i1}^np(x)\frac{q(x)}{p(x)}H(p,q)-H(p) DKL​(p∣∣q)−i1∑n​p(x)p(x)q(x)​H(p,q)−H(p) 相对熵较交叉熵有更多的优异性质主要为当p分布和q分布相等时候KL散度值为0这是一个非常好的性质非对称的通过公式可以看出KL散度是衡量两个分布的不相似性不相似性越大则值越大当完全相同时取值为0。简单对比交叉熵和相对熵可以发现仅仅差了一个H§如果从优化角度来看p是真实分布是固定值最小化KL散度情况下H§可以省略此时交叉熵等价于KL散度。 最大化似然函数等价于最小化负对数似然等价于最小化交叉熵等价于最小化KL散度。 互信息可以评价两个分布之间的距离这主要归因于其对称性假设互信息不具备对称性那么就不能作为距离度量例如相对熵由于不满足对称性故通常说相对熵是评价分布的相似程度而不会说距离。互信息的定义为一个随机变量由于已知另一个随机变量而减少的不确定性或者说从贝叶斯角度考虑由于新的观测数据 y 到来而导致 x 分布的不确定性下降程度。公式如下 I ( X , Y ) H ( X ) − H ( X ∣ Y ) H ( Y ) − H ( Y ∣ X ) H ( X ) H ( Y ) − H ( X , Y ) H ( X , Y ) − H ( X ∣ Y ) − H ( Y ∣ X ) \begin{aligned}I(X,Y)H(X)-H(X|Y)\\ H(Y)-H(Y|X)\\ H(X)H(Y)-H(X,Y)\\ H(X,Y)-H(X|Y)-H(Y|X) \end{aligned} I(X,Y)​H(X)−H(X∣Y)H(Y)−H(Y∣X)H(X)H(Y)−H(X,Y)H(X,Y)−H(X∣Y)−H(Y∣X)​ 互信息和相对熵也存在联系如果说相对熵不能作为距离度量是因为其非对称性那么互信息的出现正好弥补了该缺陷使得我们可以计算任意两个随机变量之间的距离或者说两个随机变量分布之间的相关性、独立性。互信息也是大于等于0的当且仅当x与y相互独立时候取等号。 retinanet的网络结构。主要特点是(1) 多尺度预测输出(2) 采用FPN结构进行多层特征图融合。 网络进行多尺度预测尺度一共是5个每个尺度共享同一个head结构但是分类和回归分支是不共享权重的。FocalLoss是本文重点是用于处理分类分支中大量正负样本不平衡问题或者说大量难易样本不平衡问题。 作者首先也深入分析了OHEM的不足它通过对loss排序选出loss最大的example来进行训练这样就能保证训练的区域都是hard example这个方法的缺陷是把所有的easy example(包括easy positive和easy negitive)都去除掉了造成easy positive example无法进一步提升训练的精度(表现的可能现象是预测出来了但是bbox不是特别准确)而且复杂度高影响检测效率。 故作者提出一个简单且高效的方法Focal Loss焦点损失函数用于替代OHEM功能是一样的需要强调的是FL本质上解决的是将大量易学习样本的loss权重降低但是不丢弃样本突出难学习样本的loss权重但是因为大部分易学习样本都是负样本所以顺便解决了正负样本不平衡问题。 其是根据交叉熵改进而来本质是dynamically scaled cross entropy loss直接按照loss decay掉那些easy example的权重这样使训练更加bias到更有意义的样本中去说通俗点就是一个解决分类问题中类别不平衡、分类难度差异的一个 loss。 C E ( p t ) − l o g ( p t ) F L ( p t ) − ( 1 − p t ) γ l o g ( p t ) CE(p_t)-log(p_t)\\ FL(p_t)-(1-p_t)^\gamma log(p_t) CE(pt​)−log(pt​)FL(pt​)−(1−pt​)γlog(pt​) 公式表示label必须是one-hot形式。只看图示就很好理解了对于任何一个类别的样本本质上是希望学习的概率为1当预测输出接近1时候该样本loss权重是很低的当预测的结果越接近0该样本loss权重就越高。而且相比于原始的CE这种差距会进一步拉开。由于大量样本都是属于well-classified examples故这部分样本的loss全部都需要往下拉。 FCOS堪称anchor free论文的典范因为其结构主流思路简单清晰效果蛮好故一直是后续anchor free的基准对比算法。FCOS的核心是将输入图像上的位置作为anchor point的中心点并且对这些anchor point进行回归。fcos的骨架和neck部分是标准的 resnetfpn 结构和retinanet完全相同。FCOS是全卷积预测模式对于cls分支输出是h * w * (class1)每个空间位置值为1表示该位置有特定类别的 gt bbox对于回归分支输出是h * w * 4其4个值的含义是 每个点回归的4个数代表距离4条边的距离非常简单易懂。 和所有目标检测算法一样需要提前定义好正负样本同时由于是多尺度预测输出还需要首先考虑 gt 由哪一个输出层具体负责。 作者首先设计了 min_size 和 max_size 来确定某个 gt 到底由哪一层负责具体设置是 0, 64, 128, 256, 512 和无穷大也就是说对于第1个输出预测层而言其stride8负责最小尺度的物体对于第1层上面的任何一个空间位置点如果有 gt bbox 映射到特征图上满足0 max(中心点到4条边的距离) 64那么该 gt bbox 就属于第1层负责其余层也是采用类似原则。总结来说就是第1层负责预测尺度在0~64范围内的gt第2层负责预测尺度在64~128范围内的gt其余类推。通过该分配策略就可以将不同大小的 gt 分配到最合适的预测层进行学习。需要确定在每个输出层上面哪些空间位置是正样本区域哪些是负样本区域。原版的fcos的正负样本策略非常简单粗暴在bbox区域内的都是正样本其余地方都是负样本而没有忽略样本区域。可想而知这种做法不友好因为标注本身就存在大量噪声如果bbox全部区域都作为正样本那么bbox边沿的位置作为正样本负责预测是难以得到好的效果的显然是不太靠谱的(在文本检测领域都会采用 shrink 的做法来得到正样本区域)所以后面又提出了center sampling的做法来确定正负样本具体是引入了center_sample_radius(基于当前stride参数)的参数用于确定在半径范围内的样本都属于正样本区域其余区域作为负样本依然没有定义忽略样本。默认配置center_sample_radius1.5如果第1层为例其stride8那么也就是说在该输出层上对于任何一个gt基于gt bbox中心点为起点在半径为1.5*812个像素范围内都属于正样本区域。肯定存在大量正负样本不平衡问题故作者对于分类分支采用了one-stage常用的focal loss对于bbox回归问题由于很多论文表明直接优化bbox比单独优化4个值更靠谱故作者采用了GIOU loss来回归4个值对于center-ness分支采用的是CrossEntropyLoss当做分类问题处理。center-ness作用比较大从上面的正负样本定义就可以看出来如果没有center-ness对于所有正样本区域其距离bbox中心不同远近的loss权重居然是一样的这明显是违反直觉的理论上应该越是远离 Bbox 中心的空间位置其权重应该越小作者实验也发现如果没有center-ness分支会产生大量假正样本导致很多虚检。center-ness本质就是对正样本区域按照距离gt bbox中心来设置权重。 centernet也是非常流行的anchor-free论文其核心是一些场景的cv任务例如2d目标检测、3d目标检测、深度估计和关键点估计等等任务都可以建模成以物体中心点学习外加上在该中心点位置处额外学习一些各自特有属性的通用做法。对于目标检测可以将bbox回归问题建模成学习bbox中心点bbox宽高问题。 centernet的输出也非常简单其相比较于FCOS等算法使用更大分辨率的输出特征图(缩放了4倍)本质上是因为其采用关键点检测思路做法而关键点检测精度要高通常是需要输出高分辨率特征图同时不需要多尺度预测。其输出预测头包含3个分支分别是 分类分支h’ * w’ * (c1)如果某个特定类的gt bbox的中心点落在某个位置上那么该通道的对应位置值设置为1其余为0offset分支h’ * w’ * 2,用于学习量化偏差图像下采样时gt bbox的中心点会因数据是离散的而产生偏差例如gt bbox的中心点坐标是101而由于输入和输出相差4倍导致gt bbox映射到特征图上坐标由25.25量化为了25这就出现了101-25x41个pix的误差如果下采样越大那么量化误差会越大故可以使用offset分支来学习量化误差这样可以提高预测精度。宽高分支h’ * w’ * 2,表示gt bbox的宽高。由于objects as points的建模方式和FCOS的建模方式不一样故centernet的正负样本定义就会产生很大区别。主要是宽高分支的通道数是2而不是4也就是说其输入到宽高分支的正样本其实会非常少必须是gt bbox的中心位置才是正样本左右偏移位置无法作为正样本也没有啥忽略样本的概念这个是和FCOS的最大区别。由于centernet特殊的建模方式故其正负样本定义特别简单不需要考虑多尺度、不需要考虑忽略区域也不用考虑iou正样本定义就是某个gt bbox中心落在哪个位置上那么那个位置就是正样本其余位置全部是负样本。对于centernet其正负样本定义非常简单可以看出会造成极其严重的正负样本不平衡问题然后也无法像two-stage算法一样设计正负样本采样策略那么平衡问题就必须要在loss上面解决。 对于offset和宽高预测分支其只对正样本位置进行监督故核心设计就在平衡分类上面。 对于分类平衡loss首选肯定是focal loss了但是还不够focal loss的核心是压制大量易学习样本的权重但是由于我们没有设置忽略区域在正样本附近的样本实际上非常靠近正样本如果强行设置为0背景来学习那其实相当于难负样本focal loss会突出学这部分区域导致loss难以下降、不稳定同时也是没有必要的因为我们的label虽然是0或者1的但是在前向后处理时候是当做高斯热图(0~1之间呈现2d高斯分布特点)来处理的我们学到最后的输出只要满足gt bbox中心值比附近区域大就行不一定要学习出0或者1的图。基于上述设定在不修改分类分支label的情况下在使用focal loss的情况下作者的做法是对正样本附近增加惩罚基于2d高斯分布来降低这部分权重相当于起到了类似于忽略区域的作用。可以简单认为是focal focal loss。宽高和offset的监督仅仅在gt bbox中心位置其余位置全部是忽略区域。这种做法其实很不鲁棒也就是说bbox性能其实完全靠分类分支如果分类分支学习的关键点有偏差那么由于宽高的特殊监督特性可能会导致由于中心点定位不准而带来宽高不准的情况(特别的如果中心点预测丢失了那么宽高预测再准也没有用) anchor-free和anchor-base算法的本质区别是啥性能为啥不一样最终结论是其本质区别就在于正负样本定义不同。只要我们能够统一正负样本定义方式那么anchor-free和anchor-base就没有啥实际区别了性能也是非常一致的。要想彻底理解不同目标检测算法的区别那么对于正负样本定义必须要非常清楚。从point回归就是指的每个点预测距离4条边的距离模式而从anchor回归是指的retinanet那种基于anchor回归的模式。 retinanet和fcos的正负样本定义策略的不同首先这两个算法都是多尺度预测的故其实都包括两个步骤gt分配给哪一层负责预测gt分配给哪一个位置anchor负责预测。retinanet完全依靠统一的iou来决定哪一层哪一个位置anchor负责预测而fcos显式的分为两步先利用scale ratio来确定gt分配到哪一层然后利用center sampling策略来确定哪些位置是正样本。RetinaNet在特征图上每个点铺设多个anchor而FCOS在特征图上每个点只铺设一个中心点这是数量上的差异。RetinaNet基于anchor和GT之间的IoU和设定的阈值来确定正负样本而FCOS通过GT中心点和铺设点之间的距离和尺寸来确定正负样本。 RetinaNet通过回归矩形框的2个角点偏置进行预测框位置和大小的预测而FCOS是基于中心点预测四条边和中心点的距离进行预测框位置和大小的预测。这1点可以从下图的对比中看到蓝色框和点表示GT红色框表示RetinaNet的正样本红色点表示FCOS的正样本。首先将RetinaNet在每个点铺设的anchor数量减少到1也就是和FCOS保持一致。 对于retinanet算法正负样本定义采用iou阈值,回归分支采用原始的anchor变换回归模式(box)mAP37.0采用fcos的point模式是36.9说明到底是point还是box不是关键因素。但是如果换成fcos的正负样本定义模式mAP就可以上升为37.8和fcos一致了说明正负样本定义的不同是决定anchor-base和anchor-free的本质区别。fcos的正负样本定义策略比retinanet好但是fcos算法需要定义超参scale constraint比较麻烦作者希望找到一种和fcos类似功能的正负样本定义算法主要特定是几乎没有超参或者说对超参不敏感可以自适应故作者提出ATSS算法。 对于每个输出的检测层选计算每个anchor的中心点和目标的中心点的L2距离选取K9个anchor中心点离目标中心点最近的anchor为候选正样本candidate positive samples计算每个候选正样本和groundtruth之间的IOU计算这组IOU的均值和方差根据方差和均值设置选取正样本的阈值tmg m为均值g为方差。均值(所有层的候选样本算出一个均值)代表了anchor对gt衡量的普遍合适度其值越高代表候选样本质量普遍越高iou也就越大而方差代表哪一层适合预测该gt bbox方差越高越能区分层和层之间的anchor质量差异。均值和方差相加就能够很好的反应出哪一层的哪些anchor适合作为正样本。一个好的anchor设计应该是满足高均值、高方差的设定。根据每一层的t从其候选正样本中选出真正需要加入训练的正样本 Soft Anchor-Point Object Detection算法首先针对当前anchor-free方法的两大问题——attention bias和feature selection——提出了创新的soft策略。其核心在于对正负样本定义策略的精细化调整。该算法遵循anchor point类算法的基本框架即每个点学习其到四条边界的距离这与densebox算法流程相似但与FCOS算法有所区别。主要差异体现在1未采用center-ness分支2正样本区域的定义采用了四条边界向内收缩的方法而非center sampling。 Attention bias关注的是特定输出层内正负样本的界定问题而feature selection则着眼于不同输出层间正负样本的划分。传统的正负样本定义方式往往是hard的而本文提出的解决策略是soft的。对于特定输出层内的soft正负样本定义作者通过引入类似于center-ness的权重实现了对损失函数的优化。对于不同输出层间的soft正负样本定义作者则采用了网络自动学习soft权重的方法。在输出层内的hard正负样本定义上作者仍采用了与FCOS相似的策略但正样本区域是通过边界向内收缩得到的而非center sampling。在输出层间的hard正负样本定义上作者摒弃了FCOS的分配策略提出了创新的soft代替hard的方法。本文不再预先设定某一输出层负责特定gt bbox的回归而是允许每一层都参与所有gt bbox的回归并通过网络自主学习金字塔层级的权重。为了学习金字塔权重作者设计了一个简单的网络。该网络利用gt bbox映射到对应的特征图层通过roialign层提取特征并使用一个简单的分类器输出每个层级的权重。由于金字塔层数为5因此全连接层的输出维度也为5。在label设置上作者借鉴了FSAFFeature Selective Anchor-Free Module for Single-Shot Object Detection的思想即不再人为指定哪一层负责预测GT而是根据loss最小的原则动态选择最合适的层。本文的meta选择网络并非预先计算独热码label而是根据输出softmax层的值或loss来动态选择。具体来说哪个输出节点的loss最小则将其label设置为1其余为0。整个meta选择网络与目标检测网络联合训练。对于特定输出层内的soft正负样本定义问题作者通过引入类似于center-ness的权重来解决。这种权重设计对距离gt bbox中心点进行惩罚中心点的权重最大往外依次减少。这种设计与centernet中的权重设置有所不同。在centernet中focal loss的权重设置在半径范围内离中心点越近权重越小往外依次增加而本文的设计则是离中心点越近权重越大往外依次减少。这种差异源于label设计规则的不同。在centernet中除了中心点是正样本外其余均为负样本而本文中不仅中心点是正样本收缩区域附近的点也被视为正样本。因此本文的权重设置规则与centernet相反。通过这种设计特定层内的正负样本定义由原先的hard变为了soft而在层级间原先的正负样本定义是硬性的即只分配到特定层其余层均为0现在则引入了soft操作权重由网络自主学习得到。 Guided Anchoringanchor-base的做法都需要预设anchor特别是对于one-stage而言anchor设置的好坏对结果影响很大因为anchor本身不会改变所有的预测值都是基于anchor进行回归一旦anchor设置不太好那么效果肯定影响很大。而对于two-stage而言好歹还有一个rcnn层其可以对RPN的输出roi(动态anchor)进行回归看起来影响稍微小一点。 不管是one stage还是two-stage不管咋预测肯定都是基于语义信息来预测的在bbox内部的区域激活值肯定较大这种语义信息正好可以指导anchor的生成也就是本文的出发点通过图像特征来指导 anchor 的生成。通过预测 anchor 的位置和形状来生成稀疏而且形状任意的 anchor。 可以发现此时的anchor就是动态的了。 如果将faster rcnn进行改造将RPN层替换为ga层那肯定也是可以的如果将retinanet或者yolo的预测层替换为ga那其实就完全变成了anchor-free了。但是作者采用了一种更加优雅的实现方式其采用了一种可以直接插入当前anchor-base网络中进行anchor动态调整的做法而不是替换掉原始网络结构属于锦上添花从此anchor-base就变成了anchor-base混合anchor-free了(取长补短)这就是一个不错的进步。 以retinanet为例但是可以应用于所有anchor-base论文中。 核心操作就是在预测xywh的同时新增两条预测分支一条分支是loc(batch,anchor_num * 1,h,w)用于区分前后景目标是预测哪些区域应该作为中心点来生成 anchor是二分类问题这个非常好理解另一条分支是shape(batch,anchor_num * 2, h,w),用于预测anchor的形状。 一旦训练好了那么应该anchor会和语义特征紧密联系。对于任何一层都会输出4条分支分别是anchor的loc_predsanchor的shape_preds原始retinanet分支的cls_scores和bbox_preds。使用阈值将loc_preds预测值切分出前景区域然后提取前景区域的shape_preds然后结合特征图位置concat得到4维的guided_anchors(x,y,w,h)此时的guided_anchors就相当于retinanet里面的固定anchor了然后和原始retinanet流程完全相同基于guided_anchors和cls_scores、bbox_preds分支就可以得到最终的bbox预测值了。anchor的定位模块就是个二分类问题希望学习出前景区域。这个分支的设定和大部分anchor-free的做法是一样的(例如fcos)。首先对每个gt,利用FPN中提到的roi重映射规则将gt映射到不同的特征图层上定义中心区域和忽略区域比例将gt落在中心区域的位置认为是正样本忽略区域是忽略样本(模糊样本)其余区域是背景负样本这种设定规则很常用采用focal loss进行训练loc_shape分支的目标是给定 anchor 中心点预测最佳的长和宽这是一个回归问题。首先预测宽高那肯定是回归问题采用 l1 或者 smooth l1 就行了关键是label是啥还有哪些位置计算Loss?我们知道retinanet计算bbox 分支的target算法就是利用MaxIoUAssigner来确定特征图的哪些位置anchor是正样本然后将这些anchor进行bbox回归。现在要预测anchor的宽高当然也要确定这个问题。第一个问题如何确定特征图的哪些位置是正样本区域注意作者采用的anchor个数其实是1(作者觉得既然是动态anchor那么个数其实影响不会很大设置为1是可以的错)也就是说问题被简化了只要确定每个特征图的每个位置是否是正样本即可。要解决这个问题其实非常容易做法非常多完全可以按照anchor-free的做法即可例如FOCS其实就是loc_preds分支如何确定正负样本的做法即可确定中心区域和忽略区域。将中心区域的特征位置作为正样本然后直接优化预测输出的anchor shape和对应gt的iou即可。但是论文没有这么做我觉得直接按照fcos的做法来确定正样本区域然后回归shape是完全可行。本文做法是采用了ApproxMaxIoUAssigner来确定的ApproxMaxIoUAssigner和MaxIoUAssigner非常相似仅仅多了一个Approx其核心思想是利用原始retinanet的每个位置9个anchor设定计算9个anchor和gt的iou然后在9个anchor中采用max操作选出每个位置9个iou中最高的iou值然后利用该iou值计算后续的MaxIoUAssigner此时就可以得到每个特征图位置上哪些位置是正样本了。简单来说ApproxMaxIoUAssigner和MaxIoUAssigner的区别就仅仅是ApproxMaxIoUAssigner多了一个将9个anchor对应的iou中取最大iou的操作而已。对于第二个问题正样本位置对应的shape target是啥其实得到了每个位置匹配的gt那么对应的target肯定就是Gt值了。 FPN操作是一个非常常用的用于对付大小尺寸物体检测的办法作者指出FPN的缺点是不同尺度之间存在语义gap举例来说基于iou准则某个gt bbox只会分配到某一个特定层而其余层级对应区域会认为是背景(但是其余层学习出来的语义特征其实也是连续相似的并不是完全不能用的)如果图像中包含大小对象则不同级别的特征之间的冲突往往会占据要素金字塔的主要部分这种不一致会干扰训练期间的梯度计算并降低特征金字塔的有效性。一句话就是目前这种concat或者add的融合方式不够科学。本文觉得应该自适应融合自动找出最合适的融合特征。 简要思想就是原来的FPN add方式现在变成了add基础上多了一个可学习系数该参数是自动学习的可以实现自适应融合效果类似于全连接参数。 ASFF具体操作包括 identically rescaling和adaptively fusing。 定义FPN层级为 l为了进行融合对于不同层级的特征都要进行上采样或者下采样操作用于得到同等空间大小的特征图上采样操作是1x1卷积进行通道压缩然后双线性插值得到下采样操作是对于1/2特征图是采样3 × 3 convolution layer with a stride of 2对于1/4特征图是add a 2-stride max pooling layer然后引用stride 卷积。首先对于第 l 级特征图输出c * h * w对其余特征图进行上下采样操作得到同样大小和channel的特征图方便后续融合对处理后的3个层级特征图输出输入到1*1*n的卷积中(n是预先设定的)得到3个空间权重向量每个大小是n*h*w。然后通道方向拼接得到3n*h*w的权重融合图为了得到通道为3的权重图对上述特征图采用1*1*3的卷积得到3*h*w的权重向量。在通道方向softmax操作进行归一化将3个向量乘加到3个特征图上面得到融合后的c*h*w特征图。 由于GA论文(Region proposal by guided anchoring)指出采用语义向导式的anchor策略可以得到更好的结果故作者也引入了GA操作来提升性能。 可以看出结合这些策略后在coco上面可以得到38.8的mAP速度仅仅慢了一点点(多了GA操作),可谓是非常强大这也反应出训练策略对最终性能的影响非常大。在anchor设置不合理时候动态引导anchor预测分支得到更好的anchor在anchor设置合理时候可以加速收敛且可以进一步refine 默认anchor
http://www.w-s-a.com/news/165268/

相关文章:

  • 襄阳市做网站 优帮云百度搜索次数统计
  • 自己做视频直播网站盐城做网站多少钱
  • 买个网站服务器多少钱重庆做的好的房产网站
  • 深圳定制建站网站建设推广关键词怎么设置
  • 宝山网站建设 网站外包修改wordpress版权
  • 建立网站的基本步骤新网站多久会被百度收录
  • 软件设计开发流程图廊坊关键词seo排名方案
  • 南山住房和建设局网站网站被k 多久恢复
  • 阿里买域名 电脑做网站做简历哪个网站好
  • 个人网站免费服务器单页网站的域名
  • 网站设计简单讲解小店怎么做网站
  • 校园网站的意义wordpress去除更新
  • 网站开发用python吗常用的网页开发工具有哪些
  • 北京市住房建设投资建设网站做商城网站要哪些流程
  • seo网站改版杭州建设局官网
  • 物流网站建设策划书泰然建设网站
  • 百度做网站的费用采集发布wordpress
  • 网站运维公司有哪些防录屏网站怎么做
  • 昆明做网站seo的网站制作专业
  • 聊城制作手机网站公司wordpress 头条
  • 商城微网站模板一般电商网站做集群
  • winserver2008上用iis发布网站嵊州网站制作
  • 网站内页权重怎么查辽宁建设工程信息网怎么上传业绩
  • 丰都网站建设价格镇江网站制作费用
  • app手机网站建设黄网站建设定制开发服务
  • 百度网盘app下载徐州优化网站建设
  • 附近网站电脑培训班展台设计方案介绍
  • 河南便宜网站建设价格低上海高端室内设计
  • 保险网站有哪些平台wordpress会员vip购买扩展
  • 网站怎么做图片转换广州车陂网站建设公司