很是独特的一篇论文风格
先主要记录一下做出的改进
Bounding box prediction
和YOLO9000一样,使用尺寸聚类预测bounding box作为anchor box。这个网络为每个bounding box预测四个值 ( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h) (tx,ty,tw,th), ( c x , c y ) (c_x,c_y) (cx,cy)是cell距离图像左上角的偏移量, ( p w , p h ) (p_w,p_h) (pw,ph)是bounding box prior的宽和高。预测计算方式为:
b x = σ ( t x ) + c x b_x=\sigma(t_x)+c_x bx=σ(tx)+cx
b y = σ ( t y ) + c y b_y=\sigma(t_y)+c_y by=σ(ty)+cy
b w = p w e t w b_w=p_we^{t_w} bw=pwetw
b h = p h e t h b_h=p_he^{t_h} bh=pheth
在训练期间使用squared error loss的总和。
YOLOV3使用逻辑回归为每个bounding box预测一个objectness score。如果一个bounding box prior与gorund truth object之间的IOU为最大的话,那么其objectness score为1,如果不是最大值但是与ground truth object之间的IOU超过了一定阈值的话就忽略这个预测。本文使用的阈值是0.5。本文只为一个ground truth object分配一个bounding box prior,如果一个bounding box prior没有分配给ground truth object,那么它不计算坐标或者类别预测的损失。
Class prediction
每个box使用多标签分类预测每个bounding box可能包含的类别。
本文不再使用softmax而是使用独立的logistic classifier。
在训练期间对类别预测使用binary cross-entropy。
Prediction across scales
YOLOV3使用3种不同的尺寸预测box,系统使用一个相似的概念从这些尺寸中提取特征形成特征金字塔网络。从基础的特征提取器中添加了几个卷积层,最后一个卷积层预测一个3维张量表示bounding box,objectness和类别预测。对于COCO本文对每一个尺寸预测了3个box,所以张量为 N × N × [ 3 × ( 4 + 1 + 80 ) ] N\times N\times [3\times (4+1+80)] N×N×[3×(4+1+80)],其中是N*N个网格,4个bounding box offset,1个objectness prediction,80个类别预测。
从先前的2层中获取feature map并使用 2 × 2\times 2×上采样。再获取网络中较早时的feature map并通过串联与上采样特征合并起来。然后添加一些卷积层处理这个组合的feature map,最终得到一个相似的张量,现在尺寸是原来的2倍。
用同样的方式再处理一次得到最终的尺寸。
仍然使用k-means聚类来决定bounding box prior。使用9个簇和3种尺寸。
Feature extractor
新的网络是一个混合方法。
Darknet-53
还需学习
- 论文只是简略介绍了改进点,网络结构和实现还需继续
- unsample方法