IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 目标检测中对与Retinanet和Focal Loss的解析 -> 正文阅读

[人工智能]目标检测中对与Retinanet和Focal Loss的解析

Retinanet

2017年前,最先进的的对象检测器基于two-stage,proposal-driven的机制(典型如R-CNN),第一阶段生成大量候选框,第二阶段使用CNN将每个候选框分为目标类别或北京。论文Focal Loss for Dense Object Detection提出了one-stage的检测器,使得one-stage网络首次与two-stage网络相匹配甚至超越。

为了实现此目标,论文将训练时类别不均衡视作主要问题,并针对此问题提出了focal loss

To achieve this result, we identify class imbalance during training as the main obstacle impeding one-stage detector from achieving state-of-the-art accuracy and propose a new loss function that eliminates this barrier.

Rerinanet是一个单一的统一 网络,由一个backbone网络和两个特定任务的子网络组成。backbone负责计算输入图像的卷积特征图,其中一个子网负责对backbone的输出执行卷积对象分类,另一个子网负责执行卷积边界框回归。

The backbone is responsible for computing a convolutional feature map over an entire input image and is an off-the-self convolutional network. The ?rst subnet performs convolutional object classi?cation on the backbone’s output; the second subnet performs convolutional bounding box regression.

Retinanet网络结构

backbone

Retinanet的backbone结构

上图为Retinanet的backbone结构,同样采用了FPN的结构,金字塔的每一层都可以检测不同比例的物体。其中的不同与传统FPN的点在于原FPN中会使用C2来生成P2,而在Retinanet中并没有这样做,其给出的理由是P2会占用更多的计算资源;在原FPN中,P6是经过了一个最大池化下采样层进行下采样的,而这里则通过卷积层得到;同时,在Retinanet中,多出的P7经过一个ReLU激活函数,在经过一个卷积层后得到的。

anchors

在Rerinanet中,作者使用平移不变的anchor,并针对每一个特征层,使用了三个scale和三个ratio,也就是九组anchor。

anchors

对于P3,第一类anchor使用 3 2 2 ? 2 0 32^2*2^{0} 322?20的面积,第二类anchor使用 3 2 2 ? 2 1 3 32^2*2^{\dfrac{1}{3}} 322?231?的面积,第三类anchor使用 3 2 2 ? 2 2 3 32^2*2^{\dfrac{2}{3}} 322?232?的面积,对于每一类anchor,使用1:2,1:1,2:1的ratio,于是对于每一个特征层,就有9个anchor。P4,P5,P6,P7同理。这好比把一张图像使用不同大小的网格进行划分,然后在不同大小的网格中预测目标。这些anchor覆盖了图中32-812的像素。

subnet

两个子网

Retinanet的子网其实和Faster RCNN的类似,分别是目标分类和目标边界框框回归参数。
对于class subnet,使用四个33大小的卷积层,并在后面紧跟一个ReLU激活,最后是具有KA滤波器的33卷积层,K为监测目标类别数(不包括背景),A为anchor个数,等于9。
对于box subnet,它俩共用一个公共结构,但使用不同的参数,最后是C=4A的卷积层。(传统faster RCNN是4KA即每一个anchor对于每种类别都生成一组边界框回归参数,但这里使用类别不可知的预测方式)

Focal Loss

Focal Loss用于解决one-stage目标检测阶段场景中,在训练时前景和背景类别之间存在极端不平衡的问题。简单来说,这和我们生成的众多候选框有关,one-stage目标检测算法常常将输入图片划分成不同大小的网格(如上所说),而每个网格又包含了若干个候选框,因此生成了非常多的候选框,但可能只有少数几个候选框是真实包含目标的,这几个真实包含目标的候选框就是正样本,其他的为负样本,这导致了训练时正负样本极度不平衡。

Focal Loss提出了一种利用权重的方法来控制正负样本,分为两种方式:

  • 控制正负样本的权重
  • 控制容易分类和难分类样本的权重

控制正负样本的权重

常用交叉熵为
C E ( p , y ) = ? ( y ? l o g ( p ) + ( 1 ? y ) ? l o g ( 1 ? p ) ) CE(p,y)=-(y* log(p) +(1-y)*log(1-p) ) CE(p,y)=?(y?log(p)+(1?y)?log(1?p))
也可以写成
C E ( p , y ) = C E ( p t ) = ? l o g ( p t ) CE(p,y)=CE(p_t)=-log(p_t) CE(p,y)=CE(pt?)=?log(pt?)
其中
p t = { p i f ? y = 1 1 ? p o t h e r w i s e p_t= \begin{cases} p & if\ y=1 \\ 1 - p & otherwise \end{cases} pt?={p1?p?if?y=1otherwise?
在此不再赘述。想要降低负样本的影响,可以在常规的损失函数前增加一个系数α∈ [0, 1],与 p t p_t pt?类似,当label=1时, α t = α α_t=α αt?=α,当lable=otherwise时, α t = 1 ? α α_t=1-α αt?=1?α,此时我们便可以通过设置α实现控制正负样本对loss的贡献
C E ( p t ) = ? α t l o g ( p t ) CE(p_t)=-α_tlog(p_t) CE(pt?)=?αt?log(pt?)
其中
α t = { α i f ? y = 1 1 ? α o t h e r w i s e α_t= \begin{cases} α & if\ y=1 \\ 1 - α & otherwise \end{cases} αt?={α1?α?if?y=1otherwise?
分解开则为
C E ( p , y , α ) = { ? l o g ( p ) ? α i f ? y = 1 ? l o g ( 1 ? p ) ? ( 1 ? α ) i f ? y = 0 CE(p,y,α)= \begin{cases} -log(p)*α & if\ y=1\\ -log(1-p)*(1-α) & if\ y=0 \end{cases} CE(p,y,α)={?log(p)?α?log(1?p)?(1?α)?if?y=1if?y=0?
由此我们可以知道,当α为0-0.5之间时,意味着我们可以降低正样本的loss权重而增加负样本的权重,反过来同理。因此通过改变α的值我们就可以改变正负样本的权重了。

控制容易分类和难分类样本的权重

对于一个样本,其是某个类的概率 p t p_t pt?越大,其越容易分类,所以利用 1 ? p t 1-p_t 1?pt?就可以计算出其属于容易分类或那分类,容易分类权重小,难分类权重大。
F L ( p t ) = ? ( 1 ? p t ) γ l o g ( p t ) FL(p_t ) = ?(1 ? p_t )^γ log(p_t ) FL(pt?)=?(1?pt?)γlog(pt?)
其中 ( 1 ? p t ) γ (1 ? p_t )^γ (1?pt?)γ为调制系数。
p t p_t pt?趋于0时,调制系数趋于1,对总的loss贡献大,反之贡献小

两种权重控制方法合并

当两种方法合并,就是论文所提出的Focal Loss:
F L ( p t ) = ? α t ( q ? p t ) γ l o g ( p t ) FL(p_t)=-α_t(q-p_t)^γlog(p_t) FL(pt?)=?αt?(q?pt?)γlog(pt?)


  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:52:59  更:2022-09-30 00:57:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:48:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码