当前位置: 代码迷 >> 综合 >> YOLO系列:YOLO V3模型讲解
  详细解决方案

YOLO系列:YOLO V3模型讲解

热度:94   发布时间:2023-10-11 15:51:57.0

YOLO系列:YOLO V3模型讲解

  • 论文标题:YOLO V3:An Incremental Improvement (CVPR 2018)
  • 效果(COCO 数据集):
    YOLO系列:YOLO V3模型讲解
  1. 模型结构:(DarkNet-53有53个卷积层)
    YOLO系列:YOLO V3模型讲解
    使用卷积层代替了最大池化下采样层,DarkNet-53卷积核的个数比ResNet也少很多。
    效果对比:
    YOLO系列:YOLO V3模型讲解
    DarkNet 53检测效果和ResNet152基本持平,但检测速度慢了两倍。
  • 使用K-means 聚类算法得到了先验框的尺度,文章选择了9个聚类,3个尺度,也就是在每个预测特征图上会预测三种尺度的先验框。每个预测特征图上会有N×N×[3?(4+1+80)]N \times N \times [3 * (4+1+80)]N×N×[3?(4+1+80)] (N表示特征图大小,80表示COCO数据集中的80个类别的分数信息,4表示坐标(txt_xtx?,tyt_yty?,twt_wtw?,tht_hth?), 1表示置信度。)
特征图层 特征图大小 预设边界框尺寸 预设边界框数量
特征图层1 13 ×\times× 13 (116 ×\times× 90);(156 ×\times× 198);(373 ×\times× 326) 13 ×\times× 13 ×\times× 3
特征图层2 26 ×\times× 26 (30 ×\times× 61);(62 ×\times× 45);(59 ×\times× 119) 26 ×\times× 26 ×\times× 3
特征图层3 52 ×\times× 52 (10 ×\times× 13);(16 ×\times× 30);(33 ×\times× 23) 52 ×\times× 52 ×\times× 3

YOLO系列:YOLO V3模型讲解

  • Bounding box计算:
    YOLO系列:YOLO V3模型讲解
  • 正负样本匹配:每个groundtruth 都分配一个bounding box prior,分配原则-将与gt重合最大的作为正样本,如果不是最大但是大于某个值,则丢弃这些预测框(文章设置阈值为0.5),剩下的样本为负样本。如果一个bounding box prior不是正样本那么就不再计算它的定位 损失和类别损失,仅计算confidence score。
  • 损失计算:(置信度损失+分类损失+定位损失)
    L(o,c,O,C,l,g)=λ1Lconf(o,c)+λ2Lcla(O,C)+λ3Lloc(l,g)L(o,c,O,C,l,g) = \lambda_1L_{conf}(o,c) + \lambda_2L_{cla}(O,C) + \lambda_3L_{loc}(l,g)L(o,c,O,C,l,g)=λ1?Lconf?(o,c)+λ2?Lcla?(O,C)+λ3?Lloc?(l,g)
    λ1\lambda_1λ1?, λ2\lambda_2λ2?,λ3\lambda_3λ3?为平衡系数。

置信度损失:
YOLO系列:YOLO V3模型讲解
Lconf(o,c)=∑i(oiln(ci^)+(1?oi)ln(1?ci^))NL_{conf}(o,c) = \frac{\sum_{i}(o_iln(\hat{c_i})+(1-o_i)ln(1-\hat{c_i}))}{N}Lconf?(o,c)=Ni?(oi?ln(ci?^?)+(1?oi?)ln(1?ci?^?))?
ci^=sigmoid(ci)\hat{c_i}=sigmoid(c_i)ci?^?=sigmoid(ci?)
其中oi∈[0,1]o_i\in[0,1]oi?[0,1], 表示预测目标边界框与真实边界框的IOUIOUIOUccc为预测值,ci^\hat{c_i}ci?^?ccc通过sigmoidsigmoidsigmoid函数得到的预测置信度,N为正负样本个数。

类别损失:
YOLO系列:YOLO V3模型讲解
Lcla(O,C)=?∑i∈pos∑j∈cla(Oijln(Cij^)+(1?Oij)ln(1?Cij^))NposL_{cla}(O,C) = - \frac{\sum\limits_{i \in pos}\sum\limits_{j \in cla}(O_{ij}ln(\hat{C_{ij}})+(1-O_{ij})ln(1-\hat{C_{ij}}))}{N_{pos}}Lcla?(O,C)=?Npos?ipos?jcla?(Oij?ln(Cij?^?)+(1?Oij?)ln(1?Cij?^?))?
Cij^=Sigmoid(Cij)\hat{C_{ij}} = Sigmoid(C_{ij})Cij?^?=Sigmoid(Cij?)
其中Oij∈O_{ij}\inOij? {0,1},表示预测预测目标边界框iii中是否存在第jjj类目标,CijC_{ij}Cij?为预测值,Cij^\hat{C_{ij}}Cij?^?CijC_{ij}Cij?通过SigmoidSigmoidSigmoid函数得到的目标概率,NposN_{pos}Npos?为正样本个数。

定位损失:
训练期间使用差值平方计算方式:
YOLO系列:YOLO V3模型讲解

YOLO系列:YOLO V3模型讲解